Access-o-Mania

Access-Forum => Tabelle/Abfrage => Thema gestartet von: Jan.T am August 20, 2020, 10:27:31

Titel: Suchfeld, Dropdown, Berechnetes Feld. etc
Beitrag von: Jan.T am August 20, 2020, 10:27:31
Hallo Access Experten.
Ich habe folgendes Problem; ich möchte ein Suchfeld und ein Dropdownmenü in meine Datenbank einbauen, dies habe ich nach folgendem Tutorial gemacht: https://www.youtube.com/watch?v=xq6pzJZqfRo Allerdings funktioniert das Dropdownmenü und Suchfeld nur mit einem Feld. Ich wollte euch meine Datenbank unten anhängen, allerdings ist diese 11MB in einer ZIP. und ich darf nur 3MB anhängen
Eine Tabelle ist Importiert und angepasst aus einem Warenwirtschaftssystem. Ich hätte aber gerne mein Suchfeld auch für das Feld "Beschreibung" und nicht nur für das Feld "Nr_" und bei dem Dropdownmenü hätte ich gerne mehrere Felder angezeigt, wenn ich das Dropdownmenü öffne


Außerdem möchte ich noch aus einer importierten Tabelle, Daten verändern und diese zurückschreiben ans Warenwirtschaftssystem

Meine Fragen sind also folgende:
1. Wie kann ich mehrere Felder in das Suchfeld integrieren?
2. Kann man das vielleicht noch besser machen?
3. Ist es möglich Daten aus der DB ins Warenwirtschaftssystem zu schreiben?


Ich bin absoluter Access-Anfänger, ich bitte also um leicht verständliche Lösungen.
Danke im Voraus an alle!
Titel: Re: Suchfeld, Dropdown, Berechnetes Feld. etc
Beitrag von: DF6GL am August 20, 2020, 11:29:00
Hallo und guten Morgen,


Das Video zeigt eigentlich alles, was Du brauchst, wobei ich allerdings mit manchen Vorgängen nicht ganz konform gehe.


Eine DB ist hier nicht hochgeladen, so dass sie nicht angesehen werden kann.

ZitatAllerdings funktioniert das Dropdownmenü und Suchfeld nur mit einem Feld

Wenn mehrere Felder in der Dropdown-Loste angezeigt werden sollen, so müssen diese Felder in der Select-Liste der Kombifeld-Abfrage aufgenommen werden und die Eigenschaften des Kombifeldes

Spaltenanzahl
Spaltenbreiten

angepasst werden.


Im Kombi-Textfeld selber wird allerdings das Feld angezeigt, das durch "Gebundene Spalte" definiert wird.

1.


 
ZitatIch hätte aber gerne mein Suchfeld auch für das Feld "Beschreibung" und nicht nur für das Feld "Nr_"

Wenn ich richtig interpretiere, willst Du mit dem Eingeben eines Textes in ein Suchfeld  mehrere Tabellenspalten filtern/durchsuchen.

(Das kann ich nur in Form eines SQL-Strings in einer VBA-Ereignisprozedur  ("Bei Änderung" des Suchfeldes) hier demonstrieren.)

Sub TxtSuchfeld_Change()
  Dim strSQL as String

  strSQl = " Select * from Tabelle1  Where Feld1 & "|" & Feld2 & "|" & Feld3  Like '*" & Me!TxtSuchfeld.Text & "*'"

  Me.Recordsource = strSQL

End Sub



2.
Besser machen ist relativ..  Die Formular-Verweise als Filter-Kriterium sind mir ein Gräuel. Die Anfrage kann man mit VBA wie oben gezeigt besser mit Parametern versehen. Zudem besteht die Möglichkeit, die Parameter-Liste in einem Abfrage-Objekt zu bemühen.

Das beste, was Du grundsätzlich machen kannst, ist, ein korrekte/passendes Tabellenkonzept mit Beziehungen und ref. Integritäten zu erstellen.  Damit steht und fällt der Erfolg der DB.

Makros als solche sollten (müssen) vermieden werden. VBA ist erste Wahl, auch wenn man sich damit auseinandersetzen muss. Das erleichtert die Entwicklung enorm, auch wenn das anfänglich nicht erkannt wird.

Eine Geradeaus-Ablaufsteuerung ist einer chaotischen (unlogischen, verquerten) vorzuziehen.


3.

Möglich ist vieles..  und hängt vom WaWi ab. Ich bezweifle aber, dass man so mir nichts dir nichts in das WaWi-Prog schreiben kann/darf.

Normalerweise gibt es eine genau definierte Importfunktionalität, mit der Daten z. B. aus einer CSV-Datei in die WaWi übernommen werden können.
Ich denke aber, solche Vorgänge hängen zumindest zur Zeit noch recht hoch.


Titel: Re: Suchfeld, Dropdown, Berechnetes Feld. etc
Beitrag von: Jan.T am August 20, 2020, 12:10:05
Erstmal danke für deine Antwort. Unten gehe ich auf deine Punkte ein

Zitat von: DF6GLEine DB ist hier nicht hochgeladen, so dass sie nicht angesehen werden kann.


Sorry, darf nur 3MB anhängen, die DB ist auch mit Dummy Datensätzen schon 225MB und in einer ZIP 11MB

Zitat von: DF6GLWenn mehrere Felder in der Dropdown-Loste angezeigt werden sollen, so müssen diese Felder in der Select-Liste der Kombifeld-Abfrage aufgenommen werden

Meinst du dort? Siehe Bild 1.

Zitat von: DF6GLWenn ich richtig interpretiere, willst Du mit dem Eingeben eines Textes in ein Suchfeld  mehrere Tabellenspalten filtern/durchsuchen.

(Das kann ich nur in Form eines SQL-Strings in einer VBA-Ereignisprozedur  ("Bei Änderung" des Suchfeldes) hier demonstrieren.)


Ich habe deinen Code genommen und entsprechend angepasst, allerdings kriege ich einen Compiler Fehler, siehe Bild2.


Zitat von: DF6GLMöglich ist vieles..  und hängt vom WaWi ab. Ich bezweifle aber, dass man so mir nichts dir nichts in das WaWi-Prog schreiben kann/darf.

Normalerweise gibt es eine genau definierte Importfunktionalität, mit der Daten z. B. aus einer CSV-Datei in die WaWi übernommen werden können.
Ich denke aber, solche Vorgänge hängen zumindest zur Zeit noch recht hoch.


WaWi basierend auf Microsoft Dynamics NAV, mit einem Microsoft SQL Server, der alle Daten beinhaltet. Keine Ahnung ob das da möglich ist. Das ist das was ich herausfinden soll. bzw programmieren soll.
Titel: Re: Suchfeld, Dropdown, Berechnetes Feld. etc
Beitrag von: DF6GL am August 20, 2020, 14:30:44
Hallo,



1)

Komprimiere/Repariere die DB zunächst und zippe sie dann.



2)

Nein, das ist die Abfrage für das Formular.. Schau bei den Kombifeldern in der Eigenschaft "Datensatzherkunft" nach.


3)

Ja sorry.. Das kommt davon, wenn man schnell mal Luftcode produziert...

Es sollte so lauten (Hochkommata statt Anführungsstriche):

strSQl = " Select * from Tabelle1  Where Feld1 & '|' & Feld2 & '|' & Feld3  Like '*" & Me!TxtSuchfeld.Text & "*'"


4)  Ist möglich, aber nur für diejenigen, die sich in der Struktur des Wawi-Prog auskennen und administrativen Zugriff auf den SQL-Server haben. Ich glaube nach wie vor, dass dies im Moment Deine Möglichkeiten übersteigt.
Titel: Re: Suchfeld, Dropdown, Berechnetes Feld. etc
Beitrag von: Jan.T am August 20, 2020, 15:15:20
Zitat von: DF6GL1)

Komprimiere/Repariere die DB zunächst und zippe sie dann.


Danke, hab sie hier angehangen.

Zitat von: DF6GLNein, das ist die Abfrage für das Formular.. Schau bei den Kombifeldern in der Eigenschaft "Datensatzherkunft" nach.

Das hat geklappt! Danke dir. Habs direkt auch in der Dummy DB geändert. Nur die Spaltenbreite passt nicht, aber das ist ja auch nur die Dummy DB.

Zitat von: DF6GLEs sollte so lauten (Hochkommata statt Anführungsstriche):

strSQl = " Select * from Tabelle1  Where Feld1 & '|' & Feld2 & '|' & Feld3  Like '*" & Me!TxtSuchfeld.Text & "*'"

Das hat noch nicht ganz geklappt, er wechselt jedesmal zum ersten DS wenn ich ein Zeichen eintippe.
Titel: Re: Suchfeld, Dropdown, Berechnetes Feld. etc
Beitrag von: Beaker s.a. am August 20, 2020, 15:45:22
Hallo,
@franz
ZitatIm Kombi-Textfeld selber wird allerdings das Feld angezeigt, das durch "Gebundene Spalte" definiert wird.
Sorry, kleine Korrektur, - es wird das erste Feld angezeigt dessen Spaltenbreite > 0 ist,
unabhängig von der Bindung.

@Jan.T
Beschäftige dich mit dem Zusammensetzen von Strings, das ist essentiell!
Im gezeigten SQL-String fehlen die " hinter Feld1
strSQl = " Select * from Tabelle1  Where Feld1" & '|' & Feld2 & '|' & Feld3 Like '*" & Me!TxtSuchfeld.Text & "*'"
nochmal @franz
Frage, ist das Trennzeichen hier überhaupt nötig?

gruss ekkehard
Titel: Re: Suchfeld, Dropdown, Berechnetes Feld. etc
Beitrag von: Jan.T am August 20, 2020, 16:21:36
Zitat von: Beaker s.a.Beschäftige dich mit dem Zusammensetzen von Strings, das ist essentiell!
Im gezeigten SQL-String fehlen die " hinter Feld1
strSQl = " Select * from Tabelle1  Where Feld1" & '|' & Feld2 & '|' & Feld3 Like '*" & Me!TxtSuchfeld.Text & "*'"

Hallo Beaker, bitte siehe das angehängte Bild, mach ich was falsch? Oder ist das der Code?
Titel: Re: Suchfeld, Dropdown, Berechnetes Feld. etc
Beitrag von: DF6GL am August 20, 2020, 17:44:19
Hallo,

ja, das stimmt mit der ausgeblendeten Spalte ..



strSQl = " Select * from Tabelle1  Where Feld1" & '|' & Feld2 & '|' & Feld3 Like '*" & Me!TxtSuchfeld.Text & "*'"
Der Gänsefuß hinter "Feld1"  ist falsch und gehört dort nicht hin!  Die Zusammenfassung der Feldinhalte geschieht innerhalb des (VBA-)Strings und ist Bestandteil des SQL-Statements.


Das Trennzeichen ist insofern nötig, als dass ansonsten evtl. sinnlose Texte gefunden werden, die am Ende des ersten Feldes beginnen und am Anfang des nächsten Feldes enden: Das Pipeline-Zeichen ist deshalb gewählt, weil es mit hoher Wahrscheinlichkeit nicht in den Daten vorkommt.

  Feld1                Feld2                Feld3
Boxkampf        Platzender Storch          Station


wird ohne Trennstriche mit "Kampfplatz" gefunden, mit Trennstrich nicht.


"Kampf|Platz" allerdings wird gefunden...

ZitatDas hat noch nicht ganz geklappt, er wechselt jedes Mal zum ersten DS wenn ich ein Zeichen eintippe.

Und wieso meinst Du, das sei falsch?

Titel: Re: Suchfeld, Dropdown, Berechnetes Feld. etc
Beitrag von: Jan.T am August 21, 2020, 07:33:13
Zitat von: DF6GL
Zitat von: undefinedDas hat noch nicht ganz geklappt, er wechselt jedes Mal zum ersten DS wenn ich ein Zeichen eintippe.

Und wieso meinst Du, das sei falsch?



Weil es viele DS gibt, die gleich beginnen zb. Artikelnummer 10000000 und 100000001, wenn ich diese in die Suche eintippe muss ich 8x zurück zum Suchfeld um zwischen den beiden zu differenzieren.
Titel: Re: Suchfeld, Dropdown, Berechnetes Feld. etc
Beitrag von: Beaker s.a. am August 21, 2020, 15:08:46
Hallo Franz,
Zitatist falsch und gehört dort nicht hin
Stimmt, logisch, - mal wieder Knoten im Gehirn.
@Jan.T
Bitte vergessen. Statt dessen lass dir den SQL_String mal im Direkt-
Fenster (Strg-G) ausgeben zur Kontrolle.

So betrachtet macht das Trennzeichen natürlich Sinn. Auch nicht selber
etwas weiter gedacht.

gruss ekkehard
Titel: Re: Suchfeld, Dropdown, Berechnetes Feld. etc
Beitrag von: DF6GL am August 21, 2020, 15:28:30
Hallo,

Zitatmuss ich 8x zurück zum Suchfeld um zwischen den beiden zu differenzieren
.


??

Titel: Re: Suchfeld, Dropdown, Berechnetes Feld. etc
Beitrag von: DF6GL am August 22, 2020, 14:34:36
Hallo,

anbei die Db.

Du solltest auf Requery verzichten und die Filter-Eigenschaft des Forms zur Einschränkung verwenden. Das Requery setzt den Fokus auf den Datensatz, der soll aber im Suchfeld verbleiben.
Titel: Re: Suchfeld, Dropdown, Berechnetes Feld. etc
Beitrag von: Jan.T am August 24, 2020, 07:36:10
Zitat von: DF6GL am August 21, 2020, 15:28:30Hallo,

Zitatmuss ich 8x zurück zum Suchfeld um zwischen den beiden zu differenzieren
.


??



Guten Morgen, das bedeutet, wenn ich zb. 10000000 eintippe zeigt mir das Formular ja schon bevor ich bei der letzten 0 bin alle anderen Artikel an die so beginnen, also zb. 10000001. Wenn ich deinen Code benutze springt er jedesmal zum Formular nach einer Eingabe in das Suchfeld. In der angehangenen DB aus #11 funktioniert das Suchfeld auch nicht. Ich kann nur ein Zeichen eintippen und es sucht nicht.

Edit: Wenn ich Copy&Paste in das Suchfeld, dann funktioniert es einwandfrei. Kann es nur nicht händisch eintippen
Titel: Re: Suchfeld, Dropdown, Berechnetes Feld. etc
Beitrag von: DF6GL am August 24, 2020, 09:02:50
Hallo,

dann erklär mal genauer, was Du eigentlich machen, bzw. WIE und WELCHE Felder Du durchsuchen willst.
In "meiner" (nach Deiner Vorlage modifizierten) Db werden diejenigen Ds sofort angezeigt, die in den  Feldern "Beschreibung" und "Nr_" die eingetippten Zeichen enthalten.


Wenn Du mehrere Felder mit dem gleichen Suchfeld durchsuchen willst, dann musst Du das Kriterium eben entspr. erweitern, so wie es vorher gezeigt wurde.

Titel: Re: Suchfeld, Dropdown, Berechnetes Feld. etc
Beitrag von: Jan.T am August 24, 2020, 09:48:49
Zitat von: DF6GL am August 24, 2020, 09:02:50dann erklär mal genauer, was Du eigentlich machen, bzw. WIE und WELCHE Felder Du durchsuchen willst.


ich möchte, wenn ich zb. in das Suchfeld 8864/64 eingebe, dass er das in Nr_ und Beschreibung sucht.

Also ich gebe x Zeichen ein, er filtert nur die zwei Felder.
Titel: Re: Suchfeld, Dropdown, Berechnetes Feld. etc
Beitrag von: DF6GL am August 24, 2020, 15:58:21
Hallo,
Zitatwenn ich zb. in das Suchfeld 8864/64 eingebe, dass er das in Nr_ und Beschreibung sucht.

und genau das tut die DB  oder sehe ich das falsch?



Das Beispiel mit "8864/64" ist eher ungeeignet, weil solch ein Text in "Nr_" gar nicht vorkommt..


Vielleicht haben wir auch unterschiedliche Vorstellung von "Suchen".

In der DB wird hier "gefiltert", d. h. DS werden entspr. den Kriterien bei der Anzeige eingeschränkt auf diejenigen, bei denen das Kriterium zutrifft.

Es wird nicht "gesucht" (wie etwa die Suchen/Ersetzen-Funktion es tut) und dabei die gefundenen Textteile in den Feldern nacheinander markiert. Dabei ändert sich die Anzahl der angezeigten DS nicht.


Wenn Du dies aber willst, dann benutz gleich diese Access-Suchen-Funktion im Ribbon-Band (Start/Suchen/Suchen).