Datensatz per Macro speichern

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Datensatz per Macro speichern

Beitrag von komma4 »

Wenn Du BASIC kannst...

erstelle eine Schaltfläche "Übernehmen" und lese die Dateiauswahl aus.
Dann speichere den Datensatz.

Wo ist Dein konkretes Problem?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Datensatz per Macro speichern

Beitrag von komma4 »

chris246 hat geschrieben:Ich suche nach dem Code, wie ich einer konkrete Zelle einer Datenbanktabelle einen zu speichernden Wert übergeben kann.
War Deine Suche inzwischen erfolgreich?

Du hast das Textfeld des Formulars auf die DB-Spalte gebunden: warum wird nach der Dateiauswahl der Pfad "nicht immer" gespeichert?
Fehler in Deinem Coding?

XRAY hast Du im Einsatz?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
chris246
Beiträge: 4
Registriert: Di, 26.01.2010 15:35

Re: Datensatz per Macro speichern

Beitrag von chris246 »

Hi,
komma4 hat geschrieben: War Deine Suche inzwischen erfolgreich?
Nein, leider nicht
komma4 hat geschrieben: Du hast das Textfeld des Formulars auf die DB-Spalte gebunden: warum wird nach der Dateiauswahl der Pfad "nicht immer" gespeichert?
Fehler in Deinem Coding?
Ich kann das Speichern manuell anstoßen, indem ich in das schreibgeschützte Textfeld, in das der Pfad übernommen wurde, Zeichen eintippe(diese erscheinen durch den Schreibschutz zwar nicht, aber das Speicherevent wird ausgelöst).

Für das speichern direkt habe ich nichts gecodet, da ich wie gesagt nicht weiß, wie ich per Code auf eine Datenbanktabelle zugreife.

Was ist XRAY?

Schonmal danke für Deine Hilfe.:)
lg
chris
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Datensatz per Macro speichern

Beitrag von komma4 »

chris246 hat geschrieben:Ich kann das Speichern manuell anstoßen, indem ich in das schreibgeschützte Textfeld, in das der Pfad übernommen wurde, Zeichen eintippe(diese erscheinen durch den Schreibschutz zwar nicht, aber das Speicherevent wird ausgelöst).

Für das speichern direkt habe ich nichts gecodet, da ich wie gesagt nicht weiß, wie ich per Code auf eine Datenbanktabelle zugreife.

Was ist XRAY?
a) warum ist das Textfeld schreibgeschützt?
b) die Übernahme in das Textfeld löst also nicht das "Datensatz geändert"-Ereignis aus
c) XRAY ist ein Debugger, welche Dir Methoden und Inhalte eines zu untersuchenden Objekts ausgibt. Du solltest Deine Suche mal ausweiten... hier im Forum gibt es massig Verweise auf dieses Tool.


Für b) meine ich auch hier schon ein Stück Code gesehen zu haben?!!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
chris246
Beiträge: 4
Registriert: Di, 26.01.2010 15:35

Re: Datensatz per Macro speichern

Beitrag von chris246 »

zu
a) Es ist schreibgeschützt, da ich versucht hatte, mittels dieses Textfeldes den Pfad zu speichern, was aber nicht ging. Da der Pfad per CommonDialog ausgewählt wird, muss man ihn nicht bearbeiten können.
b)Nein; Den Code, den ich bis jetzt verwende, habe ich in einem vorigen Beitrag schon gepostet ;) Mehr hab ich noch nicht.
c) Ok
chris246
Beiträge: 4
Registriert: Di, 26.01.2010 15:35

Re: Datensatz per Macro speichern

Beitrag von chris246 »

Das VisualBasic-Pendant zu dem was ich suche, geht in die Richtung:

Code: Alles auswählen

'Hinzufügen
AdoDC.Recordset.AddNew
AdoDC.Recordset!Spaltenname = "Wert"

'Updaten:
AdoDC.Recordset.Update "Spaltenname", "Wert"
Vorausgesetzt ist, dass man sich in der richtigen Zeile befindet.
Zurück zu meiner Frage:
Nachdem der Datensatz bereits angelegt wurde, muss ich ja eigentlich nur den Update-Befehl ausführen
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Datensatz per Macro speichern

Beitrag von DPunch »

Aloha

Versuch es mal hiermit:

Code: Alles auswählen

Sub FileSelect
   Doc = ThisComponent
   Form = doc.drawpage.forms.getbyindex(0)
   Ctl = Form.getByName("txtSaved")
   Ctl2 = Form.getByName("FileSelection")
   'Ctl.text = ctl2.text 'Übernimmt den ausgewählten Pfad in ein Textfeld, in der Hoffnung, dass dieses, verbunden mit einer
                        'Spalte, den Wert bei TextChange speichert. Allerdings wird dieses Event bei Wertänderung per Code
                        'nicht aufgerufen, folglich wird auch nichts gespeichert.
   '************************************************
   Ctl.Boundfield.updateString(Ctl2.Text)
   '************************************************
   Form.updateRow '***Natürlich nur, wenn das sofortige Speichern in der Tabelle gewünscht ist, ansonsten eben einfach weglassen
   Ctl3 = Form.getByName("ImageControl")
   Bild=ConvertToUrl(ctl2.text)
   Ctl3.imageURL=Bild 'Ausgewähltes Bild anzeigen.
end sub
Das Boundfield ist der Teil der Textbox, der tatsächlich an das RowSet gebunden ist, mit dem Du in dem Formular arbeitest.
Der "normale" Text ist lediglich der Teil, der im Model angezeigt wird.
Intern wird aller Voraussicht nach bei jedem KeyPress im Model automatisch ein Update des Boundfields ausgelöst, jedoch nicht beim Setzen des Textes per Makro.
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Datensatz per Macro speichern

Beitrag von turtle47 »

Hallo Zusammen,

ich hatte auch mal ein Problem mit einem per Code gefüllten Textfeld dessen Inhalt nicht in die Datenbank geschrieben wurde.

Man konnte das umgehen, indem man hinter den Text manuell den Cursor setzte und die Entertaste drückte.
Nicht gerade praktikabel.

Unser lieber Freund eBayer hatte hier im Forum dazu was geschrieben und eine Beispiel-DB hochgeladen die aber leider nicht mehr verfügbar ist.
Was ich dazu jetzt noch gefunden habe ist folgendes:
eBNayer hat geschrieben:GlobalForm.getByName(FeldName).commit(true) (Commit ist notwendig, damit das Formular die Änderung auch mitbekommt und beim speichern berücksichtigt)
Viel Erfolg
eBayer
Also was hier entscheidend ist, ist dieser Commit-Befehl.

Eine Function nach eBayer-Methode sieht dann folgendermassen aus:

Code: Alles auswählen

Function setTextField(oDoc, FeldName, Inhalt)
	Dim oForm As Object
	oForm = oDoc.drawpage.forms.getbyindex(0)
	oForm.getByName(FeldName).text = Inhalt
	oForm.getByName(FeldName).commit(true)			' mit "commit" wird quasi die Enter-Taste simuliert 
End Function
Ich hoffe das hilft weiter.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Datensatz per Macro speichern

Beitrag von DPunch »

turtles Lösung (bzw. die von eBayer) ist sogar noch kürzer und leichter und funktioniert auf die gleiche Weise.

Über das Commit bin ich mit X-Ray auch gestolpert, aber da es sowohl dort als auch in der API
(http://api.openoffice.org/docs/common/r ... onent.html)
eine parameterlose Methode mit einem Bool'schen-Rückgabewert ist, habe ich mich nicht weiter damit beschäftigt.

OOo Basic (bzw. OOo Basic Dokumentation) at its finest.
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Datensatz per Macro speichern

Beitrag von eBayer »

Hallo zusammen.....
noch habe ich nicht aufgegeben.
Ich stelle nochmal mein Beispielprogramm mit vielen Praxisbeispielen rein.
Viel Spaß.
@turtle.... danke für die lieben Worte, ich mache weiter solange es geht.
Gruß eBayer
Dateianhänge
Florian1.zip
(40.72 KiB) 363-mal heruntergeladen
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
chris246
Beiträge: 4
Registriert: Di, 26.01.2010 15:35

Re: Datensatz per Macro speichern

Beitrag von chris246 »

Hi,
vielen Dank euch Allen :)
Welche Lösung ich verwendem weiß ich noch nicht genau.
@eBayer: Danke für die DB. Nachdem jetzt endlich erstmal die Klausurzeit um ist, hab ich bald mal Zeit, mir die anzuschauen :)

lg
chris
massioo
*
Beiträge: 13
Registriert: Mo, 08.02.2010 10:29

Re: Datensatz per Macro speichern

Beitrag von massioo »

puh da hat DPunch bzw ebayer mir gerad richtig aus schlinge geholfen mit mein projekt^^...
hmm bei mir ergab sich folgendes mit den methoden:

Code: Alles auswählen

ogemeinde.setPropertyValue("EffectiveValue","String")
ogemeinde.commit(true)
' hat den Wert in die Datenbank gespeichert

ogemeinde.text = "String"
ogemeinde.commit(true)
' hier hat er nichts gespeichert, womöglich reicht text nicht.

ogemeinde.Boundfield.updateString("String")
'funktioniert ebenfalls
jutti thx an das forum :D
Antworten