Neuigkeiten:

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

Mobiles Hauptmenü

Startformular Suchabfrage funktioniert nicht

Begonnen von Neuling1, Dezember 01, 2010, 07:21:25

⏪ vorheriges - nächstes ⏩

Neuling1

Guten Morgen,
ich habe eine Tabelle, ganz banal, hier sollen Adressen eingegeben werden.
Dazu ein kleines Eingabeformular, noch alles okay.
Jetzt wollte ich ein kleines Startformular machen, darauf sollten nur drei Befehlsschaltflächen. Eine ist zum Suchen gedacht, für den Zweck zum Überprüfen, ob es diesen Namen schon in der Tabelle gibt. Die zweite Befehlsschaltfläche soll die DB schließen, die dritte öffnet das Eingabeformular.
Der Suchbutton geht ins Leere, immer wieder Fehlermeldung, wenn ich das Suchfeld nicht sichtbar in das Formular setze, was ich doof finde.
Es soll kein Feld in das Formular rein, unnötig. Wie funktioniert das?

Weiß jemand Rat?  Vielen Dank!
Datenerhebung dient dem Nachweis, nicht der Form der Prozedur, deren Qualität mit Hilfe von Datenerhebung nachgewiesen werden soll

Jonny

Moin,
also etwas mehr Infos müssen sein.
Wie suchst Du?
Welche Meldung kommt?
Was soll angezeigt werden wenn die Adresse gefunden wurde?

Das mit dem nicht sichtbar verstehe ich garnicht.

Gruß

Johann

Neuling1

Also, eine ganz normale Adresstabelle für spätere Serienbriefe.
Dazu ein Eingebeformular. Um auszuschließen, dass eine Person eingegeben wird, die schon in der Tabelle drin ist, wollte ich ein Startformular machen, mit drei Befehlsschaltflächen.
Eine davon liegt auf dem Feld "Name" und lautet sinngemäß: Suche, ob es diesen Namen schon in der Tabelle gibt. Diese Befehlsschaltfläche hab ich ganz normal mit dem Assistenten angelegt. Aber: Wenn ich nicht das Feld Namen aus der Tabelle auf das Formular lege, dann funktioniert die Suchabfrage nicht. Die Fehlermeldung lautet: Funktion momentan nicht möglich. Wenn das Feld auf dem Formular liegt und die Option "Sichtbar" auf "nein" gestellt wird, geht es auch nicht. Es muss immer das Feld "Name" sichtbar im Formular sein, damit es klappt.
Ich hätte lieber, dass ich ein Formular habe, auf dem sich lediglich die drei beschriebenen Befehlsschaltflächen befinden. Klicke ich dann auf den Button "Suchen", dann erscheint das von Access vorinstallierte Dialogfeld Suchen, ich gebe den Namen, den ich suche, ein, und entweder ist er schon in der Tabelle und ich schließe das Formular oder er ist nicht in der Tabelle, dann klicke ich auf die Schaltfläche: "neue Person eingeben", es öffnet sich das Eingebeformular, das Startformular wird geschlossen.
Letzteres funktioniert.
Datenerhebung dient dem Nachweis, nicht der Form der Prozedur, deren Qualität mit Hilfe von Datenerhebung nachgewiesen werden soll

Jonny

Hallo,
das Feld Name hat schon das Problem das du ein reservierte Wort benutzt. Hier solltes Du einen anderen
Feldnamen z.B. Nachname nehmen.

Die ganze DB scheint mir aber nicht gut überlegt zu sein.
Was ist dein Primärkey?
Was ist wenn zwei Personen den gleichen Namen haben?

Ich würde kein extra Startformular machen, sondern nur ein Eingabeform für die Adressen.
Da kannst Du auf Duplikate prüfen und entsprechend reagieren.
Da kommt auch die Schaltfläche "Programmende" hin.

Gruß

Johann

oma

Hallo Neuling,

deine Progammführung solltest du evt. mal überlegen.

Anbei mal ein Beispiel, wie du dein Konzept evt. mit etwas Umgestaltung realisieren kannst.
Für die Überprüfung, ob Person vorhanden ist, aktivierst du eine Suche mit Button Auswahl. Ein oder mehrere Suchfelder stehen nicht im Formularkopf sondern in einem Suchformular, dass erst bei Bedarf eingeblendet wird.

Das Formular für die Kunden ist das "normale" Formular zur Anzeige/Bearbeitung der Daten, zeigt alle Suchergebnisse an u. ist zugleich Erfassungsformular für neue Daten.


Gruß Oma



[Anhang gelöscht durch Administrator]
nichts ist fertig!

Neuling1

genau das ist mein Problem. Ich habe ja sicher mal einen Namen mehrmals, deshalb habe ich ja auch eine Autonr vergeben und den Vornamen.
Meine Felder heißen A_Nr, A_Name, A_Vorname.
Mein Suchbutton steht nicht im Eingabeformular, er ist im Startformular. Ich hatte schon versucht ungebundenes Formular mit ungebundenen Feldern, aber bei mir hat es nicht funktioniert. Das Starformular sollte eingeblendet werden, ganz genau. Ich habe es auf mehreren Wegen versucht, gestern bald den ganzen Tag und komme nicht weiter. Beim debuggen wird mir auch kein Fehler angezeigt. Das Problem scheint zu sein, dass der Suchbutton die zu durchsuchenden Datensätze nicht findet. Ich häng mal meine DB an, ist wirklich nur mini. Wenni ch sehe, was du da in offenbar wenigen Minuten zusammengebastelt hast, werde ich blass. Wie lange brüte ich hier an kleinen Lösungen! Ich hänge die DB mal an. Ich habs ja aähnlich wie du versucht, dann noch ein zweites Zwischenformular aufgemacht, völlig funktionsunfähig.


[Anhang gelöscht durch Administrator]
Datenerhebung dient dem Nachweis, nicht der Form der Prozedur, deren Qualität mit Hilfe von Datenerhebung nachgewiesen werden soll

Jonny

Hallo,

im Startformular hast du keine Datenherkunft.
Suchen kann man aber nur in Daten die auch vorhanden sind.

Mach mal folgendes:

in dein Formular F_Ärzte erstellst du mit den Assi ein Kombinationsfeld. Als Option nimmst du Datensatz suchen.
Inhalt A_Nr, A_Name, A_Vorname.

Über das Feld kannst du dann suchen.

Oder nehme einfach die Schaltfläche mit dem Fernglas dann brauchst du gar nichts weiter machen.

Bei Extras kannst du als Startformular noch dein Form F_Ärzte einstellen. Dadurch sparst du dir alle andere Formulare.

Bitte daran denken Grundsätzlich keine Sonderzeichen in Feld und Formularnamen.

Also ein Form mit den Funktionen Neu, Ändern und Löschen reicht aus.

Gruß

Johann

Neuling1

Die Idee mit einem Startformular habe ich schon gesehen. Da kannst du erst checken, habe ich den Datensatz schon, wenn nicht, klickst du die zweite Befehlsschaltfläche an und du kannst die Eingabe beginnen. Es gefiel mir ausgesprochen gut. Warum funktioniert alles, bis auf das Suchen? Da muss es doch eine Lösung geben!Es wird etwas im Code fehlen, dass Access nicht weiß, wo es suchen soll! Aber was?
Datenerhebung dient dem Nachweis, nicht der Form der Prozedur, deren Qualität mit Hilfe von Datenerhebung nachgewiesen werden soll

Jonny

Hallo,

natürlich kann man ein hübsches Startformular basteln.

Ich kann da auch nach erfolgter Eingabe von Nachname und Vorname suchen und wenn gefunden eine Meldung geben.

Jetzt will ich dich wirklich nicht beleidigen aber ich habe das Gefühl das du da was tolles machen willst wo es auch einfach geht.
Kennst du dich wirklich in VBA aus oder ist der Code reinkopiert und irgendwie angepasst?

Aber eines ist klarr. Mit der einfachen Suchfunktion kann man nur finden was im Form vorhanden ist.

Gruß

Johann

oma

Hallo,

beseitige zunächst mal Fehler in der Tabelle:

Feld A_Nr:   ist als Zahl deklariert, in Benennung steht Autowert??.  Ich würde das auch als Autowert gestalten, denn sonst musst du bei jedem Neuanlegen immer per Code eine Nummer vergeben!!!


Feld alterA_Name:  natürlich wird kein Alter in der Tabelle gespeichert!!!, dort wir ein Geburtsdatum oder ein geburtsjahr gespeichert u. daraus kann in jeder Formular/Berichtsausgabe ein Alter berechnet werden!

Feld Eingabebeendet:   hat was für eine bedeutung??

Feld PLZ:  illst du mit einer PLZ mal rechenen ;D oder warum ist das eine zahle?. das muss natürlich Text sein, da es auch PLZ mit 09... gibt u. Zahl keine führende Null speichern kann!

Feld EMail: Das sollte als Hyperling gespeichert werden, dann kannst du mit dem Feld direkt dein E-Mail Programm starten!

Ganz schön für die paar Felder  ;D ;D,

Und nochmals: warum willst du dein "etwas spezielles" Konzept der Formularfolge beibehalten.

Gruß Oma

nichts ist fertig!

oma

Hallo,

nehme doch ein Formular, indem alle Ärzte zu sehen sind, als "Startformular"
Mit entsprechende Buttons kannst du dann verschiedene Operationen starten/zulassen wie:
neu erfassen, bearbeiten, Suchen usw.

Das Beispiel zeigt einen möglichen Weg, du musst/kannst das erweitern/anpassen u. auch noch die Form nach deinem Geschmack ändern.


Gruß Oma

[Anhang gelöscht durch Administrator]
nichts ist fertig!

Neuling1

Es ist ein hereinkopierter, etwas veränderter Code, richtig. Ich möchte gern, dass es funktionstüchtig und überschaubar ist. Man kann doch mal probieren, wie es einem gelingt.
Hier nochmal die nachgebesserte Version der DB und der Formulare. Jetzt ist es etwas verrückt, denn das Eingabeformular reagiert jetzt, wenn man auf den Suchbutton drückt. Es findet nur den Feldnamen nicht, also funktioniert die Zuweisung Docmd.gotoControl "A_Name". Ohne Zuweisung geht der Suchcursor immer auf die AUtonr, was ja schlecht ist
Das Feld E-Mail ist jetzt Hyperlink, PLZ ist auf Text geändert, F_Barcode ist gelöscht.
Zum Autowert: Das Feld A_Nr wird zum Autowert und Primärschlüssel, wenn alle Formulare fertig sind und funktionieren. Nur für die Probierzeit ist es das nicht, wegen der nervigen Störmeldungen, wenn ein Datensatz, der probeweise eingegeen wird und fiktiv ist, gelöscht werden muss.
Alle Ärzte anzuzeigen finde ich unübersichtlich, weil es wohl an die 80 werden

[Anhang gelöscht durch Administrator]
Datenerhebung dient dem Nachweis, nicht der Form der Prozedur, deren Qualität mit Hilfe von Datenerhebung nachgewiesen werden soll

oma

Hallo

ZitatAlle Ärzte anzuzeigen finde ich unübersichtlich, weil es wohl an die 80 werden

naja, manche DBs verwalten mühelos einige 10.000 Datensätze, Was ist unübersichtlich, wenn ma zuerst alle Daten sieht, bevor man irgendwie rumklickt?

natürlich das ist natürlich Ansichtssache.

Zu deinem Code gibt es einige Dinge, die keine Ansichtssache sind ;D:

1.  die Methode DoMenuItem  soll nach Vorgabe von Mocrosoft nicht mehr verwendet werden (schon lange nicht mehr) hierfür solltest du die RunCommand Methode verwenden.

2.  der Code zum "suchen" ist nicht nachvollbar,. Es wird nirgends ein Wert zum Suchen übergeben, es wird nirgends eine Methode zum Suchen (FindRecord, Findnext, Fliter setzen oder RecordSource verändern) verwendet.

Erläutere doch mal, wie dein Suchen funktionieren soll (prinzipielle Methode oder jetziger Befehl im Code )

Gruß Oma
nichts ist fertig!

Neuling1

So hatte ich es mir gedacht!

[Private Sub Arzt_suchen_Click()
On Error GoTo Err_Arzt_suchen_Click

Dim stDocName As String
Dim stLinkCriteria As String

    stDocName = "F_Ärzte"
    stLinkCriteria = "A_Name"
   
    DoCmd.OpenForm stDocName, , , stLinkCriteria
     Screen.PreviousControl.SetFocus
   
    DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70
    DoCmd.Close acForm, "Startfenster", acSaveNo
   
    'Such-Button sichtbar machen
    'Forms(stDocName)!Suchen.Visible = True
   ' Forms(stDocName)!weiter.Visible = False
   
Exit_Arzt_suchen_Click:
    Exit Sub
Err_Arzt_suchen_Click:
    MsgBox Err.Description
    Resume Exit_Arzt_suchen_Click
   
End Sub
Datenerhebung dient dem Nachweis, nicht der Form der Prozedur, deren Qualität mit Hilfe von Datenerhebung nachgewiesen werden soll

Neuling1

Auf dem Startfenster soll mittels Anklicken des Buttons "Arzt suchen", überprüft werden, ob der Name schon in der Tabelle vorhanden ist.
Eigentlich soll der Cursor für die Suchfunktion gleich auf dem Feld "A_Name" liegen, im Grunde soll halt niemand da rumklicken müssen. Alles ist klar, wenn der Nutzer den Button anklickt. Am allerschönsten wäre es, wenn er den Button anklickt und ein Feld zur Eingabe des gesuchten Namens öffnet sich. Der Nutzer gibt den gesuchten Namen ein und erfährt, ob der Name drin steht oder nicht. Mittels Messagebox am liebsten.
Der Name steht nicht drin, also klickt der Nutzer auf den Button Neuer Arzt", das Eingabeformular öffnet sich und der neue Name kann eingegeben werden.
Datenerhebung dient dem Nachweis, nicht der Form der Prozedur, deren Qualität mit Hilfe von Datenerhebung nachgewiesen werden soll