Seite 1 von 1

Re: Kombinationsfeld eine Abfrage zuweisen mit Makro

Verfasst: Mi, 20.04.2011 18:49
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

Re: Kombinationsfeld eine Abfrage zuweisen mit Makro

Verfasst: Sa, 30.04.2011 20:47
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

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

Verfasst: Mo, 02.05.2011 20:37
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

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

Verfasst: Di, 03.05.2011 21:05
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

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

Verfasst: Di, 21.02.2012 20:11
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

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

Verfasst: Mi, 22.02.2012 17:40
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

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

Verfasst: Do, 02.10.2014 18:00
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?

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

Verfasst: Do, 02.10.2014 23:59
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.

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

Verfasst: Fr, 03.10.2014 21:44
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