Seite 1 von 1
[Gelöst] Makro: Zwei Datenfelder aus Formular an eine Tabelle anhängen
Verfasst: Mo 10. Apr 2017, 15:33
von mexman
Hallo:
Nachdem ich das Wochenende mit Studium von Hilfedateien und Makro-Listen verbracht habe, fehlt mir immernoch ausreichend Ahnung folgendes Makro ohne Hilfe zu erstellen

In beiliegender Datenbank möchte ich aus dem Formular JimTablForm ein Makro aufrufen, was folgendes bewirken sollte:
Hänge die beiden oberen Felder aus der Tabelle "Abfrageneu" (FIRST NAME und LAST NAME) an die Tabelle "PTable" (Felder PFirst und PLast) an.
Kann mir jemand bitte auf die Sprünge helfen?
Danke im Voraus
Michael
Re: Makro: Zwei Datenfelder aus Formular an eine Tabelle anhängen
Verfasst: Mo 10. Apr 2017, 20:21
von F3K Total
Bittesehr:
Code: Alles auswählen
SUB INSERT_ROW_PTable
oConnection = ThisDatabaseDocument.CurrentController.ActiveConnection
SQL_Statement = oConnection.createstatement
sSQL = "INSERT INTO ""PTable""( ""PFirst"",""PLast"") SELECT ""FIRST NAME"", ""LAST NAME"" FROM ""JimTable1"" WHERE ( LOWER ( ""FIRST NAME"" ) LIKE LOWER ( '%' || ( SELECT ""F_FIRST"" FROM ""FILTER"" ) || '%' ) AND ( LOWER ( ""LAST NAME"" ) LIKE LOWER ( '%' || ( SELECT ""F_LAST"" FROM ""FILTER"" ) || '%' ) OR ( SELECT ""F_LAST"" FROM ""FILTER"" ) IS NULL ) OR LOWER ( ""LAST NAME"" ) LIKE LOWER ( '%' || ( SELECT ""F_LAST"" FROM ""FILTER"" ) || '%' ) AND ( SELECT ""F_FIRST"" FROM ""FILTER"" ) IS NULL OR ( SELECT ""F_LAST"" FROM ""FILTER"" ) IS NULL AND ( SELECT ""F_FIRST"" FROM ""FILTER"" ) IS NULL )"
Sql_Statement.executeUpdate(sSQL)
END SUB
Gruß R
Fuktioniert leider nicht
Verfasst: Di 11. Apr 2017, 01:43
von mexman
Hallo R.
Ich hatte mich zu früh gefreut. Leider werden zwar Daten in die entsprechende Tabelle geschrieben, aber ZU VIELE!
Es soll nur EIN DATENSATZ geschrieben werden, nicht alle gefilterten Einträge! Wenn Du mit leeren Filterfeldern filterst, siehst Du ALLE Datensátze und dann werden durch das Makro auch ALLE angezeigten Datensätze in die Tabelle geschrieben!
Wenn ich das Makro ansehe, dann verstehe ich auch, dass das so funktionieren muss, aber das war nicht Sinn der Sache

Was ich eigentlich erreichen möchte ist:
"Hänge
die beiden oberen Felder aus der Tabelle "Abfrageneu" (FIRST NAME und LAST NAME) an die Tabelle "PTable" (Felder PFirst und PLast) an."
Habe gesehen, dass INSERT INTO nur von Tabelle nach Tabelle funktioniert, Kann man Dein Makro so ändern, dass lediglich die ERSTE Übereinstellung aus dem Filter berücksichtigt wird? Das ist ja das, was auf dem Formular passiert!
Trotzdem vielen Dank!
Gruss
Michael
Re: Makro: Zwei Datenfelder aus Formular an eine Tabelle anhängen
Verfasst: Di 11. Apr 2017, 17:47
von F3K Total
Moin,
mexman hat geschrieben:... dass lediglich die ERSTE Übereinstellung aus dem Filter berücksichtigt wird?
natürlich kann man das machen. Aber was genau ist denn deiner Meinung nach die erste Übereinstimmung? Du filterst nach Vor- und Nachname, hast aber keine Sortierreihenfolge in deinen Abfragen. Also hängt die Reihenfolge von der Reihenfolge in der Tabelle vermutlich von der ID der Datensätze ab. Welche Kriterien muß der Datensatz erfüllen, damit eben nur dieser eine gefiltert wird? Das solltest du schon genau festlegen, sonst programmiere ich mir hier einen Wolf, und dazu habe ich wenig Lust. Du kannst es so versuchen, nach ID geordnet, der 1. Datensatz
Code: Alles auswählen
SUB INSERT_ROW_PTable
oConnection = ThisDatabaseDocument.CurrentController.ActiveConnection
SQL_Statement = oConnection.createstatement
sSQL = "INSERT INTO ""PTable""( ""PFirst"",""PLast"") SELECT ""FIRST NAME"", ""LAST NAME"" FROM ""JimTable1"" WHERE ( LOWER ( ""FIRST NAME"" ) LIKE LOWER ( '%' || ( SELECT ""F_FIRST"" FROM ""FILTER"" ) || '%' ) AND ( LOWER ( ""LAST NAME"" ) LIKE LOWER ( '%' || ( SELECT ""F_LAST"" FROM ""FILTER"" ) || '%' ) OR ( SELECT ""F_LAST"" FROM ""FILTER"" ) IS NULL ) OR LOWER ( ""LAST NAME"" ) LIKE LOWER ( '%' || ( SELECT ""F_LAST"" FROM ""FILTER"" ) || '%' ) AND ( SELECT ""F_FIRST"" FROM ""FILTER"" ) IS NULL OR ( SELECT ""F_LAST"" FROM ""FILTER"" ) IS NULL AND ( SELECT ""F_FIRST"" FROM ""FILTER"" ) IS NULL ) ORDER BY ID Limit 1"
Sql_Statement.executeUpdate(sSQL)
END SUB
R
Re: Makro: Zwei Datenfelder aus Formular an eine Tabelle anhängen
Verfasst: Di 11. Apr 2017, 19:17
von mexman
Hallo R:
Prima! Das war genau richtig so.
Danke sehr!
Der Hintergrund:
In der kompletten Datenbank stehen für eine Person bis zu 35 Datensätze.
Wenn ich nach der Person filtere, stehen diese 35 Datensätze untereinander im Filter, in der Zieltabelle soll aber nur einmal diese Person auftauchen.
>sonst programmiere ich mir hier einen Wolf<
Das soll natürlich nicht sein!
Habe viel gelernt! Vielen Dank! Und schöne Ostern!
Gruss aus mexiko
Michael