AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit Generator
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Generator

Ein Thema von TurboMagic · begonnen am 4. Apr 2024 · letzter Beitrag vom 5. Apr 2024
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.050 Beiträge
 
Delphi 12 Athens
 
#1

AW: Problem mit Generator

  Alt 5. Apr 2024, 07: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
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.050 Beiträge
 
Delphi 12 Athens
 
#2

AW: Problem mit Generator

  Alt 5. Apr 2024, 07:52
Noch ein sachdienlicher Hinweis:
im Rahmen dieses Updateablaufes wird von Firebird 2.5.x auf 5.0 aktualisiert.
Ich hoffe mal nicht, dass das hier eine Rolle spielt, denn wie gesagt:
nach einmaligem Fehler funktioniert die weitere Verbuchung in der neuen Version problemfrei.

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:23 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