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
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
Danke. Genau sowas hatte ich gesucht! Das ist ja echt klasse!
Vielen Dank!
Gruß.
Compil
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
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
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
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
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
Gib mal den SQL-String in die Zwischenablage aus und probiere eine Abfrage damit.
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.
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
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
Hallo,
If Not IsNull(Me!Pending) Then Krit = Krit & " AND Pending = " & Me!Pending
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.
Hi
alternativer Vorschlag: stell eine abgespeckte + gezippte Version zur Verfügung. Vielleicht trägt das dann zuM "Entzweifeln" bei.
Harald
Hier die gezippte version.
[Anhang gelöscht durch Administrator]
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
Vielen vielen dank. Unglaublich wie schnell du die Lösung gefunden hast. Hammer.
Freut mich wenn's geholfen hat! ;) ::)
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