terve, Onko mahollista päivittää Access-tietokantaa automaattisesti recordset objektin avulla.
Eli avaan yhteyden com-porttiin MSCommilla, lisään tietoa mitä portille tulee Recordsetillä taulussa olevaan tietueesee ja lopuksi suljen portin.
Siis tämän tyyylin makro Accessii vba:lla onkos mahollista?
Miten nuo MScomm ja recodrset tulisi yhdistää että homma toimii?
Eli avaan yhteyden com-porttiin MSCommilla, lisään tietoa mitä portille tulee Recordsetillä taulussa olevaan tietueesee ja lopuksi suljen portin.
Siis tämän tyyylin makro Accessii vba:lla onkos mahollista?
Miten nuo MScomm ja recodrset tulisi yhdistää että homma toimii?
Vastaukset 2
Vanhimmat
koodia suoraan ilmasta:
...koodia...
MsComm.PortOpen = True
...koodia...
Private Sub MsComm_OnComm()
dim rst as recordset
set rst = currentdb.openrecordset("SELECT * FROM Taulu WHERE Jokukenttä = 'arvo'")
rst.fields("Kenttänimi") = MsComm.Input
rst.close
set rst = Nothing
end sub
...koodia...
MsComm.PortOpen = False
...koodia...
Referenssit pitää olla DAO 3.6:een muistaakseni ainakin. MsComm pitää olla rekisteröity oikein. Asynkronisuus tuottaa varmaan päänvaivaa, tiedoston loppumerkki auttanee tässä.
tommoseen päädyin...miltä vaikuttaa gurujen silmin?
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Handshaking = 0
MSComm1.Rthreshold = 0
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 0
MSComm1.PortOpen = True
End Sub
Private Sub MSComm1_OnComm()
AddScanRecords_Open
End Sub
Sub AddScanRecords()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim StartTime As Date
StartTime = Now()
Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open "ScanResults", cn, adOpenKeyset, adLockOptimistic ' ScanResults is the name of the table
Do While Now() < StartTime TimeSerial(0, 0, 1) ' test run for one second - can Add hours Or minutes
rs.AddNew
' this is where you would wait for and insert the bar code.
rs![BarCode] = MSComm1.Input ' BarCode is the field name you would replace "testthissub" with the bar code input
rs![ScanDate] = Now()
rs.Update
Loop
MSComm1.PortOpen = False ' Close the com port
End Sub