Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Compil am August 23, 2006, 12:01:32

Titel: Eine Art Suchfunktion erstellen
Beitrag von: Compil am August 23, 2006, 12:01:32
Hallo,

ich versuche gerade in einem Formular ne Art Suchfunktion zu erstellen, nur fehlt mir da der Ansatz wie man das machen könnente. Ich habe ein Formular EnterContensForm in dem der Benutzer verschiedene Sachen in mehrere Textfelder eingeben kann, wenn das geschehen ist werden die Daten in die Tabelle tblContents geschrieben. Die Tabelle sieht ungefähr so aus:

Kunde                  Kundenummer          Stadt               Straße                  PLZ               Land
Max Mustermann    123456789              München          Musterstraße         12345            Deutschland
Peter Müller           987654321              Paris               Musterweg             659556          Frankreich
Maria Müller           546446466              Düsseldorf        Karlweg                 54646           Deutschland

Nun habe ich ein weiteres Formular SearchEditContentsForm, wo diese besagt Suchfunktion rein soll.
D.h. In diesem Formular sind genau die gleichen Textfelder vorhanden wie im Formular EnterContensForm, bloß das hier eine Ausgabe in den Textfeldern erfolgen soll. Dann gibt es noch 3 Kombinationsfelder, dass erste heisst Kunde, das zweite Stadt und das dritte Land. Wählt der Benutzer im Kombifeld Stadt München und im Kombifeld Land Deutschland, soll im Kombifeld Kunde nur der Inhalt Max Mustermann stehen und dessen Kundennummer und die anderen Angaben sollen dann in den Textfeldern erscheinen.
Wählt der Benutzer im Kombifeld Stadt und Land nichts aus sollen im Kombifeld Kunden dementsprechend alle Kunden zur Auswahl stehen, wählt man hier irgend einen Kunden aus werden seine Angaben in den Textfeldern angezeigt.

Ich hoffe ich habe mein Problem verständlich beschrieben und es kann mir jemand weiter helfen.

Gruß.

Compil



Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: oma am August 23, 2006, 12:08:44
Hierzu gibt es auf diversen Seiten verschiedene Beispiele, wie z.B


http://www.dbwiki.de/upload/AccSampleSuchen.zip (http://www.dbwiki.de/upload/AccSampleSuchen.zip)

Gruß Oma
Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: Compil am August 23, 2006, 14:00:09
Danke. Genau sowas hatte ich gesucht! Das ist ja echt klasse!

Vielen Dank!

Gruß.

Compil
Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: boehnli01 am März 22, 2011, 13:57:06
Hallo zusammen,

habe diese suchfunktion in meiner DB eingebaut und das funktioniert super.
http://www.dbwiki.de/upload/AccSampleSuchen.zip (http://www.dbwiki.de/upload/AccSampleSuchen.zip)

Nun bastle ich schon seit einer Ewigkeit an einem Excell export rum und schaffe es einfach nicht. 

Und zwar möchte das Resultat aus der Suche auf Excell exportieren, bzw das Excell direkt mit dem Resultat öffnet. Kann mir da jemand helfen ?

Danke und gruss
Cédric
Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: database am März 22, 2011, 16:45:26
Hallo,

deine Frage ist aber schon ziemlich OT!

Lese mal in der OH nach - Thema 'Transferspreadsheet'

oder vllt auch hier:

http://www.dbwiki.de/upload/AccSampleAccessToExcel.zip (http://www.dbwiki.de/upload/AccSampleAccessToExcel.zip)

oder benutze bitte die Forumssuche, das Thema wurde schon zig-mal behandelt.

HTH



Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: boehnli01 am März 23, 2011, 21:45:33
Hallo,

Zuerst mal sorry, meine Frage war nicht spezifisch genug. Wie ein Transferspreadsheet  funktioniert weis ich, aber ich schaffe es nicht die Suchfunktion mit der dem Excelltransfer zu kombinieren, bzw möchte ich ja nur das Resultat exportieren. Ich poste hier mal die Prozedur. Vielleicht kann ja jemand helfen. Und ja, ich bin ein Anfänger und es felhlt mir viel knowhow auf dem Thema. Danke fürs Verständniss.

Dim Krit As String, SQL As String
  Krit = ""
  If Not IsNull(Me!PurchDoc) Then Krit = Krit & " AND PurchDoc LIKE '" & Me!PurchDoc & "*'"
  If Not IsNull(Me!Purrequ) Then Krit = Krit & " AND Purrequ LIKE '" & Me!Purrequ & "*'"
  If Not IsNull(Me!Urgency) Then Krit = Krit & " AND Urgency LIKE '" & Me!Urgency & "*'"
  If Not IsNull(Me!MRP) Then Krit = Krit & " AND MRP LIKE '" & Me!MRP & "*'"
  If Not IsNull(Me!Mat) Then Krit = Krit & " AND Mat LIKE '" & Me!Mat & "*'"
  If Not IsNull(Me!Pending) Then Krit = Krit & " AND Pending = " & IIf(Me!Pending, "True", "False")
  If Not IsNull(Me!Deliveryvon) Then Krit = Krit & " AND Dlvdatenew >= #" & Format(Me!Deliveryvon, "yyyy-mm-dd") & "#"
  If Not IsNull(Me!Deliverybis) Then Krit = Krit & " AND Dlvdatenew <= #" & Format(Me!Deliverybis, "yyyy-mm-dd") & "#"
  If Not IsNull(Me!Docdatevon) Then Krit = Krit & " AND Docdate >= #" & Format(Me!Docdatevon, "yyyy-mm-dd") & "#"
  If Not IsNull(Me!Docdatebis) Then Krit = Krit & " AND Docdate <= #" & Format(Me!Docdatebis, "yyyy-mm-dd") & "#"
  If Not IsNull(Me!Delete) Then Krit = Krit & " AND Delete LIKE '" & Me!Delete & "*'"
  If Me.Open = True Then Krit = Krit & " and Qtytobedel >0"
 
   
  SQL = "SELECT * FROM tlb_allorders "
  If Krit <> "" Then SQL = SQL & "WHERE " & Mid(Krit, 5)
  Me!frm_allorders.Form.RecordSource = SQL
  Me!PurchDoc.SetFocus

DoCmd.OpenForm "frm_allorders", acFormDS, , , , acHidden
DoCmd.OutputTo acOutputForm, "frm_allorders", acFormatXLS, "U:\data\excel\frm_allorders.xls", -1


Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: bahasu am März 24, 2011, 05:30:26
Moin,

was passiert wenn Du

DoCmd.OpenForm "frm_allorders", acFormDS, , SQL , acHidden

verwendest, wobei die Zeile "Me!frm_allorders.Form.RecordSource = SQL" dann überflüssig ist?


Harald
Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: boehnli01 am März 24, 2011, 09:38:59
Morgen,

dann sagt er mir sytax error. in query  expression 'select*frm tlb_allorders" und bring den da in gelb:
DoCmd.OpenForm "frm_allorders", acFormDS, , SQL, acHidden


Dim Krit As String, SQL As String
  Krit = ""
  If Not IsNull(Me!PurchDoc) Then Krit = Krit & " AND PurchDoc LIKE '" & Me!PurchDoc & "*'"
  If Not IsNull(Me!Purrequ) Then Krit = Krit & " AND Purrequ LIKE '" & Me!Purrequ & "*'"
  If Not IsNull(Me!Urgency) Then Krit = Krit & " AND Urgency LIKE '" & Me!Urgency & "*'"
  If Not IsNull(Me!MRP) Then Krit = Krit & " AND MRP LIKE '" & Me!MRP & "*'"
  If Not IsNull(Me!Mat) Then Krit = Krit & " AND Mat LIKE '" & Me!Mat & "*'"
  If Not IsNull(Me!Pending) Then Krit = Krit & " AND Pending = " & IIf(Me!Pending, "True", "False")
  If Not IsNull(Me!Deliveryvon) Then Krit = Krit & " AND Dlvdatenew >= #" & Format(Me!Deliveryvon, "yyyy-mm-dd") & "#"
  If Not IsNull(Me!Deliverybis) Then Krit = Krit & " AND Dlvdatenew <= #" & Format(Me!Deliverybis, "yyyy-mm-dd") & "#"
  If Not IsNull(Me!Docdatevon) Then Krit = Krit & " AND Docdate >= #" & Format(Me!Docdatevon, "yyyy-mm-dd") & "#"
  If Not IsNull(Me!Docdatebis) Then Krit = Krit & " AND Docdate <= #" & Format(Me!Docdatebis, "yyyy-mm-dd") & "#"
  If Not IsNull(Me!Delete) Then Krit = Krit & " AND Delete LIKE '" & Me!Delete & "*'"
  If Me.Open = True Then Krit = Krit & " and Qtytobedel >0"
 
   
  SQL = "SELECT * FROM tlb_allorders "
  If Krit <> "" Then SQL = SQL & "WHERE " & Mid(Krit, 5)
  Me!PurchDoc.SetFocus

DoCmd.OpenForm "frm_allorders", acFormDS, , SQL, acHidden
DoCmd.OutputTo acOutputForm, "frm_allorders", acFormatXLS, "U:\data\excel\frm_allorders.xls", -1
Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: Wurliwurm am März 24, 2011, 10:17:35
Gib mal den SQL-String in die Zwischenablage aus und probiere eine Abfrage damit.
Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: boehnli01 am März 24, 2011, 10:30:30
Danke wurliwurm für das feedback.

Leider habe ich keine Ahnung wie ich da vorgehen muss, bzw weis ich nicht wie man eine Zwischenablage/SQL-query macht.  Könntest du diesen Vorgang ein bisschen genauer erklären bitte.

Danke.
Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: bahasu am März 24, 2011, 11:17:25
Moin,

beim dem Teil IIf(Me!Pending, "True", "False") habe ich Bedenken wegen der Gänsefüße.
1. Probier mal: IIf(Me!Pending, True, False) bei deinen If-Abfragen
2. Den Vorschlag von heute Morgen korrigiere ich in:
DoCmd.OpenForm "frm_allorders", acFormDS, , Krit, acHidden
{darf bei dieser Übergabe kein select vorkommen}
Harald
Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: boehnli01 am März 24, 2011, 12:14:15
Zuerst mal Danke das du dir die Zeit nimmst mir zu helfen.
Habe gemäss deinen post angepasst.  Nun bekomme ich folgende Fehlermeldung:
Syntax error (missing operator) in query  expression. ' AND pending = true'.
im falle wo ich das kriterium "pending" anklicke.

Dim Krit As String, SQL As String
  Krit = ""
  If Not IsNull(Me!PurchDoc) Then Krit = Krit & " AND PurchDoc LIKE '" & Me!PurchDoc & "*'"
  If Not IsNull(Me!Purrequ) Then Krit = Krit & " AND Purrequ LIKE '" & Me!Purrequ & "*'"
  If Not IsNull(Me!Urgency) Then Krit = Krit & " AND Urgency LIKE '" & Me!Urgency & "*'"
  If Not IsNull(Me!MRP) Then Krit = Krit & " AND MRP LIKE '" & Me!MRP & "*'"
  If Not IsNull(Me!Mat) Then Krit = Krit & " AND Mat LIKE '" & Me!Mat & "*'"
  If Not IsNull(Me!Pending) Then Krit = Krit & " AND Pending = " & IIf(Me!Pending, True, False)
  If Not IsNull(Me!Deliveryvon) Then Krit = Krit & " AND Dlvdatenew >= #" & Format(Me!Deliveryvon, "yyyy-mm-dd") & "#"
  If Not IsNull(Me!Deliverybis) Then Krit = Krit & " AND Dlvdatenew <= #" & Format(Me!Deliverybis, "yyyy-mm-dd") & "#"
  If Not IsNull(Me!Docdatevon) Then Krit = Krit & " AND Docdate >= #" & Format(Me!Docdatevon, "yyyy-mm-dd") & "#"
  If Not IsNull(Me!Docdatebis) Then Krit = Krit & " AND Docdate <= #" & Format(Me!Docdatebis, "yyyy-mm-dd") & "#"
  If Not IsNull(Me!Delete) Then Krit = Krit & " AND Delete LIKE '" & Me!Delete & "*'"
  If Me.Open = True Then Krit = Krit & " and Qtytobedel >0"
 
   
  SQL = "SELECT * FROM tlb_allorders "
  If Krit <> "" Then SQL = SQL & "WHERE " & Mid(Krit, 5)
  Me!frm_allorders.Form.RecordSource = SQL
  Me!PurchDoc.SetFocus

DoCmd.OpenForm "frm_allorders", acFormDS, , Krit, acHidden
DoCmd.OutputTo acOutputForm, "frm_allorders", acFormatXLS, "U:\data\excel\frm_allorders.xls", -1
Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: DF6GL am März 24, 2011, 12:58:01
Hallo,


If Not IsNull(Me!Pending) Then Krit = Krit & " AND Pending = " & Me!Pending
Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: boehnli01 am März 24, 2011, 17:33:04
Es ist zum verzweifeln, aber vielleicht ist Wurliwurms Vorschlag mit der SQL query Zischenablage nicht so schlecht. Kann mir jemand erklären wie das genau geht. Danke.
Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: bahasu am März 24, 2011, 17:44:17
Hi

alternativer Vorschlag: stell eine abgespeckte + gezippte Version zur Verfügung. Vielleicht trägt das dann zuM "Entzweifeln" bei.

Harald
Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: boehnli01 am März 24, 2011, 21:02:55
Hier die gezippte version.

[Anhang gelöscht durch Administrator]
Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: database am März 24, 2011, 21:14:18
Hallo,

DoCmd.OpenForm "frm_allorders", acFormDS, , Mid(Krit, 5), acHidden

nach dieser Änderung wird bei Auswahl MRP = A01 und Pending = -1 ein Datensatz nach Excel ausgegeben!
Ohne diese Änderung steht AND vor dem Kriterium weshalb der Code dann an der Stelle auch stecken bleibt.

HTH
Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: boehnli01 am März 24, 2011, 21:25:45
Vielen vielen dank.  Unglaublich wie schnell du die Lösung gefunden hast. Hammer.
Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: database am März 24, 2011, 21:29:10
Freut mich wenn's geholfen hat!  ;) ::)
Titel: Re: Eine Art Suchfunktion erstellen
Beitrag von: bahasu am März 24, 2011, 22:03:35
N'abend

die Ursache ist
Krit = ""
If Not IsNull(Me!PurchDoc) Then Krit = Krit & " AND PurchDoc LIKE '" & Me!PurchDoc & "*'"

Wird besser mit:

Krit = ""
If Not IsNull(Me!PurchDoc) Then Krit = "PurchDoc LIKE '" & Me!PurchDoc & "*'"

Wenn Krit auf "" gesetzt wurde, ist Krit = Krit + ... unnötig.

Für die nächsten Bedingungen gilt dann aber eine leichte Anpassung in der Art:
If Not IsNull(Me!Purrequ) Then Krit = Krit & iif (Krit > "";" AND ";"") & Purrequ LIKE '" & Me!Purrequ & "*'"

Das " and " führt zu der Macke, die entweder mit dem Hinweis von database (Mid( ...) entfernt wird oder mit dem obigen Zeilen und dann ohne Mid (Krit,5)

Harald