Inhalt eines Tabellenfeld mit Makro verändern

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Luci
Beiträge: 4
Registriert: So, 12.04.2015 20:54

Inhalt eines Tabellenfeld mit Makro verändern

Beitrag von Luci »

Guten Abend,
ich bin auf der Suche nach einem Makrocode der es mir ermöglicht in einer Basetabelle den Inhalt eines
Tabellenfeldes zu ändern.
Die Tabelle besteht aus den Feldern "ID" und "Kursnummer". Den Inhalt von "Kursnummer" möchte ich
mittels eines Makros verändern können. Der Feldtyp von "Kursnummer" ist integer.
Ich konnnte auch in den Handbüchern keine Lösung finden.

Vieln Dank für die Hilfe
Luci
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Inhalt eines Tabellenfeld mit Makro verändern

Beitrag von RobertG »

Hallo Luci,

Du meinst wirklich die Tabelle, nicht ein Tabellenkontrollfeld innerhalb eines Formulars? Da könntest Du höchstens mit SQL-Code arbeiten; den kannst Du natürlich auch in ein Makro rein schreiben. Nur solltest Du auf jeden Fall darauf achten, dass die Tabelle nach der Ausführung eines Codes auch wieder aktualisiert wird. (Makrorecorder anwerfen, Ansicht → Tabellen aktualisieren auslösen und nachsehen, was dabei aufgezeichnet wird)

Davon abgesehen: Wie willst Du so ein Makro starten? Du könntest natürlich einen zusätzlichen Button in die Base-Oberfläche einbauen. Bei den Tabellen gibt es aber sonst nur die Möglichkeit, ein Makro mit der gesamten Tabelle zu verbinden (Tabelle → Bearbeiten → Extras → Anpassen). Den Inhalt eines Feldes wirst Du z.B. schwerlich auslesen können.

Nutze also besser ein Formular, da stehen die viel mehr Möglichkeiten offen.

Gruß

Robert
Luci
Beiträge: 4
Registriert: So, 12.04.2015 20:54

Re: Inhalt eines Tabellenfeld mit Makro verändern

Beitrag von Luci »

Ganz genau! In die Tabelle . Ich möchte beim Öffnen eines Formulares, bzw. beim Anklicken eine Datensatzes in einem Formular,
einen Wert aus dem angewählten Datensatz in eine Tabelle einstellen.
Das kann dann per Makro geschehen. Mir fehlt aber leider der Code, da ich gerade erst begonnen habe einen Versuch mit Base zu machen....
Vielleicht kannst du mir ja sagen, wo ich so etwas finden kann.
Danke Luci
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Inhalt eines Tabellenfeld mit Makro verändern

Beitrag von RobertG »

Hallo Luci,
Luci hat geschrieben:Ganz genau! In die Tabelle . Ich möchte beim Öffnen eines Formulares, bzw. beim Anklicken eine Datensatzes in einem Formular,
einen Wert aus dem angewählten Datensatz in eine Tabelle einstellen.
Das bedeutet also dann nicht, dass Du bei der Eingabe in eine Tabelle, sondern bei der Arbeit mit einem Formular nur einen Datensatz in einer (anderen) Tabelle ändern willst.

Zuerst einmal musst Du den Wert auslesen. Wenn Du den aktuellen Datensatz hast geht das auf verschiedene Art und Weise. Du kannst entweder über das Formular auf das Feld zugreifen und dann über currentValue den entsprechenden Wert des benannten Feldes des Formulars auswählen. Alternativ kannst Du aus der dem Formular zugrundeliegenden Datenquelle (Tabelle, Abfrage) das entsprechende Feld über die Position aussuchen und dann auslesen (über so etwas wie oForm.getString(1) z.B. den Text des ersten Feldes eines Datensatzes.

Dann musst Du den ausgewählten Wert einfügen. Dazu erstellst Du den Kontakt zur Datenbank, erstellst einen entsprechenden SQL-Befehl und schickst den mit oSQL_Statement.executeUpdate(stSql) an die Datenbank.

Details dazu stehen alle im Handbuch im Kapitel zu den Makros. Wenn Du ein konkretes Beispiel hier einstellst, dann kann ich Dir auch beim Code dazu helfen.

Gruß

Robert
Luci
Beiträge: 4
Registriert: So, 12.04.2015 20:54

Re: Inhalt eines Tabellenfeld mit Makro verändern

Beitrag von Luci »

Hallo RobertG,
Beim Öffene des Fomulars möchte ich die aktulle Datensatznummer aus dem Formular in eine anderen Tablle speichern.
Wenn der Datensatz gewechselt wird möchte ich die neue Datensatznummer in die anderen Tablle speichern.
Tabelle 1:"AktuelleKursnummer" mit den Feldern: ID und Kursnummer und
Tabelle2:"Kurse2 mit den Feldern :KursId und Beschreibung....

Aufgerufen werden soll das ganze beim Datensatzwechsel mittels Makro
Der folgenden Code zum Abspeichern der KursID ind einer Variablen funktioniert so weit,
ich habe nur keine Ahnung wie ich diesen Wert in der Tabelle "AktuelleKursnummer" im Feld "Kursnummer " abspeichern kann.

SUB Ablegen

DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
Dim thisDocument AS OBJECT
DIM oTable AS OBJECT

oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("Kurse") 'Formular ansprechen

intNum = oForm.getInt(1) ' Erstes Tabellenfeld auslesen und in Variabler zwischzenspeichern

msgbox intNum

END SUB

Die msgbox-Meldung dient lediglich zur Kontrolle.
Würde mich freuen, wenn Du mir eine Lösung zeigen könntest.


Viele Grüße
Luci
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Inhalt eines Tabellenfeld mit Makro verändern

Beitrag von RobertG »

Hallo Luci,

mit msgbox lässt Du Dir je bereits den Wert anzeigen. Danach kommt das Folgende:

Code: Alles auswählen

oDatenquelle = ThisComponent.Parent.DataSource
oVerbindung = oDatenquelle.GetConnection("","")
oSQL_Anweisung = oVerbindung.createStatement()
stSql = "UPDATE ""AktuelleKursnummer"" SET ""Kursnummer"" = '"+intNum+"'"
oSQL_Anweisung.executeUpdate(stSql)
Achtung: Der SQL-Code muss jetzt natürlich angepasst werden. So wird nur in jedem Datensatz der Tabelle "AktuelleKursnummer" der Wert auf die neue Kursnummer gesetzt.

Andere SQL-Anweisungen wie Insert usw. findest Du im Handbuch.

Gruß

Robert
Luci
Beiträge: 4
Registriert: So, 12.04.2015 20:54

Re: Inhalt eines Tabellenfeld mit Makro verändern

Beitrag von Luci »

Hallo RobertG, alle perfekt. Danke für die schnelle Hilfe.
Viele Grüße
Luci
Antworten