Einzelnen Beitrag anzeigen

jensw_2000
(Gast)

n/a Beiträge
 
#1

ADO - Probleme mit Parameters.Refresh

  Alt 23. Jun 2006, 13:53
Datenbank: MSSQL • Version: 2000/2005 • Zugriff über: ADO
Hi,

ich bekomme spontane "Index out of Bounds" Fehler, wenn ich mit <TADOStoredProc>.Parameters.Refresh die Parameterdaten einer SP hole und die Parameterwerte fülle bzw. auslese.

In meinen Applikationen erstelle ich die SP's generell zur Laufzeit.

Beispiel:
Delphi-Quellcode:
SP:=TAdoStoredProc.create(nil);
try
  SP.Connection:=<MeineAdoConnection>;
  SP.ProcedureName:='SET_Kundendaten';
  SP.Parameters.Refresh; // << läuft auch im Fehlerfall schnell durch, kein Timeout !!
  SP.Parameters[1].Value:=<KundenID>;
  SP.Parameters[2].Value:=<Vorname>;
  SP.Parameters[3].Value:=<Nachmane>;
  SP.Parameters[4].Value:=<irgendwas>;
  SP.ExecProc;
  Rueckgabe:=SP.Parameters[5].Value;
finally
  FreeAndNIl(SP);
end;
ADO scheint spontan Probleme beim Holen der Parameter zu haben, ohne dabei eine Exception auszulösen. Beim Füllen der Parameterwerte "SP.Parameters[x].Value:=" bekomme ich während der Programmnutzung immer mal wieder ein "Index Out of Bounds" um die Ohren.

Das Problem tritt besonders auf, wennn viele Prozesse bzw. Benutzer auf den SQL-Server zugreifen (Serverauslastung im grünen Bereich).

Zur Zeit umschiffe ich das Problem, indem ich nach Parameters.Refresh die Parameteranzahl der SP (SP.Parameters.Count) mit der Anzahl der erwarteten Parameter vergleiche. Falls Differenzen auftreten, dann neu auslesen ...

Hat jemand vor Euch ähnliche Probleme festgestellt oder sind bei meinem D7 Enterprise die ADO Komponenten beschädigt?
Am Betriebssystem (MDAC, ADO) liegt es nicht, weil der Fehler (leider) nicht nur auf meinem Rechner auftritt, sondern auch auf Kundenrechnern mit unterschiedlichsten Konfigurationen.

Was kann ich machen um das Problem zu beheben ? Die Variante mit der Parameterkontrolle nach dem Refresh ist zwar als Notlösung OK, aber auf Dauer nicht wirklich praktikabel.



Schöne Grüße,
Jens
  Mit Zitat antworten Zitat