Inhalt von Textfeld in Textfeld kopieren

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Oldie63
Beiträge: 6
Registriert: So, 14.06.2020 10:51

Inhalt von Textfeld in Textfeld kopieren

Beitrag von Oldie63 »

Hallo zusammen

Mein Bedürfnis: Ein Textfeld in einem Eingabeformular soll eine URL aus einer x-beliebigen Dateiablage auf meinem Computer enthalten (am besten per Dateiablage einfügbar) und danach sollte das Zieldokument (PDF-Datei) auch direkt per Mausklick geöffnet werden können. Der Feldinhalt muss bei Abschluss der Erfassung in das Datenfeld Beleg (Text VARCHAR) in die Tabelle Belege geschrieben werden.
Das genannte Textfeld im Eingabeformular heisst bei mir txtBeleg, welches aus dem Datenfeld Beleg (Text VARCHAR) aus der Tabelle Belege kommt.

Was ich bis jetzt geschafft habe:
Wenn das Feld txtBeleg im Eingabeformular eine von mir manuell eingefügte URL enthält, kann das Zieldokument per folgendem Makro (Ereignisse: Maustaste gedrückt) geöffnet werden:

SUB Website_Aufruf(oEvent AS OBJECT)
REM Aufruf einer Website oder des Mailprogramms mit einer vorgegebenen Mailadresse
DIM oFeld AS OBJECT
DIM oShell AS OBJECT
DIM stFeld AS STRING
oFeld = oEvent.Source
REM Den Text aus der Dateiauswahl auslesen
stFeld = oFeld.Text
IF stFeld = "" THEN
EXIT SUB
END IF
IF InStr(stFeld,"@") THEN
stFeld = "mailto:"+stFeld
ELSEIF InStr(stFeld,"http://") THEN
stFeld = convertToUrl(stFeld) 'convertToUrl erkennt, dass mit http:// bereits eine Verbindung vorgegeben ist. file:/// wird nicht gesetzt
ELSE
stFeld = "file:///"+stFeld
stFeld = convertToUrl(stFeld) 'convertToUrl erkennt, dass mit http:// bereits eine Verbindung vorgegeben ist. file:/// wird nicht gesetzt
END IF
REM Start des Files mit der entsprechenden URL-Verbindung
oShell = createUnoService("com.sun.star.system.SystemShellExecute")
oShell.execute(stFeld,,0)
END SUB

Was ich noch geschafft habe:
Ich habe im Eingabeformular ein Dateiauswahlfeld eingefügt, welches eine ZielURL einfügt.
Jedoch kann ich den Feldinhalt aus dem Dateiauswahlfeld nicht automatisch in das Feld txtFeld kopieren lassen, damit es dann auch in meine Tabelle Belege geschrieben wird.

Kann mir da jemand einen Tipp geben oder geht das alles eventuell sogar viel einfacher?

Besten Dank für eure Bemühungen
Oldie63
Belege (Kopie)kopie.odb
(80.84 KiB) 121-mal heruntergeladen
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Inhalt von Textfeld in Textfeld kopieren

Beitrag von RobertG »

Hallo Oldie63,

das Dateiauswahlfeld kann nicht mit einem Datenfeld versehen werden. Wenn Du LibreOffice in einer aktuellen Version hast kannst Du statt des Dateiauswahlfeldes ein Grafisches Kontrollfeld nehmen. Das kann nicht nur Grafiken oder Pfade zu Grafiken einlesen, sondern grundsätzlich auch alle Dateien einlesen und eben auch nur Pfade hierzu.

Aus dem Grunde habe ich gerade aus einer Beispieldatei das Dateiauswahlfeld wieder raus genommen. Warum Felder nutzen, die nicht einmal eine Verbindung zur Datenbank ermöglichen?

Ansonsten kannst Du Dir die zusätzlichen Beispieldateien zum Handbuch anschauen. Da ist noch die Möglichkeit beschrieben, mit einem Dateiauswahlfeld einen Pfad in die Datenbank einzulesen.

Gruß

Robert
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Inhalt von Textfeld in Textfeld kopieren

Beitrag von F3K Total »

Moin,
habe dir da mal ein Makro eingebaut, das den Pfad in deine Tabelle schreibt.

Code: Alles auswählen

Sub S_ADD_URL
	oForm = thisComponent.Drawpage.Forms.MainForm
	oDateiauswahl = oForm.Dateiauswahl
    sUrl = oDateiauswahl.text
	If Len(sUrl) = 0 Then
		MsgBox "Keine Datei ausgewählt",48,"Fehler"
		Exit Sub
	End If
	If NOT FileExists(sUrl) Then
		MsgBox "Datei nicht gefunden",48,"Fehler"
		Exit Sub
	End If
    oForm.updateString(oForm.findColumn("Beleg"),sUrl)
	if oform.isnew then
	oform.insertRow()
	oform.updateRow()
	else
	oform.updateRow()
	endif
End Sub
Gruß R
Dateianhänge
Belege.odb
(80.88 KiB) 124-mal heruntergeladen
Oldie63
Beiträge: 6
Registriert: So, 14.06.2020 10:51

Re: Inhalt von Textfeld in Textfeld kopieren

Beitrag von Oldie63 »

Hallo zusammen

Ganz herzlichen Dank für euer promptes und kompetentes Feedback.
Hat mir echt weitergeholfen.
8)
Antworten