AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird / UniDac - Insert über Query?
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird / UniDac - Insert über Query?

Ein Thema von moelski · begonnen am 9. Feb 2010 · letzter Beitrag vom 5. Apr 2010
Antwort Antwort
Seite 2 von 3     12 3      
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#11

Re: Firebird / UniDac - Insert über Query?

  Alt 5. Apr 2010, 17:41
Oder frag auf 0 ab.
New."ID" = 0 Edit: ich meine frage neben NULL auch 0 ab.
Lars
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Firebird / UniDac - Insert über Query?

  Alt 5. Apr 2010, 17:49
Dann muss es aber auch 0 sein
Markus Kinzler
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#13

Re: Firebird / UniDac - Insert über Query?

  Alt 5. Apr 2010, 20:07
Schön, dass an Ostern auch noch jemand schafft

Leider haben mir die Tips nicht weiter geholfen ich habe beides probiert:
SQL-Code:
BEGIN
  NEW."ID" = GEN_ID("GEN_DIAS_ID",1);
END
und
SQL-Code:
BEGIN
  IF ((NEW."ID" IS NULL) or (NEW."ID" = 0)) THEN NEW."ID" = GEN_ID("GEN_DIAS_ID",1);
END
und beide male blieb es bei der Meldung "Feld 'ID' muss einen Wert haben". Mir ist noch nicht ganz klar, wie dem Feld ID der neu generierte Wert zugewiesen wird, bzw. wie meine UniQuerry den Wert bekommt und bei Post auch mit abspeichern kann. Denn so einfach wie bei Paradox und MsSQL scheint es nicht zu funktionieren.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Firebird / UniDac - Insert über Query?

  Alt 5. Apr 2010, 20:09
SQL-Code:
BEGIN
  NEW.ID = GEN_ID('GEN_DIAS_ID',1);
END
Markus Kinzler
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#15

Re: Firebird / UniDac - Insert über Query?

  Alt 5. Apr 2010, 20:19
Nein, leider nicht. FlameRobin verwendet ". Bei ' gibts ne Fehlermeldung. Und wenn ich direkt in FlameERobin einen neuen Satz anlege, bekomme ich ja auch eine neue ID. Nur aus Delphi raus funktioniert es nicht. Irgendwie bekommt die UniQuerry die neue ID nicht mit. Am liebsten wäre es mir sowieso, ich könnte diese auch gleich in einem Edit- oder Label-Feld anzeigen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Firebird / UniDac - Insert über Query?

  Alt 5. Apr 2010, 20:24
Wie sind die Felder deklariert ( case sensitiv)?
Wie rufst du den Insert auf?
Zitat:
Am liebsten wäre es mir sowieso, ich könnte diese auch gleich in einem Edit- oder Label-Feld anzeigen
Du könntest den Wert auch in einem Select vorher holen
select GEN_ID( ... oder die Funktionlität der Komponente verwenden
Den Wert kanst du dir durch das returning zurückgeben lassen:
insert .... into ... returning id;
Markus Kinzler
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#17

Re: Firebird / UniDac - Insert über Query?

  Alt 5. Apr 2010, 20:53
Wenn ich einen neuen Satz anlegen will rufe ich UniQuery.Insert auf.
Die Werte selber werden direkt in dbEdit-Feldern mit Werten gefüllt.
Zum sichern rufe ich UniQuery.post auf.
Die UniQuerry selber ist mit dem SQL select * from dias order by nr definiert.
In der DB selber habe ich keine Casesensitivtät deklariert sondern ich arbeite bei der Abfrage mit upper....

Den SQL-Aufbau SELECT gen_ID(Gen_Dias_ID,0) FROM DIAS habe ich ja noch gefunden, aber wie stehts hier mit der Kompatibilität zu MsSQL? Ist das mit Firebird "für einen Anfänger" wirklich so kompliziert? Habe ich eventuell in UniQuery vergessen irgendeinen Parameter zu setzen? Die verwende ich nämlich auch zum ersten mal.

Als ich durch die diversen Foren bin musste ich feststellen dass einige das Problem mit der Meldung "Feld ID muss einen Wert haben" aber leider fand ich nirgends eine Lösung.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Firebird / UniDac - Insert über Query?

  Alt 5. Apr 2010, 21:06
Wie sieht Query.InsertSQL aus?
Zitat:
In der DB selber habe ich keine Casesensitivtät deklariert sondern ich arbeite bei der Abfrage mit upper....
Wenn du die Feldnamen aber mit "" angibst wird es casesensitiv (Wenn bei der Anlage angegeben für immer: id ist dann was anderes als Id oder ID)
Mit select GEN_ID( GEN_DIAS_ID,1) from RDB$DATABASE; kanst du den nächsten Wert holen, dieser ist dann reserviert (GEN_ID ist eine Semaphorenfunktion)
Du kannst natürlich auch die Funktionalität der Komponente verwenden
Zitat:
Wie muss ich das ganze gestalten, dass ich den Code für alle Tabellen einer DB verwenden kann ohne mich jedes mal aufs neue damit auseinanderzusetzen.
Für alle Tabellen den gleichen Generator(Sequenz) verwenden
Zitat:
Ist das mit Firebird "für einen Anfänger" wirklich so kompliziert?
Eigentlich nicht
Zitat:
Habe ich eventuell in UniQuery vergessen irgendeinen Parameter zu setzen?
Ich vermute eher es liegt an der Groß-/Kleinunterscheisung
Markus Kinzler
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#19

Re: Firebird / UniDac - Insert über Query?

  Alt 5. Apr 2010, 21:57
Hallo Markus,

wenn das eigentlich nicht so kompliziert ist, komme ich irgendwie nicht weiter. Ich habe jetzt eine ganz einfache Anwendung mit D2010 und UniDac erstellt die auf die Firebird-Beispiel-DB Employees zugreift. Da habe ich genau das Problem, das ich auch bei meiner DB habe. Ich habe das Beispiel im Anhang als ZIP. Wäre es möglich, dass du dir das mal anschaust.

Gibt es eigentlich auch eine Möglichkeit, UniConnection vom Ablagepfad der DB unabhängig zu machen, im Grunde so wie mit den Alias bei Paradox?

Vielen Dank
Gerd
Angehängte Dateien
Dateityp: zip project2_211.zip (4,7 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Firebird / UniDac - Insert über Query?

  Alt 5. Apr 2010, 22:00
Es fehlt das .InsertSQL
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 21:47 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