![]() |
Datenbank: MSSQL • Version: 2005 • Zugriff über: DBX
seltsamer MSSQL 2005 Fehler
Hallo,
ich bekomme mitten in meiner while Schleife plötzlich diesen Fehler: Zitat:
MfG Kevin |
AW: seltsamer MSSQL 2005 Fehler
5 Abfragen in einer while Schleife? Womöglich mit Abermillionen Datensätzen je Ergebnismenge? Da wäre ich aber auch busy^^. Wie sieht die Schleife denn aus?
|
AW: seltsamer MSSQL 2005 Fehler
Hier ist die Schleife mit den function's die in ihr benutzt werden.
Delphi-Quellcode:
while not VPers.Eof do
begin with VPers do begin log('Pers: %-30s %-30s', [FieldByName('Vorname').AsString, FieldByName('Nachname').AsString]); VAbt.Close; VAbt.CommandText := 'SELECT * FROM (Per p INNER JOIN ZOrgPer zop ON p.pkPerID = zop.fkPerID) INNER JOIN Abt a ON zop.fkAbtID = a.pkAbtID WHERE p.pkPerID = '+QuotedStr(VPers.FieldByName('pkPerID').AsString); VAbt.Open; VMain.Insert; inc(PersNr); VMain.FieldByName('PE_ID').Value := genid('PE_STAMM'); VMain.FieldByName('PE_NR').Value := Format('%.4d', [PersNr]); VMain.FieldByName('PE_AB_INDEX').Value := scalarQueryInt(Form3.DBXFirebird, 'SELECT AB_ID FROM AB_STAMM WHERE AB_ID = '+IntToStr(getAbtID(VAbt.FieldByName('AbtBzng').AsString))); VMain.FieldByName('PE_AB_NR').Value := scalarQueryString(Form3.DBXFirebird, 'SELECT AB_NR FROM AB_STAMM WHERE AB_ID = '+IntToStr(getAbtID(VAbt.FieldByName('AbtBzng').AsString))); VMain.FieldByName('PE_AB_NAME').Value := scalarQueryString(Form3.DBXFirebird, 'SELECT AB_NAME_LANG FROM AB_STAMM WHERE AB_ID = '+IntToStr(getAbtID(VAbt.FieldByName('AbtBzng').AsString))); if not StringIsEmpty(VPers.FieldByName('Nachname').AsString) then VMain.FieldByName('PE_NACHNAME').Value := GetString(VPers.FieldByName('Nachname').Value, 30); if not StringIsEmpty(VPers.FieldByName('Vorname').AsString) then VMain.FieldByName('PE_VORNAME').Value := GetString(VPers.FieldByName('Vorname').Value, 30); VMain.FieldByName('PE_EI_TAUGLICH').Value := 1; VMain.FieldByName('PE_AS_TAUGLICH').Value := 1; VMain.FieldByName('PE_UB_TAUGLICH').Value := 1; VMain.FieldByName('PE_EH_TAUGLICH').Value := 1; VMain.FieldByName('PE_MASKENBRILLE_MML').Value := 0; VMain.FieldByName('PE_FAHRBRILLE_MML').Value := 0; VMain.Post; VMain.ApplyUpdates(0); Next; end; end; function scalarQueryString(dbc: TSQLConnection; sql: String;): String; var VQuery: TSQLDataSet; begin VQuery := TSQLDataSet.Create(nil); VQuery.SQLConnection := dbc; VQUery.CommandText := sql; VQuery.Open; VQuery.First; result := VQuery.Fields[0].AsString FreeAndNil(VQuery); end; function scalarQueryString(dbc: TSQLConnection; sql: String;): Integer; var VQuery: TSQLDataSet; begin VQuery := TSQLDataSet.Create(nil); VQuery.SQLConnection := dbc; VQUery.CommandText := sql; VQuery.Open; VQuery.First; result := VQuery.Fields[0].AsInteger FreeAndNil(VQuery); end; function genid(tablename: String): Integer; begin result := scalarQueryInt(Form3.DBXFirebird, Format('SELECT max(%s_ID) FROM %s', [Copy(tablename, 1, 2), tablename]), true, 0); Inc(result); end; Der Fehler kommt dann nach 14 durchläufen in der Zeile
Delphi-Quellcode:
.
VAbt.Open;
|
AW: seltsamer MSSQL 2005 Fehler
Wie so oft die Frage:
Welche Curserlocation wird verwendet? Für MS SQL-Server sollte man clUseClient verwenden. |
AW: seltsamer MSSQL 2005 Fehler
Und in welche Tabelle schreibt VMain?
|
AW: seltsamer MSSQL 2005 Fehler
VMain schreibt in PE_STAMM. Und ich hab keine Curserlocation festgelegt, also wird warscheinlich der Standartwert verwendet. Im Objektinspektor finde ich auch bei keinen der Verwendeten DBX-Komponenten eine Eigenschaft um die Curserlocation zu setzen.
|
AW: seltsamer MSSQL 2005 Fehler
Welches Select (welche Tabellen) stecken hinter VPERS?
|
AW: seltsamer MSSQL 2005 Fehler
Die Abfrage 'SELECT * FROM Per' steckt hinter VPers.
|
AW: seltsamer MSSQL 2005 Fehler
Hm, ich hab vermutet, dass das Update auf die gleiche Tabelle geht wie das Select der Schleife.
Was steckt hinter dem ScalarQuery? Läuft das alles synchron? Sind die Datenquellen der sichtbaren Queries Tabellen oder Views? Ach ja, übersehen: vApt geht auch auf "Per" (was Du updatest) Das ist generell nicht unbedingt empfehlenswert vom Vorgehen. Keine Ahnung wie gut MSSQL2005 das verpackt, offenbar nicht so gut. |
AW: seltsamer MSSQL 2005 Fehler
Es geht ja alles. Nur beim 14 mal spuckt mein Programm mir hier den o.g. Fehler aus.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz