ERLEDIGT
JA
JA
ANTWORTEN
9
9
ZUGRIFFE
1825
1825
EMPFEHLEN
-
16.02.12 15:09 #1
Mitglied Bronze
- Registriert seit
- Oct 2010
- Beiträge
- 46
Hallo liebe Community,
ich habe mal eine Frage. Ich habe eine Benutzeroberfläche in Access.
Dort werden per Abfrage Datensätze aus einer Datenbank selektiert und in Textfelder reinkopiert. Nun sollte ich an den Textfeldern Änderungen machen und dann die Datensätze updaten. Jetzt mein Problem:
Hatte es mit einer Schleife gemacht, dort waren 1 Update Abfrage und 2 Insert Abfragen drinne. (Ist für die Bearbeitung notwendig)
Das ganze dauerte aber für 5 oder 20 Datensätze ca. 26 Sekunden.
Und das ist viel zu lang. So ich habe im Internet gelesen, dass man es per addnew und update machen kann/soll. Ich habe es angewendet, aber es dauert teilweise noch länger.
Ich weiß jetzt nicht direkt, wo mein Fehler ist. Ich poste mal meine Daten vielleicht wisst ihr das ja.
Ich benutze Access 2007 auf Windows 7 Home Premium, 4 Gb Ram und einer schnellen Internet Leitung.
Nun zum Code:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Set Conn = CurrentProject.Connection Set DBS = New ADODB.Recordset DBS.Open "Tabelle", Conn, adOpenKeyset, adLockOptimistic DBS.AddNew DBS.Fields("Feld1") = Inhalt DBS.Fields("Feld2") = Inhalt DBS.Fields("Feld3") = Inhalt DBS.Fields("Feld4") = Inhalt DBS.Update DBS.Close
Code :1 2 3 4 5 6 7 8
Do While Not rs.EOF 'rec.Open "UPDATE Tabelle SET XXX = XXXX , cnn, adOpenStatic, adLockBatchOptimistic 'rec.Open "INSERT Tabelle (XXXXXX) cnn, adOpenStatic, adLockBatchOptimistic 'rec.Open "insert into Tabelle (XXXXXXX), cnn, adOpenStatic, adLockBatchOptimistic ' Loop
So sieht es ungefähr aus, an den Update Befehlen ansich könnte es eigentlich nicht liegen, da ich an derer Stelle die selben Befehle benutze, nur ohne Schleife.
Eigentlich habe ich die Frage fast selbst beantwortet würden jetzt einige sagen, aber ich weiß einfach nicht was an der schleife sein könnte.
Danke fürs lesen und eure Tipps
-
16.02.12 15:15 #2
item: im zweiten code. Was ist rs? Greift das auf dieselbe Tabelle zu die du Updaten willst?
item: Ebenfalls im Zweiten. Was ist Rec?
item: Immer noch zum 2. Das sind ganz komische Statements die du da auskommentiert hast. Keiens davon scheint mir sauber zu sein.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
16.02.12 15:25 #3
Mitglied Bronze
- Registriert seit
- Oct 2010
- Beiträge
- 46
rec ist definiert als recordset:
Dim rec As ADODB.Recordset
Set rec = New ADODB.Recordset
und rs, da habe ich mich verguckt, es war eine andere Sache. eigentlich steht da eine For schleife die bis 5 geht.
-
16.02.12 15:54 #4
Du mischst da aber etwas. Ein Recordset ist ekin UPDATE oder INSERT
Was willst du damit?Code vb:1 2 3 4 5
Do While Not rs.EOF 'rec.Open "UPDATE Tabelle SET XXX = XXXX , cnn, adOpenStatic, adLockBatchOptimistic 'rec.Open "INSERT Tabelle (XXXXXX) cnn, adOpenStatic, adLockBatchOptimistic 'rec.Open "insert into Tabelle (XXXXXXX), cnn, adOpenStatic, adLockBatchOptimistic Loop
Ein Update würde so aussehen
Code vb:1 2 3 4 5 6 7 8 9 10
Dim sql As String sql = _ "UPDATE myTable " & _ "SET " & _ " [Feld1] = '" & myForm!var1 & "', " & _ " [FELD2] = '" & myForm!var2 & "' " & _ "WHERE ID = " & myForm!id Call currentdb.Execute(sql)
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
16.02.12 16:02 #5
Mitglied Bronze
- Registriert seit
- Oct 2010
- Beiträge
- 46
Hmm... jetzt wo du es sagst, leuchtet ein. Ich probiere es mal so umzuschreiben und sage dann wie es ausschaut.
-
16.02.12 18:29 #6
Mitglied Bronze
- Registriert seit
- Oct 2010
- Beiträge
- 46
Wow ich habe es so umgesetzt, wie du es gesagt hast und nun habe ich die abfrage die vorher für 5 Datensätze 26 Sekunden gedauert hat nur 5 Sekunden gedauert und für 20 Datensätze nur 15 Sekunden. Vielen vielen Dank!
Habe alles jetzt so wie du oben geschrieben hast umgesetzt.
Code :1 2 3 4 5 6 7 8 9 10
Dim sql As String sql = _ "UPDATE myTable " & _ "SET " & _ " [Feld1] = '" & myForm!var1 & "', " & _ " [FELD2] = '" & myForm!var2 & "' " & _ "WHERE ID = " & myForm!id Call currentdb.Execute(sql)
-
28.03.12 10:10 #7
Mitglied Bronze
- Registriert seit
- Oct 2010
- Beiträge
- 46
Hallo nochmal,
ich bins noch mal.
Das Thema will einfach nicht locker lassen. Ich habe eine Schleife die bis zu 5 mal durchlaufen wird, das dauert ca. 5 Sekunden, was irgendwie ziemlich lang ist. Ich habe hier 3 Statements die jeweil beim durchlaufen ausgeführt werden. Die Schleife ist eine For Schleife.
Code vb:1 2 3 4 5 6 7 8
sql = "UPDATE Tabelle SET Spalte = 20, Spalte = 125,Spalte=now() WHERE Spalte = 38857" Call CurrentDb.Execute(sql) sql = "INSERT INTO Tabelle (Spalte,Spalte,Spalte,Spalte)SELECT 38857,20,10026,904757 FROM Bestellung Where Spalte = 38857" Call CurrentDb.Execute(sql) sql = "insert into Tabelle (Spalte,Spalte,Spalte,Spalte)SELECT 38857,10026,125,904757 FROM Bestellung Where Spalte = 38857" Call CurrentDb.Execute(sql)
Je nachdem wie oft er die schleife durchläuft dauert es bei 20 Durchgängen bis zu 25 Sekunden.
an was könnte das den liegen ?
-
28.03.12 10:19 #8Warum ein SELECT wenn du nur Werte ahst?Code sql:
1
INSERT INTO Tabelle (Spalte,Spalte,Spalte,Spalte)SELECT 38857,20,10026,904757 FROM Bestellung WHERE Spalte = 38857
Code sql:1 2 3
INSERT INTO Tabelle (Spalte,Spalte,Spalte,Spalte) VALUES(38857,20,10026,904757)
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
28.03.12 10:21 #9
Mitglied Bronze
- Registriert seit
- Oct 2010
- Beiträge
- 46
Entschuldigung in diesem Beispiel wird das Falsch dargestellt.
Eigentlich werden die per "Select" herausgefunden.
hier das Original:
Code vb:1 2
Sql = "insert INTO log_inter (Artikel_ID,Operator,Inter_Status,Artikelnummer)SELECT Artikel_ID,'" & Forms!Anmeldung!Tf_PIN & "',125,Artikelnummer FROM Bestellung Where Katalog='H&M' and Inter_Status=120 " Call CurrentDb.Execute(Sql)
-
28.03.12 10:55 #10
Wie gross sind die Tabellen?
Hast du in der Tabelle Bestellung ein Index auf Katalog&Inter_Status?---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
Ähnliche Themen
-
db Update oder insert
Von hups1803 im Forum PHPAntworten: 10Letzter Beitrag: 28.09.11, 12:01 -
insert oder update (für MySQL)
Von Steusi im Forum PHPAntworten: 17Letzter Beitrag: 08.04.09, 10:02 -
Insert und/oder Update
Von RedDevilGT im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 06.04.06, 08:45 -
UPDATE Statment übernimmt meine Variabel nicht
Von Sarah im Forum PHPAntworten: 3Letzter Beitrag: 20.12.05, 11:56 -
Globales Flag für INSERT oder UPDATE
Von C22 im Forum PHPAntworten: 2Letzter Beitrag: 26.10.05, 16:24




Zitieren

Login