records x aantal copieren in tabel

Status
Niet open voor verdere reacties.

mdegeest

Gebruiker
Lid geworden
10 aug 2011
Berichten
76
Ik voeg een record in in een tabel. In mijn veld "numberofitems" staat bv.5.
Dan moet ik dit record 5x copieren. Dit lukt goed maar in mijn tabel staat 1 alfanummeriek veld. Wanneer hij dit veld copieert, zet hij in de volgende records steeds een "0". Blijkbaar is er iets fout in mijn programma maar ik kan niet vinden wat.
Het heeft waarschijnlijk iets te maken met het alfanummerieke want de nummerieke velden worden allemaal goed gecopieerd. "kadernaam" is mijn alfanummerieke veld.
Kan mij hier iemand mee helpen aub.

Sub CreateSubItems()
Const MYTABLE = "kaders"
Dim db As Database
Dim rs As Recordset
Dim i As Long, subnr As Long, rackid As Long, nr As Long, ordernummer As Long, kadernaam As Long
Dim SQLCMD As String
DoCmd.SetWarnings False
Set db = CurrentDb
Set rs = db.OpenRecordset(MYTABLE)
Do While Not rs.EOF
rackid = rs!rackid
ordernummer = rs!ordernummer
nr = rs!nr
subnr = rackid * 10
For i = 2 To rs![number of items]
subnr = subnr + 1
nr = nr + 1
rackid = rackid + 1
ordernummer = ordernummer * 1
If IsNull(DLookup("Subnumber", MYTABLE, "[Subnumber] = " & subnr)) Then
SQLCMD = "INSERT INTO " & MYTABLE & "(RackID,[Number of items],Subnumber,nr, ordernummer, kadernaam) VALUES (" & rackid & ",0," & subnr & "," & nr & "," & ordernummer & "," & kadernaam & ")"
DoCmd.RunSQL SQLCMD
End If
Next i
rs.MoveNext
Loop
Set rs = Nothing
Set db = Nothing
DoCmd.SetWarnings True
MsgBox "OK mod 2."
End Sub
 
Kleine modificatie: een tekstveld moet je tussen quootjes zetten, anders pakt de query 'm niet. Dus zo:

Code:
Sub CreateSubItems()
Const MYTABLE = "kaders"
Dim db As Database
Dim rs As Recordset
Dim i As Long, subnr As Long, rackid As Long, nr As Long, ordernummer As Long, kadernaam As Long
Dim SQLCMD As String

DoCmd.SetWarnings False
Set db = CurrentDb
Set rs = db.OpenRecordset(MYTABLE)
Do While Not rs.EOF
    rackid = rs!rackid
    ordernummer = rs!ordernummer
    nr = rs!nr
    subnr = rackid * 10
    For i = 2 To rs![number of items]
        subnr = subnr + 1
        nr = nr + 1
        rackid = rackid + 1
        ordernummer = ordernummer * 1
        If IsNull(DLookup("Subnumber", MYTABLE, "[Subnumber] = " & subnr)) Then
            SQLCMD = "INSERT INTO " & MYTABLE & "(RackID,[Number of items],Subnumber,nr, ordernummer, kadernaam) " _
                & "VALUES (" & rackid & ",0," & subnr & "," & nr & "," & ordernummer & [B][COLOR="blue"]",'"[/COLOR][/B] & kadernaam & [B][COLOR="blue"]"')"[/COLOR][/B]
            DoCmd.RunSQL SQLCMD
        End If
    Next i
    rs.MoveNext
Loop

Set rs = Nothing
Set db = Nothing
DoCmd.SetWarnings True
MsgBox "OK mod 2."
End Sub

Extra tip: maak vba code de volgende keer op met de CODE tag (knop #) dan ziet de code er netter uit!
 
Heb de aanpassing gedaan maar hij zet nog steeds "0".

subnumber number of items rackid kadernaam nr ordernummer verlijmt delete
1 5 237 A1 1 62 25/08/2011 15:40:23 Onwaar
2371 0 238 0 2 62 Onwaar
2372 0 239 0 3 62 Onwaar
2373 0 240 0 4 62 Onwaar
2374 0 241 0 5 62 Onwaar
 
Logisch; ik heb alleen naar de Insert code gekeken, niet naar wat je daarvoor doet. En in het begin declareer je de variabele Kadernaam als Long, niet als String.
 
Ik dus "kader As String" gezet en nu zet hij in het veld van de kaders blancos, dus geen nullen meer, maar ook geen string ?

subnumber number of items rackid kadernaam nr ordernummer verlijmt delete
1 5 237 A1 1 62 25/08/2011 15:40:23 Onwaar
2371 0 238 2 62 Onwaar
2372 0 239 3 62 Onwaar
2373 0 240 4 62 Onwaar
2374 0 241 5 62 Onwaar
 
En waarom vermenigvuldig je het ordernummer met 1? ordernummer = ordernummer * 1
 
Bij mij doet-ie het overigens prima... En dat houdt ook in dat die overbodige regel er uit kan ;)
 
Inderdaad zonder deze regel werkt het ook.
Maar, "kadernaam" wordt nog steeds niet gecopieerd ?
Volgens mij heeft dit met de string te maken.
Maar ik vind het niet.:(
 
dit werkt bij mij...

Code:
Const MyTable = "Kaders"
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim i As Long, subnr As Long, rackid As Long, nr As Long, ordernummer As Long
Dim kadernaam As String, sqlCMD As String

DoCmd.SetWarnings False
Set db = CurrentDb
Set rs = db.OpenRecordset(MyTable)
Do While Not rs.EOF
    rackid = rs!rackid
    ordernummer = rs!ordernummer
    nr = rs!nr
    subnr = rackid * 10
    kadernaam = rs!kadernaam
    For i = 2 To rs![number of items]
        subnr = subnr + 1
        nr = nr + 1
        rackid = rackid + 1
        If IsNull(DLookup("Subnumber", MyTable, "[Subnumber] = " & subnr)) Then
            sqlCMD = "INSERT INTO " & MyTable & "(RackID,[Number of items],Subnumber,nr, ordernummer, kadernaam) " _
                & "VALUES (" & rackid & ",0," & subnr & "," & nr & "," & ordernummer & ",'" & kadernaam & "')"
            DoCmd.RunSQL sqlCMD
        End If
    Next i
    rs.MoveNext
Loop

Call BackupPlanco

Set rs = Nothing
Set db = Nothing
DoCmd.SetWarnings True
MsgBox "OK mod 2."
 
YES !!!
Nu werkt het.
Hartelijk dank hoor, was hier wel al een hele tijd naar de oplossing van het probleem aan het zoeken.
Nu kan ik verder.
:d
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan