Seite 1 von 1

Re: Datensatz per Macro speichern

Verfasst: Do, 21.01.2010 20:20
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?

Re: Datensatz per Macro speichern

Verfasst: Di, 26.01.2010 11:16
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?

Re: Datensatz per Macro speichern

Verfasst: Di, 26.01.2010 15:45
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

Re: Datensatz per Macro speichern

Verfasst: Di, 26.01.2010 15:53
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?!!

Re: Datensatz per Macro speichern

Verfasst: Di, 26.01.2010 17:11
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

Re: Datensatz per Macro speichern

Verfasst: Di, 26.01.2010 17:18
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

Re: Datensatz per Macro speichern

Verfasst: Di, 26.01.2010 17:28
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.

Re: Datensatz per Macro speichern

Verfasst: Di, 26.01.2010 17:41
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

Re: Datensatz per Macro speichern

Verfasst: Di, 26.01.2010 18:08
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.

Re: Datensatz per Macro speichern

Verfasst: Di, 26.01.2010 18:11
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

Re: Datensatz per Macro speichern

Verfasst: Di, 26.01.2010 19:37
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

Re: Datensatz per Macro speichern

Verfasst: Mi, 05.05.2010 10:54
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