Hallo...
Zum Verständnis:
Der Fehler kommt
NICHT sofort, sondern nach hunderten Aufrufen des
GLEICHEN SQL aus der Ressource.
(Bild +
SQL)
Das
SQL wird
JEDE Minute im Execute des Threads ausgeführt. Im Fehlerfalle (Fehlermeldung von einem anderen
SQL) ist das
SQL leer = beschädigt.
"[FireDAC][Phys][
MSSQL]-306. Anweisungstext [] darf nicht leer sein."
Damit kann er auch den Parameter nicht finden...
Delphi-Quellcode:
procedure TDatabaseState.OfflineTime(Workstation: string; InstanzID: Integer; TimeStamp: TDateTime);
var
Qry: TFDQuery;
begin
Qry := CreateQuery;
try
Qry.SQL.Text := GetSQLByName('COM_OFFLINE_TIME');
Qry.ParamByName('HAN').AsInteger := InstanzID; //<-
Qry.ParamByName('TIM').AsDateTime := TimeStamp;
Qry.ParamByName('WOR').AsString := Workstation;
Qry.ExecSQL;
finally
Qry.Free;
end;
end;
...
function TDatabaseBase.GetSQLByName(SQLName: string): string;
var
SQLStream: TResourceStream;
SQLStrings: TStringList;
SQLStringsDecrypt: TStringList;
begin
Result := '';
SQLStrings := TStringList.Create;
try
SQLStringsDecrypt := TStringList.Create;
try
SQLStream := TResourceStream.Create(HInstance, SQLName, PWideChar(conDatabaseResourceGroupString));
try
try
SQLStrings.LoadFromStream(SQLStream);
SQLStringsDecrypt.Text := TToolsCrypt.Decrypt(SQLStrings.Text, conKey); //<-
SQLStringsDecrypt.Delete(0); // Kommentar entfernen
Result := SQLStringsDecrypt.Text;
except
Result := '';
end;
finally
SQLStream.Free;
end;
finally
SQLStringsDecrypt.Free;
end;
finally
SQLStrings.Free;
end;
end;
Zitat:
i asked for specific test vector to guarantee the migration of your code, and you didn't answer with one specific value
siehe hier:
https://www.delphipraxis.net/1531964-post9.html
PS: Nach Umstellung wieder auf V5.2, ist bei den Usern wieder Ruhe...