Re: [de-users] SQL-Abfrage mit zusammengesetztem Index

2023-11-23 Diskussionsfäden Leo-Hubert Kappes

Vielen Dank Robert,

das hat schon mal auf Anhieb so funktioniert.

Es ist doch gut, wenn man auf diesem Weg immer wieder in schwierigen 
Fragen kompetente Hilfe erhalten kann.


Vielen Dank!

Gruß L-H


PS: Das Feld "IdentNummer" ist eine eindeutige Identifikation, um auf 
einem Hauptformular mehrer Unterformulare richtig zusammenzuhalten. So 
sollte das dann auch bei der Sammelerfassung von 
Bodenbearbeitungsvorgängen in meiner Schlagkartei richtig funktionieren.




Am 23.11.23 um 14:58 schrieb Robert Großkopf:

Hallo Leo,

das wäre der Code:

stSql = "INSERT INTO ""tbl_SE_BodBearb_Zw"" ( ""Datum"", 
""Maschine_ID"", ""IdentNummer"", ""Jahr_ID"" ) SELECT 
""tbl_SE_BodBearb_Vorg"".""Datum"", 
""tbl_SE_BodBearb_Vorg"".""Maschine_ID"", 
""tbl_SchlagGrunddaten"".""FlurstueckNr"" || 
""tbl_SchlagGrunddaten"".""Gemarkung_ID"" || 
""tbl_SchlagGrunddaten"".""SchlagNr"" AS ""SchlagIdentZahl"", 
""tbl_SE_BodBearb_Vorg"".""Jahr_ID"" FROM ""tbl_SE_BodBearb_Vorg"", 
""tbl_SchlagGrunddaten"", ""tbl_Vorg_Jahr"" WHERE 
""tbl_SE_BodBearb_Vorg"".""Jahr_ID"" = ""tbl_Vorg_Jahr"".""ID"" AND 
""tbl_SchlagGrunddaten"".""Marke"" = TRUE;"


… wenn das Feld "IdentNummer" ein Feld ist, das etwas mit Text 
anfangen kann. Denn durch die Verknüpfung von Feldern mit den Pipes 
erhältst Du automatisch einen Text.


In einer Abfrage habe ich das z.B. realisiert mit einem neuen Feld 
mit der Feldbezeichnung:


"FlurstueckNr" || "Gemarkung_ID" || "SchlagNr"

und dem Alias:

IdentNummer



Ja, wenn das wie eine Nummer aussieht ist es aber noch keine.
Kannst Du in einer Abfrage leicht nachvollziehen, indem Du z.B. zu der 
"Nummer" einfach 1 addieren lässt (oder das ganze mit 2 versuchst zu 
multiplizieren).


Deine "Nummer" hat hoffentlich keine führenden Nullen:

CAST("FlurstueckNr" || "Gemarkung_ID" || "SchlagNr" AS INTEGER)

sofern Du mit 9-stelligen Zahlen auskommst. INTEGER heißt 2^32
Ansonsten BIGINT (2^64) oder Du definierst das Ganze als eine 
Dezimalzahl … So machst Dzu aus dem Text erst einmal einen Zahl. Schau 
am besten, was Dein Feld "IdentNummer" denn aufnehmen kann.


Wenn etwas in einem Makro nicht funktioniert, dann hilft es, die 
Fehlermeldung hier zu posten. Die dürfte in dem Fall nämlich von der 
Datenbank kommen, weil Du eben Text in ein numerisches Feld packen 
willst. Und diese Fehlermeldung ist gleich der, die dabei raus kommt, 
wenn Du den Code (ohne die Anführungszeichendoppler) auch in Extras → 
SQL eingibst.


Gruß

Robert

--
www.lkhome.de

--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] SQL-Abfrage mit zusammengesetztem Index

2023-11-23 Diskussionsfäden Robert Großkopf

Hallo Leo,

das wäre der Code:

stSql = "INSERT INTO ""tbl_SE_BodBearb_Zw"" ( ""Datum"", 
""Maschine_ID"", ""IdentNummer"", ""Jahr_ID"" ) SELECT 
""tbl_SE_BodBearb_Vorg"".""Datum"", 
""tbl_SE_BodBearb_Vorg"".""Maschine_ID"", 
""tbl_SchlagGrunddaten"".""FlurstueckNr"" || 
""tbl_SchlagGrunddaten"".""Gemarkung_ID"" || 
""tbl_SchlagGrunddaten"".""SchlagNr"" AS ""SchlagIdentZahl"", 
""tbl_SE_BodBearb_Vorg"".""Jahr_ID"" FROM ""tbl_SE_BodBearb_Vorg"", 
""tbl_SchlagGrunddaten"", ""tbl_Vorg_Jahr"" WHERE 
""tbl_SE_BodBearb_Vorg"".""Jahr_ID"" = ""tbl_Vorg_Jahr"".""ID"" AND 
""tbl_SchlagGrunddaten"".""Marke"" = TRUE;"


… wenn das Feld "IdentNummer" ein Feld ist, das etwas mit Text anfangen 
kann. Denn durch die Verknüpfung von Feldern mit den Pipes erhältst Du 
automatisch einen Text.


In einer Abfrage habe ich das z.B. realisiert mit einem neuen Feld mit 
der Feldbezeichnung:


"FlurstueckNr" || "Gemarkung_ID" || "SchlagNr"

und dem Alias:

IdentNummer



Ja, wenn das wie eine Nummer aussieht ist es aber noch keine.
Kannst Du in einer Abfrage leicht nachvollziehen, indem Du z.B. zu der 
"Nummer" einfach 1 addieren lässt (oder das ganze mit 2 versuchst zu 
multiplizieren).


Deine "Nummer" hat hoffentlich keine führenden Nullen:

CAST("FlurstueckNr" || "Gemarkung_ID" || "SchlagNr" AS INTEGER)

sofern Du mit 9-stelligen Zahlen auskommst. INTEGER heißt 2^32
Ansonsten BIGINT (2^64) oder Du definierst das Ganze als eine 
Dezimalzahl … So machst Dzu aus dem Text erst einmal einen Zahl. Schau 
am besten, was Dein Feld "IdentNummer" denn aufnehmen kann.


Wenn etwas in einem Makro nicht funktioniert, dann hilft es, die 
Fehlermeldung hier zu posten. Die dürfte in dem Fall nämlich von der 
Datenbank kommen, weil Du eben Text in ein numerisches Feld packen 
willst. Und diese Fehlermeldung ist gleich der, die dabei raus kommt, 
wenn Du den Code (ohne die Anführungszeichendoppler) auch in Extras → 
SQL eingibst.


Gruß

Robert
--
Homepage: https://www.familiegrosskopf.de/robert


--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] SQL-Abfrage mit zusammengesetztem Index

2023-11-23 Diskussionsfäden Rolf Schumann

Hallo,

SQL ist eine DB-Mainpulationssprache:
SELECT = "Wähle aus" ergibt eine Liste …

Wenn das Feld /die Spalte der DB schon existiert, musst Du
UPDATE verwenden
z. B.:

*update* schueler(db-name) *set* Nachname(Feld-/Spaltenname) = 'Müller' 
*where* sid = 123 (Bedingung);


Viele Grüße
Rolf

Am 23.11.23 um 13:10 schrieb Leo-Hubert Kappes:

Hallo Robert,

die Eingabe des Befehls:

SELECT RDB$FIELD_NAME FROM RDB$INDEX_SEGMENTS WHERE RDB$INDEX_NAME = 
'SchlagIdentZahl'


... ergibt folgende Ausgabe.

Gemarkung_ID ,
FlurstueckNr ,
SchlagNr ,

Das sind die drei Felder, aus denen der Index zusammengesetzt ist und 
die ich als einen Wert in eine andere Tabelle in das Feld mit dem 
Namen "IdentNummer" übertragen möchte.



Ich weiß nicht, was ich denn anstatt ""SchlagIdentZahl"" nun in meinem 
Befehl eintragen muss damit die Zahlen aus den drei Feldern in einer 
zusammengesetzten Zahl ausgelesen und in die neue Tabelle übertragen 
werden!


In einer Abfrage habe ich das z.B. realisiert mit einem neuen Feld mit 
der Feldbezeichnung:


"FlurstueckNr" || "Gemarkung_ID" || "SchlagNr"

und dem Alias:

IdentNummer

Das funktioniert aber in dem Makro nicht.


Gruß L-H













--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] SQL-Abfrage mit zusammengesetztem Index

2023-11-23 Diskussionsfäden Leo-Hubert Kappes

Hallo Robert,

die Eingabe des Befehls:

SELECT RDB$FIELD_NAME FROM RDB$INDEX_SEGMENTS WHERE RDB$INDEX_NAME = 
'SchlagIdentZahl'


... ergibt folgende Ausgabe.

Gemarkung_ID ,
FlurstueckNr ,
SchlagNr ,

Das sind die drei Felder, aus denen der Index zusammengesetzt ist und 
die ich als einen Wert in eine andere Tabelle in das Feld mit dem Namen 
"IdentNummer" übertragen möchte.



Ich weiß nicht, was ich denn anstatt ""SchlagIdentZahl"" nun in meinem 
Befehl eintragen muss damit die Zahlen aus den drei Feldern in einer 
zusammengesetzten Zahl ausgelesen und in die neue Tabelle übertragen werden!


In einer Abfrage habe ich das z.B. realisiert mit einem neuen Feld mit 
der Feldbezeichnung:


"FlurstueckNr" || "Gemarkung_ID" || "SchlagNr"

und dem Alias:

IdentNummer

Das funktioniert aber in dem Makro nicht.


Gruß L-H










--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] SQL-Abfrage mit zusammengesetztem Index

2023-11-22 Diskussionsfäden Robert Großkopf

Hallo Leo,


Bei dem Teil: ""tbl_SchlagGrunddaten"".""SchlagIdentZahl""

handelt es sich um einen über den Indexentwurf zusammengesetzten Index 
aus den Werten von drei Spalten der Tabelle tbl_SchlagGrunddaten

Der Wert ist also in der Tabelle nicht als Inhalt einer Spalte vorhanden.


Nein, den müsstest Du aus den 3 Spalten zusammensetzen. Oder was willst 
Du da eintragen?




Kann man denn überhaupt den Ihalt eines zusammengesetzten Index in eine 
neue Tabelle kopieren?


Du möchtest vielleicht die Felder auslesen? Dann müsstest Du in Firebird 
z.B. wissen, wie der Index heißt.
SELECT RDB$FIELD_NAME FROM RDB$INDEX_SEGMENTS WHERE RDB$INDEX_NAME = 
'Index1'
Das würde die Feldnamen ausgeben, die mit dem Index mit der Bezeichnung 
'Index1' verbunden sind.


Gruß

Robert
--
Homepage: https://www.familiegrosskopf.de/robert


--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy