BASE: Form-Kombinationsfeld mit Abfrage füllen

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

Moderator: Moderatoren

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

Re: Kombinationsfeld eine Abfrage zuweisen mit Makro

Beitrag von F3K Total »

Hallo,
ich gehe mal davon aus, dass Du die "Liste" des Kombinationsfeldes über eine Abfrage füllen willst!?
Das geht z.B. so:

Code: Alles auswählen

oDoc = ThisComponent
oForm = oDoc.drawpage.forms.getbyname("Name des Formulares")
oCombobox = oForm.getbyname("Name des Kombinationsfeldes")
oListsource = "SELECT ""Spalte"" FROM ""Tabelle"""
oCombobox.ListSource = oListsource
oCombobox.refresh
Gruß R
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Kombinationsfeld eine Abfrage zuweisen mit Makro

Beitrag von F3K Total »

Hallo Arwin,
das geht z.B. dann, wenn Du das folgende Makro mit dem Ereignis des Kombinationsfeldes "Text modifiziert" verknüpfst.

Code: Alles auswählen

sub read_combo (event)
oCombo=event.source.model
oComboWert=oCombo.currentValue
msgbox oComboWert
end sub
Gruß R
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: BASE: Form-Kombinationsfeld mit Abfrage füllen

Beitrag von F3K Total »

Hi Arwin,
im Prinzip hast Du den Wert ja schon in dem Augenblick, in dem Du ihn auswählst, in Deinem Makro zur Verfügung.
Wieso willst Du dann noch einen zusätzlichen Button erzeugen?
Kannst Du nicht die "SUB read_combo" so erweitern, wie Du möchtest, und "oComboWert" darin weiterverarbeiten?

Gruß R
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: BASE: Form-Kombinationsfeld mit Abfrage füllen

Beitrag von F3K Total »

Hallo arwin,
doch, das geht schon.
Dann kannst Du aber nicht über "event" gehen.

Anbei eine kleine Beispieldatei, in der das folgende Makro "Felder_auslesen" dem Button zugeordnet ist.

Code: Alles auswählen

Sub Felder_auslesen
oform=ThisComponent.drawpage.forms.getbyname("MainForm")'auf Formular "MainForm" zugreifen
oCombiName=oform.getbyname("CombiName")'auf Kontrollfeld "CombiName" zugreifen
oCombiGeschlecht=oform.getbyname("CombiGeschlecht")'auf Kontrollfeld "CombiGeschlecht" zugreifen
oCombiLand=oform.getbyname("CombiLand")'auf Kontrollfeld "CombiLand" zugreifen

'gewählten Eintrag, genau wie vorher, mit der Eigenschaft .currentValue auslesen
oName=oCombiName.currentValue
oGeschlecht=oCombiGeschlecht.currentValue
oLand=oCombiLand.currentValue
msgbox ("Du hast folgende Werte gewählt:"+chr(13)+""+chr(13)+"Name: "+oName+" | Geschlecht: "+oGeschlecht+" | Land: "+oLand,64,"Auswahl")
End Sub
Viel Erfolg damit
Gruß R
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: BASE: Form-Kombinationsfeld mit Abfrage füllen

Beitrag von F3K Total »

Hallo,
was willst Du mit dem "SUM" erreichen?
Wenn Du diese Abfrage mal in ein Abfragefenster eingibst, solltest Du zwei Werte herausbekommen, nämlich die Summen der beiden Spalten aus allen Werten die dem Datumskriterium entsprechen.
Vermutlich möchtest Du nur die Werte der Spalte1 und Spalte2 je Zeile addieren?
Dann lautet das SQL-Statement:

Code: Alles auswählen

SELECT  "Spalte 1"+"Spalte 2" FROM "Tabelle" WHERE "Spalte3" > '2012-02-20'
Edit: der Select Befehl im Makro ist immer ein String, wenn du im String das Datum eingeben willst dann auch als String. Gänsefüßchen im Makro doppelt.
Beispiel:

Code: Alles auswählen

dim sDate1 as string
dim sDate2 as string
sDate1="2012-01-31"
sDate2="2012-02-29"
ssql(0) = "SELECT SUM ( ""Spalte 1"") + SUM( ""Spalte 2"") FROM ""Tabelle"" WHERE ""Spalte3"" > '" & sDate1 & "' AND ""Spalte3"" < '" & sDate2 & "'"
Gruß R
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: BASE: Form-Kombinationsfeld mit Abfrage füllen

Beitrag von F3K Total »

Hallo Cardi,
Du kannst das Datum im Makro in einen String verwandeln:
Zum Beispiel so:
Angenommen dein Datumsfeld heißt dat1 und befindet sich auf MainForm

Code: Alles auswählen

Dim sDate as string
sdate = thiscomponent.drawpage.forms.MainForm.dat1.Date' Ergebnis z.B. 20120222
sdate = left(sdate,4)&"-"&mid(sdate,5,2)&"-"&right(sdate,2) 'Ergebnis 2012-02-22 als string, so wie Du es für das SQL-Statement benötigst.
Gruß R
TobiS
Beiträge: 5
Registriert: Mi, 01.10.2014 13:35

Re: BASE: Form-Kombinationsfeld mit Abfrage füllen

Beitrag von TobiS »

Hallo ich habe folgenden Code:

Code: Alles auswählen

Sub SendMail
   Dim oDoc, oForm as Object
   Dim betr,  sMail_Adr, sMail_Anr as String
   oDoc = thisComponent
   oForm = oDoc.drawpage.forms.getbyindex(0)
   oSubForm = oForm.getByName("F_Kontakte").getByName("Kontakte")
   sMail_Adr = oSubForm.getByName("txtEmail").Text
   sMail_betr = oForm.getByName("txtBetreff").Text
   sMail_Anr = oSubForm.getByName("listAnrede").????????????
   sMail_Inh = oForm.getByName("txtInhalt").Text
Wie kann ich den aktuellen Wert eines Listenfeldes übermitteln?
Was trage ich nach dem . ein?
TobiS
Beiträge: 5
Registriert: Mi, 01.10.2014 13:35

Re: BASE: Form-Kombinationsfeld mit Abfrage füllen

Beitrag von TobiS »

Hier nochmal etwas anders ausprobiert.

Code: Alles auswählen

Sub SendMail
   Dim oDoc, oForm as Object
   Dim betr,  sMail_Adr, sMail_Anr, hfea as String
   oDoc = thisComponent
   oForm = oDoc.drawpage.forms.getbyindex(0)
   oSubForm = oForm.getByName("F_Kontakte").getByName("Kontakte")
   sMail_Adr = oSubForm.getByName("txtEmail").Text
   sMail_betr = oForm.getByName("txtBetreff").Text
   sMail_Anr = oSubForm.getByName("txtAnrede").Text
   sMail_Inh = oForm.getByName("txtInhalt").Text
   oCombobox = oSubForm.getbyname("combAnrede")
   oCombobox.refresh
   oListsource = "SELECT ""Anrede"", ""ID"" FROM ""Anrede"""
   oCombobox.ListSource = oListsource
   oCombobox.refresh
   oComboWert=oCombobox.currentValue
   msgbox oComboWert
	
   if oComboWert = 1 then
   sMail_Gen = "Herr"
   else
   sMail_Gen = "Frau"
   end if
   
   if sMail_Adr = "" then
   msgbox "Keine Mailadresse vorhanden!" & CHR(13) & "Der Vorgang wird abgebrochen!" , 48, "Mail senden"
   Exit Sub
   end if

   'attN = "C:\Ordner\" & "Test.pdf" 'Anhang beifügen
   attA = ConvertToURL (attN)
   Empf = (sMail_Adr)
   betr = (sMail_betr) 'Betreffzeile
   anrT = ("Hallo "+ sMail_Gen + " " + sMail_Anr + "&#44;" & CHR(10) & CHR(10) + sMail_Inh)
   shell("C:\Program Files\Mozilla Thunderbird\thunderbird.exe",1,"-compose to=" + empf +",attachment=" + attA + ",subject=" + betr  + ",body=" + anrT)
End Sub
So, dieser Code funktioniert schon ganz gut.
Nun habe ich eine Tabelle "Anrede" mit den Spalten "ID" und "Anrede".
Der Inhalt der Tabelle ist:
ID Anrede
0 Frau
1 Herr

In meiner Tabelle Kontakte gibt es eine Spalte "Anrede".
Dort werden die IDs 0 oder 1 vergeben.
Mit einem Listenfeld kann ich nun in meinem
Formular "Herr" oder "Frau" auswählen.

Jetzt habe ich ein Kombinationsfeld, der mir die 1 oder 0 anzeigt.
Könnte ich das eventuell auch direkt als "Herr" oder "Frau" anzeigen lassen,
oder funktioniert das mit if else.

Bei mir funktioniert es leider noch nicht.

Code: Alles auswählen

if oComboWert = 1 then
   sMail_Gen = "Herr"
   else
   sMail_Gen = "Frau"
   end if
Es erscheint immer "Frau" in der Email.
TobiS
Beiträge: 5
Registriert: Mi, 01.10.2014 13:35

Re: BASE: Form-Kombinationsfeld mit Abfrage füllen

Beitrag von TobiS »

Jetzt funktioniert es.

Code: Alles auswählen

Sub SendMail
   Dim oDoc, oForm as Object
   Dim betr,  sMail_Adr, sMail_Anr, hfea as String
   oDoc = thisComponent
   oForm = oDoc.drawpage.forms.getbyindex(0)
   oSubForm = oForm.getByName("F_Kontakte").getByName("Kontakte")
   sMail_Adr = oSubForm.getByName("txtEmail").Text
   sMail_betr = oForm.getByName("txtBetreff").Text
   sMail_Anr = oSubForm.getByName("txtAnrede").Text
   sMail_Inh = oForm.getByName("txtInhalt").Text
   sMail_nix = oSubForm.getByName("listAnrede")
   oCombobox = oSubForm.getbyname("combAnrede")
   oCombobox.refresh
   oListsource = "SELECT ""ID"" FROM ""Anrede"""
   oCombobox.ListSource = oListsource
   oCombobox.refresh
   oComboWert=oCombobox.currentValue
   
   if oComboWert = "" then
   sMail_Gen = ""
   elseif oComboWert = "0" then
   sMail_Gen = "Frau "
   elseif oComboWert = "1" then
   sMail_Gen = "Herr "
   else
   sMail_Gen = "Falsche Eingabe"
   end if
   
   'attN = "C:\Ordner\" & "Test.pdf" 'Anhang beifügen
   attA = ConvertToURL (attN)
   Empf = (sMail_Adr)
   betr = (sMail_betr) 'Betreffzeile
   'anrT= "Sehr geehrte Damen und Herren"
   anrT = ("Hallo "+ sMail_Gen + sMail_Anr + "&#44;" + " " + "<br><br>" + sMail_Inh)
   shell("C:\Program Files\Mozilla Thunderbird\thunderbird.exe",1,"-compose to=" + empf +",attachment=" + attA + ",subject=" + betr  + ",body=" + anrT)
End Sub
Antworten