Seite 1 von 1

Listenfeld SQL mit Wert aus Hauptformular filtern

Verfasst: Do, 10.09.2009 07:58
von ManfredU
Hallo,

ich habe ein Formular mit zwei Unterformularen (drei Ebenen). Im letzten Unterformular benutze ich ein Listenfeld, welches per SQL gefüllt. Das funktioniert auch, jedoch werden zu viele Daten angeboten. Ich möchte eine zusätzliche Bedingung einfügen, die mit einem Wert aus dem Hauptformular vergleicht, um die Auswahlmöglichkeiten in dem Listenfeld zu beschränken.

Gehts das? Wenn ja, wie?

Vielen Dank,
Manfred

Re: Listenfeld SQL mit Wert aus Hauptformular filtern

Verfasst: Fr, 11.09.2009 08:54
von ManfredU
Habe eine Lösung gefunden. Folgendes Makro habe ich im Hauptformular bei 'Nach dem Datensatzwechsel' aktiviert:

Code: Alles auswählen

REM  *****  BASIC  *****

Sub sql_where_in_listbox
  dim oForm, oList
  Dim new_sql(0) As string

  oForm=thiscomponent.drawpage.forms

 ' <cond> ist der Wert vom Hauptformular, der als Bedingung in der WHERE clause des Listenfeld-SQLs benutzt wird:
  cond=oForm.getByName("MainForm").getByName("fmtVeranstaltungsID").getCurrentValue
  
  if isEmpty( cond ) then  cond = "null" 
   
  oList=oForm.getByName("MainForm").getByName("SubForm").getByName("SubForm2").getByName("SubForm2_Grid").getByName("KontaktID")

 ' SQL statement für das Listenfeld
  new_sql(0) = "SELECT CONCAT( CONCAT( Nachname, ', ' ), Vorname ) AS NAME, Anmeldungen.KontaktID FROM Kontakte, Anmeldungen WHERE Kontakte.KontaktID = Anmeldungen.KontaktID and Anmeldungen.VeranstaltungsID = " & cond & " ORDER BY Kontakte.Vorname ASC" 

  oList.ListSource = new_sql
  'MsgBox oList.ListSource(0)

end Sub