Thema: Delphi Interbase/Firebird

Einzelnen Beitrag anzeigen

Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#9
  Alt 25. Aug 2002, 21:45
Hi Hansa,

Zitat von Hansa:
Anscheinend muß man select * from 'table' von Hand eingeben, damit er die Felder findet.Stimmt das?
Ja, aber das muss man bei IBX ja auch, nur da macht man es direkt im SelectSQL, hier wird das Fenster aufgerufen, in dem auch die anderen SQL's festgelegt werden.

Zitat von Hansa:
1. @Lemmy: (Generatoren) In Deinem Interbase Tutorial schreibst Du, man könne sie in dem DataSet bei Eigenschaft GeneratorField eintragen, die fehlt aber bei mir ! Auch die SQL's mußten von Hand ergänzt werden (hinter WHERE kam nichts mehr) Ist das normal?
Sprechen wir jetzt von IBX oder FIBPlus?? Bei IBX muss die Einstellung inder Eigenschaft "GeneratorField" vorgenommen werden, bei FIBPlus lautet die Eigenschaft "AutoUpdateOptions". Dort kannst Du alles einstellen....

Die Erzeugung der SQL's funktionierte bei mir immer einwandfrei. Hast Du ein Feld für den Primärindex ausgewählt??


Zitat von Hansa:
2. Wo und wie ändert man die Reihenfolge der Felder? Habe ein Grid, da stehen die Felder genau verkehrt rum drin.
Erst mal im SelectSQL. Wenn Du Reihenfolge festlegen willst, dann führe alle Spalten einzeln auf (in der entsprechenden Reihenfolge). Wenn Du "Select * from" machst, dann gilt die Reihenfolge der Datenbank.

Zitat von Hansa:
3. Wo kommt eigentlich die OLD_nr in den SQL-Statements her und wozu ist die überhaupt gut?
Dazu muss ich weiter ausholen. In Interbase (und damit auch Firebird) kann man mit Triggern verschiedene Funktionen direkt auf dem Server ausführen. Trigger sind vergleichbar mit Events, also Ereignisse in Delphi. Da gibt es z.B. das Event OnUpdate. Dieser Trigger wird (wenn er definiert ist) immer ausgeführt. Um die Werte alt und neu zu unterscheiden, gibt es eben OLD und NEW Werte. Diese "Regel" haben die Komponentenbauer eben übernommen. Bei einem Update ist es, zumindest theoretisch, möglich den Primärindex zu ändern. Um das Statement aber korrekt auszuführen muss der Datensatz gefunden werden, der mit dem ALTEN Wert übereinstimmt, deshalb das OLD_, das ist auch bei den IBX so.

Zitat von Hansa:
4. 'UPDATE "art" SET '
' "preis" = ?"preis",'
' "bez" = ?"bez",'
' "nr" = ?"nr"'
' WHERE '
' "nr" = ?"OLD_nr"'
' ')
Das Mini-Programm läuft, aber mich stören obige "?". Sie scheinen keine Auswirkungen zu haben
Hast Du dir schon mal eine Update-Clasue der TIBDataSet angeschaut?? Da stehen anstelle der ? einfach ein :! Das kannst Du aber auch einfach in der TFIBDataSet einstellen. Das ?, bzw. :, bedeutet, dass ein Parameter kommt, also eine Variable, die irgendwoher ihren WErt erhält.

Grüße
Lemmy

P.S.: Ich bin ab morgen für vermutlich 3 Wochen weg...
  Mit Zitat antworten Zitat