wildcard als Standartwert für eine Combobox

Moderator: ModerationP

wildcard als Standartwert für eine Combobox

Beitragvon snoopy_1959 » 29. Apr 2021, 09:36

Hallo Zusammen
ich suche eine Möglichkeit, einer Combox den Standartwert mit einer Wildcard zu setzen.
Gerne möchte ich, dass beim öffnen des Formulars alle Datensätze des Formulars angezeigt werden und erst nach einer bewussten Selektion, ein bestimmter Datensatz gewählt wird.

Code: Alles auswählen
Forms(Arbeitsformular).cboNewEmployeeSearch.Value = "*"


Weiss jemand wie das geht?


Danke

Snoopy
Benutzeravatar
snoopy_1959
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 438
Registriert: 18. Jun 2014, 06:20
Wohnort: Müllheim Dorf

Re: wildcard als Standartwert für eine Combobox

Beitragvon uwms » 29. Apr 2021, 10:33

Hi,

das sollte mit entsprechenden Werten in der combobox gehen. Wenn dort z.B. die Werte '*';'Meier';'Müller' enthalten sind, kann man über die Filter Eigenschaft den erwünschten Effekt erreichen. Im dem Ereignis "NachAktualisierung" sollte da es dann so aussehen (ungeprüft):

Code: Alles auswählen
Me.Filter = "[employee] like '" & me.cboNewEmployeeSearch.Value & "'"
Me.FilterOn = True


Grüße
Uwe
uwms
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 308
Registriert: 20. Nov 2015, 14:44

Re: wildcard als Standartwert für eine Combobox

Beitragvon andyfau » 29. Apr 2021, 10:59

Hallo,
Access bietet auch ganz ohne Programmierung über die rechte Maustaste im passenden Feld umfangreiche Filteroptionen. Das nur mal so am Rande erwähnt :-)
Beste Grüße
Andreas
andyfau
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 24
Registriert: 17. Mär 2021, 21:45

Re: wildcard als Standartwert für eine Combobox

Beitragvon Bitsqueezer » 29. Apr 2021, 11:31

Hallo,

da die Werte in der Kombobox vermutlich aus einer Abfrage kommen, mußt Du der Abfrage nur einen "künstlichen" Wert hinzufügen, damit er angezeigt wird.

Code: Alles auswählen
SELECT 0,'- Alle -' AS Employee_Name
UNION ALL
SELECT ID_Employee, Employee_Name
FROM DeineTabelle
ORDER BY EMployee_Name


Durch das vorangestellte "-" steht der Eintrag dann in der Kombobox i.d.R. ganz oben.

Im "AfterUpdate"-Event, bei dem Du den Filter definierst, kannst Du dann den Wert auf ID 0 testen, entsprechend den Filter deaktivieren.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8276
Registriert: 21. Jun 2007, 12:17

Re: wildcard als Standartwert für eine Combobox

Beitragvon snoopy_1959 » 29. Apr 2021, 12:44

Hallo Zusammen,
bei mir funktionieren beide Varianten nicht.
Mag sein das ich was falsch mache
die Werte in der Combobox kommen aus einem Query

Gesucht werden alle Datensätze aus
Code: Alles auswählen
SELECT dbo_tbl_Employee.ID_Employee, dbo_tbl_Employee.Emp_PersNr, dbo_tbl_Employee.Emp_Kurzzeichen, dbo_tbl_Employee.Emp_Name, dbo_tbl_Employee.Emp_PreName, dbo_tbl_Employee.Emp_Fullname, dbo_tbl_Employee.fk_Department, dbo_tbl_Employee.fk_HeadOfDepartment, dbo_tbl_Employee.fk_OfficeLocation, dbo_tbl_Department.Kostenstelle, dbo_tbl_Employee.Emp_Kosenstelle_Nr,


was muss nun hinter
Code: Alles auswählen
Forms(Arbeitsformular).cboNewEmployeeSearch.Value =


Gruss Snoopy
Benutzeravatar
snoopy_1959
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 438
Registriert: 18. Jun 2014, 06:20
Wohnort: Müllheim Dorf

Re: wildcard als Standartwert für eine Combobox

Beitragvon Bitsqueezer » 29. Apr 2021, 13:05

Hallo,

wobei ich das AS vergessen habe, der Alias in einer UNION-Query muß immer in der ersten Abfrage stehen:
Code: Alles auswählen
SELECT 0 AS ID_Employee,'- Alle -' AS Employee_Name
UNION ALL
SELECT ID_Employee, Employee_Name
FROM DeineTabelle
ORDER BY EMployee_Name


Mit "funktioniert nicht" kann keiner was anfangen... :roll: wann begreift das endlich mal jeder? Gefühlte 10 Millionen mal von allen Helfern in allen Foren geschrieben.

Und Value hilft Dir nicht weiter, Du mußt natürlich die Abfrage der Kombobox anpassen, wie demonstriert. Du solltest dann auch mal die Abfrage der Kombobox zeigen.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8276
Registriert: 21. Jun 2007, 12:17

Re: wildcard als Standartwert für eine Combobox

Beitragvon snoopy_1959 » 29. Apr 2021, 14:21

Hallo Bitsequenzer
bitte schone deine Nerven.

Das mag sein, dass meine Aussage wenig qualifiziert ist, deine Antwort war nun auch nicht sehr genau, wo das was eingepflegt werden muss und somit sollte keiner auf den Anderen zeigen.

nun hier das SQL der Combobox.
Code: Alles auswählen
SELECT dbo_tbl_Employee.ID_Employee, dbo_tbl_Employee.Emp_Fullname, dbo_tbl_Employee.Emp_Kurzzeichen
FROM dbo_tbl_Employee
WHERE (((dbo_tbl_Employee.fk_Department) Is Null) AND ((dbo_tbl_Employee.fk_HeadOfDepartment) Is Null) AND ((dbo_tbl_Employee.Emp_Kostenstelle) Is Null) AND ((dbo_tbl_Employee.fk_equiptment) Is Null) AND ((dbo_tbl_Employee.fk_OfficeLocation) Is Not Null) AND ((dbo_tbl_Employee.Emp_aktiv)=True))
ORDER BY dbo_tbl_Employee.[Emp_Fullname];


Lieber Gruss

Snoopy
Benutzeravatar
snoopy_1959
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 438
Registriert: 18. Jun 2014, 06:20
Wohnort: Müllheim Dorf

Re: wildcard als Standartwert für eine Combobox

Beitragvon Bitsqueezer » 29. Apr 2021, 15:42

Hallo,

äähh...doch?!

Ich habe ganz klar geschrieben, daß die Abfrage in die Kombobox gehört, was war daran nicht zu verstehen?

Und die Abfrage an Deine anzupassen, wäre jetzt wohl auch in Eigenarbeit möglich gewesen... :roll:
Hier die Anpassung:
Code: Alles auswählen
SELECT TOP 1 0 AS ID_Employee
      ,' - Alle - ' AS Emp_Fullname
      ,'' AS Emp_Kurzzeichen
FROM dbo_tbl_Employee AS E1
UNION ALL     
SELECT E.ID_Employee
      ,E.Emp_Fullname
      ,E.Emp_Kurzzeichen
FROM dbo_tbl_Employee AS E
WHERE E.fk_Department       IS NULL
AND   E.fk_HeadOfDepartment IS NULL
AND   E.Emp_Kostenstelle    IS NULL
AND   E.fk_equiptment       IS NULL
AND   E.fk_OfficeLocation   IS NOT NULL
AND   E.Emp_aktiv = True      
ORDER BY E.Emp_Fullname;


Wobei ich hier noch die TOP 1-Geschichte eingefügt habe, hatte nicht bedacht, daß in Access SQL leider IMMER die Angabe einer Tabelle nötig ist. In SQL Server hätte das so wie oben funktioniert.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8276
Registriert: 21. Jun 2007, 12:17

Re: wildcard als Standartwert für eine Combobox

Beitragvon snoopy_1959 » 30. Apr 2021, 06:35

Guten Morgen Christian,
danke für das SQL Statement.
Der Order by funktioniert so nicht.
Das 2. Select mit dem Order by läuft gut, in Kombination mit dem Union ALL läuft es bei mir nicht

Nun noch zum Effekt.
So geht das Formular auf, jedoch ohne einen Datensatz.
Wenn ich den Standartwert auf
Code: Alles auswählen
=" - Alle - "
setze wird zwar oben alle angezeigt aber im Formular nichts

Übrigens ich will dich nicht angreifen. Von Union Abfragen verstehe ich einfach nichts auch wenn ich gute T-SQL Basiskenntnisse habe.

freundliche Grüsse

Snoopy
Benutzeravatar
snoopy_1959
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 438
Registriert: 18. Jun 2014, 06:20
Wohnort: Müllheim Dorf

Re: wildcard als Standartwert für eine Combobox

Beitragvon uwms » 30. Apr 2021, 07:19

Hi snoopy,

wie sieht denn dein AfterUpdate Event aus?

Grüße
Uwe
uwms
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 308
Registriert: 20. Nov 2015, 14:44

Re: wildcard als Standartwert für eine Combobox

Beitragvon Bitsqueezer » 30. Apr 2021, 08:32

Hallo,

so ist das eben, wenn man "Luftcode" schreibt.

Ich wette, Access hat dazu eine Fehlermeldung ausgegeben, die bestimmt nicht "funktioniert nicht" lautete - und sogar die Stelle markiert.

Nimm mal das "E." aus dem Order By raus.

Von sich aus wird mit der Kombobox auch nichts passieren, was erwartest Du? Daß Dein Formular irgendwas mit "Alle" anfangen kann?
Der Wert, der in der Kombobox bei "Alle" hinterlegt wird, ist 0. Und im AfterUpdate-Event der Kombobox mußt Du dann Dein Formular in Abhängigkeit vom Wert der Kombobox entsprechend filtern oder die RecordSource anpassen. Das sollte eigentlich schon der Fall sein, Du mußt es nur für den Wert 0 abfangen und entsprechend den Filter abschalten. Hatte ich aber bereits oben geschrieben...

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8276
Registriert: 21. Jun 2007, 12:17

Re: wildcard als Standartwert für eine Combobox

Beitragvon snoopy_1959 » 30. Apr 2021, 08:36

Hallo Christian
mein After Update von der Combobox sieht so aus
Code: Alles auswählen
Private Sub cboNewEmployeeSearch_AfterUpdate()
    Me.Requery
End Sub


Gruss

Snoopy
Benutzeravatar
snoopy_1959
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 438
Registriert: 18. Jun 2014, 06:20
Wohnort: Müllheim Dorf

Re: wildcard als Standartwert für eine Combobox

Beitragvon Bitsqueezer » 30. Apr 2021, 11:32

Hallo,

und wie mag dann wohl die Abfrage des Formulares aussehen? HIER wird ja offensichtlich nichts mit der Kombobox gemacht...

Dort steht vermutlich
Code: Alles auswählen
WHERE ID_Employee = Forms!DeinFormular!cboNewEmployeeSearch


Wenn Du das also nicht per VBA machen willst, dann so:

Code: Alles auswählen
WHERE ID_Employee = IIf(Forms!DeinFormular!cboNewEmployeeSearch = 0, ID_Employee, Forms!DeinFormular!cboNewEmployeeSearch)


Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8276
Registriert: 21. Jun 2007, 12:17

Re: wildcard als Standartwert für eine Combobox

Beitragvon Gast » 30. Apr 2021, 12:54

Hallo Christian,

Als datenquelle für mein Formular habe ich dies hinterlegt.

Code: Alles auswählen
SELECT dbo_tbl_Employee.ID_Employee, dbo_tbl_Employee.Emp_PersNr, dbo_tbl_Employee.Emp_Kurzzeichen, dbo_tbl_Employee.Emp_Name, dbo_tbl_Employee.Emp_PreName, dbo_tbl_Employee.Emp_Fullname, dbo_tbl_Employee.fk_Department, dbo_tbl_Employee.fk_HeadOfDepartment, dbo_tbl_Employee.fk_OfficeLocation, dbo_tbl_Department.Kostenstelle, dbo_tbl_Employee.Emp_Kosenstelle_Nr, dbo_tbl_Employee.Emp_Buchungskreis, dbo_tbl_Employee.fk_equiptment, dbo_tbl_Employee.fk_Soft_Empl, dbo_tbl_Employee.Emp_CreUser, dbo_tbl_Employee.Emp_CreDat, dbo_tbl_Employee.Emp_MutUser, dbo_tbl_Employee.Emp_MutDat, dbo_tbl_Employee.Emp_gueltigVon, dbo_tbl_Employee.Emp_gueltigBis, dbo_tbl_Employee.Emp_aktiv, dbo_tbl_Employee.Emp_Bemerkungen, dbo_tbl_Employee.Emp_TimeStamp, dbo_tbl_Employee.fk_PhoneNumber, dbo_tbl_Employee.fk_MobileNummer FROM dbo_tbl_Employee LEFT JOIN dbo_tbl_Department ON dbo_tbl_Employee.fk_Department = dbo_tbl_Department.ID_Department WHERE (((dbo_tbl_Employee.ID_Employee)=[Formulare]![frm_Employee_record]![cboNewEmployeeSearch]) AND ((dbo_tbl_Employee.fk_Department) Is Null) AND ((dbo_tbl_Employee.fk_HeadOfDepartment) Is Null) AND ((dbo_tbl_Employee.fk_OfficeLocation) Is Not Null) AND ((dbo_tbl_Employee.fk_equiptment) Is Null) AND ((dbo_tbl_Employee.Emp_aktiv)=True) AND ((dbo_tbl_Employee.Emp_Kostenstelle) Is Null)) ORDER BY dbo_tbl_Employee.Emp_Name, dbo_tbl_Employee.Emp_PreName, dbo_tbl_Employee.Emp_Fullname;


Wo gehört denn
Code: Alles auswählen
WHERE ID_Employee = IIf(Forms!DeinFormular!cboNewEmployeeSearch = 0, ID_Employee, Forms!DeinFormular!cboNewEmployeeSearch)

hin?

wie und wo kann ich das in VBA lösen? bin gerne lernbereit.

Gruss

Snoopy
Gast
 

Re: wildcard als Standartwert für eine Combobox

Beitragvon Bitsqueezer » 30. Apr 2021, 14:35

Hallo,

hast Du nicht gesagt, Du kennst wenigstens SQL grundlegend?

SELECT dbo_tbl_Employee.ID_Employee, dbo_tbl_Employee.Emp_PersNr, dbo_tbl_Employee.Emp_Kurzzeichen, dbo_tbl_Employee.Emp_Name, dbo_tbl_Employee.Emp_PreName, dbo_tbl_Employee.Emp_Fullname, dbo_tbl_Employee.fk_Department, dbo_tbl_Employee.fk_HeadOfDepartment, dbo_tbl_Employee.fk_OfficeLocation, dbo_tbl_Department.Kostenstelle, dbo_tbl_Employee.Emp_Kosenstelle_Nr, dbo_tbl_Employee.Emp_Buchungskreis, dbo_tbl_Employee.fk_equiptment, dbo_tbl_Employee.fk_Soft_Empl, dbo_tbl_Employee.Emp_CreUser, dbo_tbl_Employee.Emp_CreDat, dbo_tbl_Employee.Emp_MutUser, dbo_tbl_Employee.Emp_MutDat, dbo_tbl_Employee.Emp_gueltigVon, dbo_tbl_Employee.Emp_gueltigBis, dbo_tbl_Employee.Emp_aktiv, dbo_tbl_Employee.Emp_Bemerkungen, dbo_tbl_Employee.Emp_TimeStamp, dbo_tbl_Employee.fk_PhoneNumber, dbo_tbl_Employee.fk_MobileNummer FROM dbo_tbl_Employee LEFT JOIN dbo_tbl_Department ON dbo_tbl_Employee.fk_Department = dbo_tbl_Department.ID_Department WHERE (((dbo_tbl_Employee.ID_Employee)=[Formulare]![frm_Employee_record]![cboNewEmployeeSearch]) AND ((dbo_tbl_Employee.fk_Department) Is Null) AND ((dbo_tbl_Employee.fk_HeadOfDepartment) Is Null) AND ((dbo_tbl_Employee.fk_OfficeLocation) Is Not Null) AND ((dbo_tbl_Employee.fk_equiptment) Is Null) AND ((dbo_tbl_Employee.Emp_aktiv)=True) AND ((dbo_tbl_Employee.Emp_Kostenstelle) Is Null)) ORDER BY dbo_tbl_Employee.Emp_Name, dbo_tbl_Employee.Emp_PreName, dbo_tbl_Employee.Emp_Fullname;

Ist also genau so, wie ich vermutet habe. Und jetzt sollte es zu dem "wohin" wohl keine Frage mehr geben.....

In VBA könntest Du das ebenso lösen, durch Setzen eines Filters oder Erstellen einer RecordSource als SQL-String, aber ich fürchte, damit kannst Du noch weniger anfangen.
Leute, es hilft nichts: Wenn man eine DB programmieren will, muß man SQL lernen und ebenso VBA und zuletzt für Access das Access Objektmodell (mind. den Teil, den man dauernd braucht). Es ist jetzt nicht so, daß das hier ein Problem wäre, was hier zum ersten Mal auftritt. Das ist Standard, Behandlung von Komboboxen als Suchmethode, darüber gibt es etliche Artikel, Lösungen, Forenbeiträge, Dokumentationen - aber das hier hat mit "Lernbereitschaft" nicht viel zu tun, mehr mit "kann mir einer meinen Code schreiben und vielleicht bemühe ich mich danach, es zu verstehen - oder belasse es bei Copy/Paste, frage lieber dann nochmal...".

Du machst Dir nicht mal die Mühe, den WHERE-String zu verstehen und mit nur 5% SQL Wissen sollte man bereits gelernt haben, wo man ein WHERE einsetzt...
Zumal ich nach der Abfrage gefragt habe, geschrieben habe, was dort vermutlich steht (und tatsächlich steht) und was stattdessen dahin soll.

Naja, Du hast jetzt alle Informationen, mach was draus.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8276
Registriert: 21. Jun 2007, 12:17


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste