Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Eine Art Suchfunktion erstellen

Begonnen von Compil, August 23, 2006, 12:01:32

⏪ vorheriges - nächstes ⏩

Compil

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




oma

Hierzu gibt es auf diversen Seiten verschiedene Beispiele, wie z.B


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

Gruß Oma
nichts ist fertig!

Compil

Danke. Genau sowas hatte ich gesucht! Das ist ja echt klasse!

Vielen Dank!

Gruß.

Compil

boehnli01

Hallo zusammen,

habe diese suchfunktion in meiner DB eingebaut und das funktioniert super.
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

database

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

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

HTH




boehnli01

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



bahasu

#6
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
Servus

boehnli01

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

Wurliwurm

Gib mal den SQL-String in die Zwischenablage aus und probiere eine Abfrage damit.

boehnli01

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.

bahasu

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
Servus

boehnli01

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

DF6GL

Hallo,


If Not IsNull(Me!Pending) Then Krit = Krit & " AND Pending = " & Me!Pending

boehnli01

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.

bahasu

Hi

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

Harald
Servus