Re: [de-users] SQL-Abfrage mit zusammengesetztem Index
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
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
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
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
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