Leuk probleem!
Ik hoop dat ik me hier ook even mee mag bemoeien.
@Octafish:
Het is goed om te zien dat je een mens bent!
Ik was al bang dat je een autoreply functie was van HelpMij...
Dit bedoel ik overigens als een compliment.
Er staat in de code:
strSQL=""
Dit gaat nooit werken. Dit had strSQL_Temp = "" moeten zijn.
Tevens wil Aat ook de tabel aanvullen met gegevens die niet in de brontabel staan (A 22, B 20 en B 21).
@Aat: Toch?
Kortom kopiëren van de tabel is waarschijnlijk niet voldoende.
Neemt niet weg dat het een mooi stukje code is!
@Aatb:
Ik heb even een voorbeeldje gemaakt die de volgende 2 dingen doet:
1) tabel kopiëren (van Octafish).
2) tabel aanvullen (o.a.: A 22, B 20 en B 21).
Met bijbehorende knoppen op Formulier1:
- Tabel kopiëren (code van Octafish)
- Tabel aanvullen
Let wel:
1) De 1e keer dat je de code runt is er in jouw db nog geen TblTemp1.
Dus dbs.Execute "DROP TABLE TblTemp1" werkt dan niet!
2) De velden in de brontabel moeten gevuld zijn!
Ivm rst.Fields(0) t/m rst.Fields(2).
De code is als volgt:
Code:
Dim dbs As Database
Dim rst As Recordset
Dim strTabel As String
Dim strSql As String
Dim strSQL_temp As String
Dim sWaarde As String
Dim iMin As Integer
Dim iMax As Integer
Dim iAantal As Integer
Dim i As Integer
Set dbs = CurrentDb()
'Naam van de brontabel aanpassen
strTabel = "Tblgegevens"
'Eerst de tijdelijke tabel verwijderen en maken.
dbs.Execute "DROP TABLE TblTemp1" 'Uitzetten bij db, zonder TblTemp1
dbs.Execute "CREATE TABLE TblTemp1(Kolom1 Char(1), Kolom2 Integer);"
'Gegevens ophalen uit tabel en tabel tblTemp1 invullen
Set rst = CurrentDb.OpenRecordset("Select * from " & strTabel)
Do Until rst.EOF
'Kolommen 1, 2 en 3 ophalen
sWaarde = rst.Fields(0)
iMin = rst.Fields(1)
iMax = rst.Fields(2)
iAantal = iMax - iMin + 1
strSql = "INSERT INTO tblTemp1 (Kolom1, Kolom2) "
'Lus tot de iAantal is bereikt
For i = 1 To iAantal
strSQL_temp = ""
strSQL_temp = strSql & "VALUES('" & sWaarde & "', '" & iMin & "') "
CurrentDb.Execute strSQL_temp
iMin = iMin + 1
Next i
rst.MoveNext
Loop
rst.Close
dbs.Close
Set rst = Nothing
Set dbs = Nothing
'Tabel openen
DoCmd.OpenTable "tblTemp1"
'refresh Databasewindow is nodig als er nog geen TblTemp1 is
'Application.RefreshDatabaseWindow
Waarschijnlijk heb ik ook ook nog wel wat foutjes gemaakt, maar ik ben ook maar een mens! Tevens ben ik ook niet zo ervaren als Octafish of anderen op dit forum...
Ik hoop in elk geval dat je een stap dichterbij de oplossing bent.