AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Umstellung von Paradox auf FB 2.0

Umstellung von Paradox auf FB 2.0

Ein Thema von dor557 · begonnen am 22. Feb 2007 · letzter Beitrag vom 22. Feb 2007
Antwort Antwort
Benutzerbild von dor557
dor557

Registriert seit: 24. Okt 2004
Ort: Walldorf
197 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Umstellung von Paradox auf FB 2.0

  Alt 22. Feb 2007, 11:02
Datenbank: FB • Version: 2.0 • Zugriff über: IB-Komponenten
Hallo Zusammen.

Ich bin etwas am verzweifeln.

Da ich in erfahrung gebracht habe das die Paradox Datenbank Treiber unter windows Vista nicht mehr zur verfügung stehen bzw. die BDE da nicht mehr so ohne weiteres einsetzbar ist habe ich mich entschieden auf FB umzustellen.

So weit habe ich Die Software auch am laufen.

Habe mit IBDataPump alles convertieren können. Incl. ID die automatisch erhöht wird.

Jetzt stehe ich vor dem Problem das ich vorher bei der BDE mit der SQLTable immer die Abfragen gemacht habe und mit TTable einfach die Tabellen bearbeitet habe. Sprich 2 Komponenten in ein DatenFormular gesetzt und das eine war zum einsehen der Daten das andere zum bearbeiten.

Nun unter FB/IB hatte ich das gleiche vor.

Da aber nun ein Trigger (Before insert) Existiert und dieser wert nicht zurükgegeben wird bis man die Tabelle aktualisiert hat stehe ich vor dem Prob. das ich immer die Meldung bekomme "ID muss einen wert haben". Was ja logisch ist.

Wie schaffe ich es wenn der Trigger eine ID zugewiesen hat diesen auch SOFORT einsehen zu können ??

Habe es auch schon mit STORED Proc probiert aber da bekam ich lediglich immer den ID wert 0 !!

Wie schaffe ich es zum einen Das ich in die Direkte IBSQLTable daten Bearbeiten kann nachdem ich einen neuen Datensatz angelegt habe, und wie schaffe ich es das ich die ID sofort nach dem erstellen des Datensatzes auch in der Tabelle sehen kann.

Ich bin anfänger. Habe mich bisher immer mit kleinen tabellen und Datenbanken beschäftigt. Nun wird das ganze aber grösser auch die Datenmengen werden immer grösser.

Daher musste ich früher oder Später umsteigen..

Gruss Sascha
Sascha Nickel
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.859 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Umstellung von Paradox auf FB 2.0

  Alt 22. Feb 2007, 11:37
Verwende eine Sequence-Komponente oder die neue neue Möglichkeit des returning bei Insert -Statements in FB 2
Zitat:
Habe es auch schon mit STORED Proc probiert aber da bekam ich lediglich immer den ID wert 0 !!
Hast du das suspend vergessen?
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Umstellung von Paradox auf FB 2.0

  Alt 22. Feb 2007, 11:37
Hallo,

1. die Bde läuft immer noch unter Vista.
2. Hole dir die neue ID vor dem Speichern über eine Stored Procedure

Suche hier entweder nach Generator oder schaue mal hier
http://www.ibphoenix.com/main.nfs?a=...&page=ibp_skip

Suchwort "key generators"

Kleines Bsp.
Tabelle Personal

SQL-Code:
create generator gen_Personal;


CREATE PROCEDURE PERSONAL_NEWID
RETURNS (NEWID INTEGER)
AS
begin
  newid=gen_id(gen_PERSONAL,1);
end
Und hier der passende Delphi-Code (BDE).
die Methode geht davon aus, dass die SP und der
Generator einer bestimmten Syntax folgen:
Generator: gen_TableName
SP: TableName_NewId

Damit kann die Methode für alle Tabellen verwendet werden.

Delphi-Quellcode:

function Table_GetNewId__DB(const theDataBaseName, theTableName: String;
  var theNewId: Longint; var theErrorStr: String): Boolean;
var
  SP: TStoredProc;
begin
  Result:= False;

  theNewId:= -1;
  theErrorStr:= '';

  try
    SP:= TStoredProc.Create(NIL);
    try
      SP.DataBaseName:= theDataBaseName;
      SP.StoredProcName:= UpperCase(theTableName)+'_NEWID';
      SP.ExecProc;

      theNewId:= StrToInt(SP.Params[0].AsString);

      Result:= True;
    finally
      SP.Free;
    end;
  except
    on E: Exception do
    begin
      theErrorStr:= E.message;
    end;
  end;
end; { Table_GetNewId__DB }
Frag mich jetzt nicht, warum dort
StrToInt(SP.Params[0].AsString); statt nur AsString steht,
hatte damals was mit 16bit BDE zu tun (jaja, gab es mal )

Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von dor557
dor557

Registriert seit: 24. Okt 2004
Ort: Walldorf
197 Beiträge
 
Delphi 10.1 Berlin Starter
 
#4

Re: Umstellung von Paradox auf FB 2.0

  Alt 22. Feb 2007, 11:54
Wenn ich mit einer StoredProc arbeite brauche ich da eigentlich noch einen Trigger ???

Denn dann wenn ich das richtig verstanden habe würde der Wert sich ja immer um eines Erhöhen wenn die SP aufgerufen wird und wenn der Trigger aufgerufen wird....

Richtig ??
Sascha Nickel
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Umstellung von Paradox auf FB 2.0

  Alt 22. Feb 2007, 12:50
Hallo,

im Trigger schreibst du

if new.id is null then new.id=gen_id()


oder lässt ihn gleich weg.
Der Trigger hat dann nur noch eine Bedeutung,
wenn fremde Anwednungen in die DB schreiben wollen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von dor557
dor557

Registriert seit: 24. Okt 2004
Ort: Walldorf
197 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

Re: Umstellung von Paradox auf FB 2.0

  Alt 22. Feb 2007, 13:24
Ok. Da diese Datenbank nur von meiner Software benutzt wird denke ich macht es auch eine Stored Proc.

Wenn die software mehrmals benutzt wird dann reicht ja im Netzwerk als beispiel die Stored Proc.

Und der Trigger wird nicht gebraucht.

Soweit ich das weiss oder richtig verstanden habe.

Kann das also auf alle Tabellen anwenden.

denn beim Trigger kann ich die Bevore insert klausel ja nicht draussen lassen. Und wenn ich einen neuen datensatz anlege ist die ID ja noch nicht gespeichert sondern erst wenn ich Den Befehl POST benutzt habe.

Danke für die Hilfe....

Werde das dann entsprechend umsetzen.

Trigger wäre mir da allerdings lieber....

Naja kann man nichts machen...

Gruss Sascha
Sascha Nickel
  Mit Zitat antworten Zitat
Benutzerbild von dor557
dor557

Registriert seit: 24. Okt 2004
Ort: Walldorf
197 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

Re: Umstellung von Paradox auf FB 2.0

  Alt 22. Feb 2007, 15:34
Ich habe mich entschieden die BDE wegzulassen.

Nehme da lieber dann die komponenten von IB

habe das alles so gemacht jetzt. Es Funzt...

Danke nochmal.
Sascha Nickel
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:57 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