| |
|
|
rquindt | allô
je voudrais dans einer SQL banque de données chez den übergebenen Datensätzen automatisch une Kunden-Nr vergeben laisser. cela funktioniert soweit aussi per Generator:
Db("fbSQLExec", hdb&, "CREATE TABLE ADRESSEN \ ( KDNR Integer generated by Default as identity (start With 0) primary clé Not NULL,\ NAME CHAR(30),\ VORNAME CHAR(30))",1)
si je maintenant une Datensatz einfüge, voudrais je gern cet Kunden-Nr zurück transfert avons, avec cela je vous dans einem weiteren Schritt nutzen peux. cela soll le son Internet per "RETURNING" marcher
db("fbSQLExec",hdb&,"INSERT INTO ADRESSEN (NAME,VORNAME) \ VALUES ('Mustermann','Max')" + " RETURNING KDNR",1)
seulement bekomme je cela Ergebnis pas dans une variable. trop dem ganzen habe je une DELPHI-Code trouvé, bekomme den mais pas dans XPROFAN angepasst:
with DBank.IBC_Anschrift do begin Close; SQL.Clear; SQL.Ajouter('INSERT INTO anschrift (AUFTRAG, Name_1, Name_2)'); SQL.Ajouter('VALUES (''87777'', ''Schulze'', ''Nummer 2'')'); SQL.Ajouter('RETURNING ID');
ExecSQL; NewID:= DBank.IBC_Anschrift.ParamByName('RET_ID').Value;
ShowMessage(IntToStr(NewID); end;
peux mir là quelqu'un aider? Vielen Dank im vorraus. |
|
|
| |
|
|
|
H.Brill | je denke la fois, tu dois aussi une variable angeben, à qui qui SQL-Befehl den generierten le contenu qui ersten Spalte KDNR hin triggert.
Declariere la fois une variable Wert% et probiere es la fois so :
db("fbSQLExec",hdb&,"INSERT INTO ADRESSEN (NAME,VORNAME) \
VALUES ('Forgeron','Max')" + " RETURNING KDNR INTO :Wert%",1)
Stichpunkt : eingebettete Variablen avec Doppelpunkt.
dans Wert% devrait ensuite qui le contenu stehen. aussi peut-être la fois une String (wert$) essayer.
So habe je cela la fois im Internet gelesen. veux mir mais maintenant pas à cause de cette une l'affaire une extra DB construire.
Probiere es arrêt simple la fois |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 03.04.2018 ▲ |
|
|
|
|
Michael W. | Meines Wissens donner qui db(SQLExec/fbSQLExec/slSQLExec seulement le nombre qui verarbeiteten Datensätze zurück.
sur qui FireBird-page fehlt chez RETURNING qui ESQL-Kennung. alors gibt es dans qui eingebetteten Version "fbembedded" cela RETURNING aussi pas. siehe: [...] et: [...]
alors une Funktion construire, qui qui Adresse aufnimmt et qui Kundennummer zurück gibt.
Proc neue_Adresse
Paramètres pName$, pVorname$
Déclarer hGrid&
hGrid& = Créer("Grid",3,0)
db("fbSQLExec", hdb&, "INSERT INTO ADRESSEN ( nom,prénom ) VALUES ( :pName$, :pVorname$ )", 1)
db("fbSQLExec", hdb&, "SELECT KdNr,nom,prénom FROM ADRESSEN WHERE (nom = ':pName$') AND (prénom = ':pVorname$')", hGrid&)
' qui Werte peut ensuite alle kontrolliert werden; nécessaire wird seulement qui erste
' Im Grid landen aucun Überschriften, qui la base ist alors la ligne 0 et Spalte 0
Retour Val( GetText $(hGrid&, 0,0) )
ENDPROC
KdNr& = neue_Adresse( "Mustermann", "Max" )
cela bedeutet zwar deux SQL-Befehle sur qui banque de données loszulassen, mais dadurch laisser sich qui Werte aussi juste vérifier.
un weiterer Vorteil qui Funktion: la plus part du temps braucht on pour Kundennummern bestimmte Nummernkreise et Bereiche, qui pour nötige Bearbeitung peux on là avec aufnehmen.
cela peux on sich ensuite pour Produkt-, Rechnungs- et autre Nummern abschauen et so kapseln. |
|
|
| System: Windows 8/10, XProfan X4 Programmieren, das spannendste Detektivspiel der Welt. | 04.04.2018 ▲ |
|
|
|
|
rquindt | merci pour qui Tips. là es häufig la fois gleiche Namen et Vornamen ou bien sonstige Kombinationen gibt, habe cela ganze la fois avec nem Generator umgebaut.
Db("fbSQLExec",hdb&,"CREATE GENERATOR KDNR",1) '----- Generator pour données-phrase Nr wird erzeugt ------- Db("fbSQLExec",hdb&,"SET GENERATOR KDNR TO 0",1) '----- KDNR = données-phrase-Nr, Wert startet avec 0 ------
KdNr& = Datei_SatzNr( hdb& ) ' prochain SatzNr ermitteln
db("fbSQLExec",hdb&,"INSERT INTO ADRESSEN (KDNR,NAME,VORNAME) \ VALUES (:KdNr&,'Mustermann','Max')",1)
Fin
»-------------------------------------------------------------------------------- Proc Datei_SatzNr
Paramètres hdb1& Déclarer hGrid&
hGrid& = Créer("Grid",3,0)
Db("fbSQLExec",hdb1&,"select gen_id(KDNR,1) à partir de RDB$DATABASE",hGrid&)
Retour Val( GetText$(hGrid&, 0,0) )
' Im Grid landen aucun Überschriften, qui la base ist alors la ligne 0 et Spalte 0
ENDPROC |
|
|
| |
|
|
|
Michael W. | oui, pas entier.
hGrid& = Créer("Grid",3,0)' <-- erzeugt un Grid avec 3 Spalten
' ici wird de SELECT mais seulement 1 Wert generiert... (im Beispiel étions es KdNr,nom,prénom)
Db("fbSQLExec",hdb1&,"select gen_id(KDNR,1) à partir de RDB$DATABASE",hGrid&)
Retour Val( GetText $(hGrid&, 0,0) )
Aussi wird dans den meisten SELECT qui gesamte banque de données durchlaufen, es sei car on grenzt qui cherche avec einer WHERE-Klausel un. cela gen_id() pourrait mais solch une Begrenzung sur une la ligne beinhalten. |
|
|
| |
|
|