AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi seltsamer MSSQL 2005 Fehler
Thema durchsuchen
Ansicht
Themen-Optionen

seltsamer MSSQL 2005 Fehler

Ein Thema von Kevin11 · begonnen am 23. Nov 2011 · letzter Beitrag vom 23. Nov 2011
Antwort Antwort
Seite 1 von 2  1 2      
Kevin11

Registriert seit: 11. Aug 2011
113 Beiträge
 
Delphi XE Professional
 
#1

seltsamer MSSQL 2005 Fehler

  Alt 23. Nov 2011, 10:35
Datenbank: MSSQL • Version: 2005 • Zugriff über: DBX
Hallo,

ich bekomme mitten in meiner while Schleife plötzlich diesen Fehler:
Zitat:
connection is busy with results for another command
Die ersten 13. Datensätze kann ich Problemlos auslesen, nur bei dem 14. kommt dann dieser Fehler. Und ich habe nicht mehr als 5 Abfragen in dieser Schleife. Also kann die Connection ja nicht zu beschäftigt sein.

MfG
Kevin
"Wer mit künstlicher Intelligenz arbeitet, muß auch mit natürlicher Dummheit rechnen." (Klaus Kornwachs)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.616 Beiträge
 
Delphi 12 Athens
 
#2

AW: seltsamer MSSQL 2005 Fehler

  Alt 23. Nov 2011, 10:47
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?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Kevin11

Registriert seit: 11. Aug 2011
113 Beiträge
 
Delphi XE Professional
 
#3

AW: seltsamer MSSQL 2005 Fehler

  Alt 23. Nov 2011, 11:07
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 VAbt.Open; .
"Wer mit künstlicher Intelligenz arbeitet, muß auch mit natürlicher Dummheit rechnen." (Klaus Kornwachs)

Geändert von Kevin11 (23. Nov 2011 um 11:08 Uhr) Grund: Verbesserung
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.188 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: seltsamer MSSQL 2005 Fehler

  Alt 23. Nov 2011, 11:14
Wie so oft die Frage:

Welche Curserlocation wird verwendet? Für MS SQL-Server sollte man clUseClient verwenden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: seltsamer MSSQL 2005 Fehler

  Alt 23. Nov 2011, 11:14
Und in welche Tabelle schreibt VMain?
  Mit Zitat antworten Zitat
Kevin11

Registriert seit: 11. Aug 2011
113 Beiträge
 
Delphi XE Professional
 
#6

AW: seltsamer MSSQL 2005 Fehler

  Alt 23. Nov 2011, 11:20
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.
"Wer mit künstlicher Intelligenz arbeitet, muß auch mit natürlicher Dummheit rechnen." (Klaus Kornwachs)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: seltsamer MSSQL 2005 Fehler

  Alt 23. Nov 2011, 11:28
Welches Select (welche Tabellen) stecken hinter VPERS?
Gruß, Jo
  Mit Zitat antworten Zitat
Kevin11

Registriert seit: 11. Aug 2011
113 Beiträge
 
Delphi XE Professional
 
#8

AW: seltsamer MSSQL 2005 Fehler

  Alt 23. Nov 2011, 11:32
Die Abfrage 'SELECT * FROM Per' steckt hinter VPers.
"Wer mit künstlicher Intelligenz arbeitet, muß auch mit natürlicher Dummheit rechnen." (Klaus Kornwachs)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#9

AW: seltsamer MSSQL 2005 Fehler

  Alt 23. Nov 2011, 11:43
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.
Gruß, Jo

Geändert von jobo (23. Nov 2011 um 11:49 Uhr) Grund: blind
  Mit Zitat antworten Zitat
Kevin11

Registriert seit: 11. Aug 2011
113 Beiträge
 
Delphi XE Professional
 
#10

AW: seltsamer MSSQL 2005 Fehler

  Alt 23. Nov 2011, 11:49
Es geht ja alles. Nur beim 14 mal spuckt mein Programm mir hier den o.g. Fehler aus.
"Wer mit künstlicher Intelligenz arbeitet, muß auch mit natürlicher Dummheit rechnen." (Klaus Kornwachs)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz