Hallo,
in der Tabelle (siehe Anhang) soll bei den Datensätzen die mehr als die eine
Artikelnr. in der Spalte sp_08 enthalten (8255333;8260024;8260039),
der Datensatz dementsprechend kopiert werden - so, das immer nur eine Artikelnr. in sp_08 ist.
Anhand der Abb. sind das 3 Sätze (sp_01) 10005, 10010 und 10012 die bearbeitet werden müßten
Das Ergebinis sollte dann so aussehen wie im unteren Block der Abb.
Gibt es eine Lösung für die Situation und kann mir jemand dabei helfen?
Gruß Torsten
[Anhang gelöscht durch Administrator]
Hallo,
prinzipieller Luftcode:
Dim SP08 , i as Long
Dim rs as Dao.Recordset, db as Database
set db =Currentdb
set rs=db.Openrecordset("select * from Test where Instr(sp_08,';') >0", dbOpenSnapshot)
If not (rs.BOF or rs.EOF) Then
Do Until rs.EOF
SP08=Split(rs!sp_08,";")
For i= Lbound(SP08) to Ubound(SP08)
db.Execute "Insert into Test (sp_01,sp_02,sp_03,sp_04,sp_05,sp_06,sp_07,sp_08) Values ('" & _
rs!sp_01 & "','" & rs!sp_02 & "','" & rs!sp_03 & "','" & rs!sp_04 & "','" & rs!sp_05 & "','" & rs!sp_06 & "','" & rs!sp_07 & "','" & SP08(i) & "')"
Next
rs.Movenext
Loop
End if
rs.Close:set rs=Nothing
set db= Nothing
Hallo,
ich habe im Kopf zunächst Public Function SplitDS() eingefügt - warum? Habe ich von Deinem Code zuvor übernommen. Ich weiß also nicht ob das richtig ist.
Bei set db =Currendb in Zeile 3 habe ich das t eingefügt und am Ende habe ich End Function angehängt.
Somit konnte ich mit F5 den Code starten.
In die Tabelle wurden über 1 Millionen Datensätze eingefügt.
Alle bezogen auf sp_01 = 10005 - siehe Anhang
Könntest Du da bitte noch mal drauf schauen.
Willst Du ggf. eine CSV-Datei mit den Daten haben?
Gruß Torsten
[Anhang gelöscht durch Administrator]
Hallo,
füge zwischen den Codezeilen Next und Loop die rot markierte Anweisung ein
If not (rs.BOF or rs.EOF) Then
Do Until rs.EOF
SP08=Split(rs!sp_08,";")
For i= Lbound(SP08) to Ubound(SP08)
db.Execute "Insert into Test (sp_01,sp_02,sp_03,sp_04,sp_05,sp_06,sp_07,sp_08) Values ('" & _
rs!sp_01 & "','" & rs!sp_02 & "','" & rs!sp_03 & "','" & rs!sp_04 & "','" & rs!sp_05 & "','" & rs!sp_06 & "','" & rs!sp_07 & "','" & SP08(i) & "')"
Next
rs.MoveNext
Loop
End if
Dieser Schritt wird benötigt um von einem Datensatz zum nächsten zu springen.
Fehlt die Anweisung bleibt die Verarbeitung immer am gleichen Datensatz stehen und stellt dadurch eine s.g. Endlosschleife dar.
HTH
Hallo,
in der Tat :o 8)
habe auch im Original-Post korrigiert...
Hallo Ihr beiden,
vielen Dank für Eure Hilfe.
Hat funktioniert.
Gruß Torsten