Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
Delphi 12 Athens
|
AW: Problem mit Generator
5. Apr 2024, 08:38
Und es werden die Werte der Generatoren übernommen.
wie? Über ein Select Max() oder liest Du den Wert des Generators aus (Select gen_ID(X,0) from )?
Grüße
Hallo,
hier die Generator Kopieren Routine:
Delphi-Quellcode:
procedure TDBCopy.CopyGenerators;
var
Generators : TStringList;
Generator : string;
Value : Int64;
Msg : string;
begin
Generators := TStringList.Create;
try
FSourceSQLConnection.GetGeneratorNames(' ', ' ', ' ', Generators);
for Generator in Generators do
begin
Value := GetCurrentGeneratorValue(FGeneratorReadQuery, Generator);
SetGeneratorValue(FGeneratorWriteQuery, Generator, Value);
Msg := ' Generator Wert gesetzt für: ' + Generator + ' Wert: ' + Value.ToString;
FLog.Add(Msg);
log.Send(LevelViolet, cCategory, Msg);
end;
finally
Generators.Free;
end;
end;
function TDBCopy.GetCurrentGeneratorValue( Query: TFDQuery;
const GeneratorName: string): Int64;
begin
Query.Open(' SELECT GEN_ID(' + GeneratorName +' , 0) AS GENERATOR_VALUE '+
' FROM RDB$DATABASE');
try
if not Query.Eof then
Result := Query.FieldByName(' GENERATOR_VALUE').AsLargeInt
else
Result := -1;
finally
Query.Close;
end;
end;
procedure TDBCopy.SetGeneratorValue( Query : TFDQuery;
const GeneratorName : string;
Value : Int64);
begin
try
Query.ExecSQL(' ALTER SEQUENCE ' + GeneratorName +
' RESTART WITH ' + Value.ToString);
except
on e: Exception do
log.SendException(cCategory, ' Fehler beim Setzen des Generators: ' +
GeneratorName + ' Wert: ' + Value.ToString +
' Grund: ' + e. Message, e);
end;
end;
Grüße
TurboMagic
|
|
Zitat
|