Hallo mensen,
Ik heb een Excel sheet die ik gelinkt heb in Access 2000, maar door de opbouw van deze sheet kan ik het niet direct importeren. Namelijk de sheet heeft de opbouw in rijen in plaats van in kolommen zodat Access dat wil. Nu heb ik dit opgelost door VBA code achter een invoer formulier te zetten die de waardes in de Excel sheet af te gaan en daarna in het juiste veld in te vullen. Maar mijn probleem is nu dat ik maar een record te gelijk kan invoeren. Ik wil eigenlijk dat de gehele sheet wordt afgegaan naar record zodat alles wordt ingevoert in plaats van elke keer 1. Een lus dus, maar ik weet niet hoe ik dat moet aanpakken. Ik een voorbeeld van mijn code die ik nu heb:
De records staan in kolommen genaamd F met de opvolgende nummer, dus F2,F3,F4 enz (F1 heb ik niet nodig). Ik ben nieuw in VBA en op GoT en ik heb van mensen dat ze hier kunnen helpen. Weet iemand een oplossing voor mijn probleem?
Bedankt,
Martijn
Ik heb een Excel sheet die ik gelinkt heb in Access 2000, maar door de opbouw van deze sheet kan ik het niet direct importeren. Namelijk de sheet heeft de opbouw in rijen in plaats van in kolommen zodat Access dat wil. Nu heb ik dit opgelost door VBA code achter een invoer formulier te zetten die de waardes in de Excel sheet af te gaan en daarna in het juiste veld in te vullen. Maar mijn probleem is nu dat ik maar een record te gelijk kan invoeren. Ik wil eigenlijk dat de gehele sheet wordt afgegaan naar record zodat alles wordt ingevoert in plaats van elke keer 1. Een lus dus, maar ik weet niet hoe ik dat moet aanpakken. Ik een voorbeeld van mijn code die ik nu heb:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
| Private Sub Form_Timer()
'foutafhandeling
On Error GoTo Fout
'Declareer variabelen
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb()
Dim sql As String
Dim Waarde As Single 'zet de date/time velden van de Excel Sheet om in numerieke waarde.
'neem mbv SQL de importdata
sql = "SELECT Import_Data.F2 FROM Import_Data;"
Set rs = db.OpenRecordset(sql, dbOpenDynaset)
'deze functie gaat naar het record waar de waarde in staat, en plaatst deze in het form.
'ga naar 8e record (date)
rs.Move 7
Me.Date.Value = rs!F2.Value
'ga naar 9e record (time)
rs.MoveNext
Me.Time.Value = rs!F2.Value
'ga naar 14e record (Conveyor)
rs.Move 5
Waarde = rs!F2.Value
Me.Conveyor.Value = Waarde
enzovoort, totdat de alle waardes zijn afgegaan.
'controleer of deze meting nog niet voorkomt in de tabel met meetgegevens
Dim DateTime As String
Dim Toegevoegd As Byte
DateTime = Me.Date.Value & Me.Time.Value
'maak een recordset aan die met als criteria de date en time van het form
Dim Dbs As DAO.Database
Set Dbs = CurrentDb()
Dim Rst As DAO.Recordset
Dim SQL2 As String
SQL2 = "SELECT [Date] & [time] AS Uniek FROM Meetdata " & _
"WHERE (([Date] & [time])='" & DateTime & "');"
Set Rst = Dbs.OpenRecordset(SQL2, dbOpenDynaset)
'tel aantal records, als nul, dan bestaat nog niet, anders bestaat wel
If Rst.RecordCount > 0 Then
'dit record bestaat al, undo de record
DoCmd.RunCommand acCmdUndo
Toegevoegd = 0
Else
'dit record bestaat nog niet, sla op
DoCmd.RunCommand acCmdSaveRecord
Toegevoegd = 1
End If |
De records staan in kolommen genaamd F met de opvolgende nummer, dus F2,F3,F4 enz (F1 heb ik niet nodig). Ik ben nieuw in VBA en op GoT en ik heb van mensen dat ze hier kunnen helpen. Weet iemand een oplossing voor mijn probleem?
Bedankt,
Martijn
[ Voor 4% gewijzigd door Verwijderd op 24-06-2003 08:41 ]