Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: swordi am August 16, 2011, 13:11:53

Titel: Problem beim Datensatzsuchen
Beitrag von: swordi am August 16, 2011, 13:11:53
Hallo ihr Lieben,

ich bin neu hier, und komm mit Access noch nicht ganz so gut klar, wie gewollt.

Im Moment ist mein Problem ein Kombinationsfeld, das ich als Suchfeld nutzen möchte (mit dem Assistenten hat alles wunderbar geklappt, ich will es aber ohne Assistent haben.)

Das Kombifeld ist ungebunden. Im Formular gibt es dann weitere Textfelder und sonstige Felder, die jeweils mit den zugehörigen Feldern der Datenbank verknüpft sind.

Im Kombifeld wird also meine Spalte zwei (Fallbezeichnungen) eingelesen, die habe ich alle im Kombifeld dann zur Auswahl.

Wenn ich jedoch eines dann auswähle und im Nach Aktualisierung des Kombifelds folgenden Code ausführen lasse:



Private Sub cob_suchfeld_AfterUpdate()
Me.Recordset.FindFirst "Schraubfallbezeichnung = '" & Me!cob_suchfeld & "'"

End Sub

Jedoch wird immer nur das Feld tb_Schraubfallbezeichnung auf meinem Formular befüllt.
Der Rest nicht.. was mach ich denn falsch ?!

Liebe Grüße
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: DF6GL am August 16, 2011, 13:33:07
Hallo,

das ist so wegen Unkenntiss des Kontextes nicht zu sagen.


Wenn das Kombi seine Listendaten aus derselben Tabelle bezieht, die auch das Formular anzeigt, und in Spalte 0 (erste Spalte) der Wert des Tabellen-ID-Feldes , in Spalte 1 (zweite Spalte) die Werte aus der Tabellenspalte "tb_Fallbezeichnung" stehen, dann so:


Me.Recordset.FindFirst "[IDFeld] = " & Me!cob_suchfeld

oder


Me.Recordset.FindFirst "tb_Schraubfallbezeichnung = '" & Me!cob_suchfeld.Column(1) & "'"



Bezieht das Kombi seine Listendaten aus einer anderen Tabelle als das Formular anzeigt, dann etwa so:

Me.Recordset.FindFirst "SchraubfallbezeichnungID = " & Me!cob_suchfeld


wobei "SchraubfallbezeichnungID" das Fremdschlüsselfeld für den Primärschlüsselwert aus Tabelle "tbl_Schraubfallbezeichnungen" ist.

btw:  "Findfirst" findet nur den ersten passenden Datensatz in der Tabelle.
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: swordi am August 16, 2011, 13:54:29
Hallo

danke erst mal.

Deine erste Beschreibung trifft zu. Es bezieht alles aus der gleichen Tabelle.

Wenn ich jedoch deinen Code:

Me.Recordset.FindFirst "[ID_Schraubfallbezeichnung] = " & Me!cob_suchfeld

benutze dann bekomme ich die Fehlermeldung:

3070
Das Microsoft Access Datenbankmodul erkennt 'eeee" nicht als gültigen Feldnamen oder Ausdruck.

Wobei "eeee" dann eben das war, was ich in meinem Kombifeld ausgewählt habe.
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: DF6GL am August 16, 2011, 14:34:17
Hallo,


dann steht in der ersten Spalte des Kombis keine ID drin.....

Poste mal den SQl-String der Kombiabfrage  und die Kombi-Eigenschaften, sowie den Namen des Tabellen-ID-Feldes, bzw. den Namen des Tabellenfeldes, in welchem "eeeee" vorhanden sein soll.
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: swordi am August 16, 2011, 14:49:27
Hallo,

Sql Abfrage des Kombifeldes: SELECT [Schraubfalldaten].[SchraubfallBezeichnung] FROM Schraubfalldaten;

Name des Tabellenfeldes in dem eeee vorhanden sein muss: SchraubfallBezeichnung.

Grüße
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: DF6GL am August 16, 2011, 15:16:30
Hallo,

dann sieht es so aus:

Me.Recordset.FindFirst "[Schraubfallbezeichnung] = '" & Me!cob_suchfeld & "'"

wobei ich keinen Unterschied zur Deinem anfänglichen Code sehen kann... Vermutlich stimmen Deine Beschreibungen nicht genau(!)
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: swordi am August 17, 2011, 08:05:24
Danke das funktioniert jetzt wunderbar.

Ich habe nur noch das Problem, dass ich einen Rahmen mit Optionsfeldern auf meinem Formular habe.
Die mit einer Spalte in der Datenbank verknüpft sind.
Je nachdem was in dieser Spalte steht (1, 2 , 3) soll der jeweilige Optionsbutton des zugehörigen Datensatzes aktiviert werden.

Der wird auch richtig markiert.

Aber bei Aktivierung (wirkliches reinklicken mit der Maus) eines Optionsfeldes, wird weiter unten ein Registerblatt eingeblendet.

Wenn dieses Optionsfeld jedoch automatisch durch das Suchfeld aktiviert wird (beim einlesen des Datensatzes sozusagen) klappt das mit der Registerkarte einblenden nicht.
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: DF6GL am August 17, 2011, 08:49:06
Hallo,

das Einblenden des Registers muß auch noch zusätzlich beim Form_Current-Ereignis erfolgen.  Ruf dort einfach die Sub auf, die bei "Aktivierung" benutzt wird.
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: swordi am August 17, 2011, 08:59:08
Hallo

Ok und welchen Code muss ich dann da eingeben ?!
da steh ich grad ein bisschen auf dem Schlauch.
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: swordi am August 17, 2011, 09:07:04
Ahhh sorry hat sich erledigt.

Ah super vielen lieben dank das klappt jetzt so.

Du warst meine Rettung. Dankeschön !!

Edit: etwas zu früh gefreut:

irgendwie hat das jetzt nur einmal geklappt, wenn ich nun einen datensatz suche klappt das mit dem Einblenden der Registerkarte nicht mehr :/

Ich bekomme immer den Fehler nach Auswahl im Suchfeld 3426: Diese Aktion wurde durch ein zugeordnetes Object abgebrochen.

Der Debugger steht auf der Zeile: Me.Recordset.FindFirst "[Schraubfallbezeichnung] = '" & Me!cob_suchfeld & "'"
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: DF6GL am August 17, 2011, 14:06:22
Hallo,

habe keinen Überblick über Deinen Code.


Poste den mal im Gesamten....
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: swordi am August 17, 2011, 14:24:48
Hallo

also wenn ich unten mit den Pfeilen vor, zurück zwischen den Datensätzen durchgehe klappt das mit dem einblenden der Registerkarten bei Auswahl der Optionsfelder - danke dafür.

Hier mein Code für das Suchfeld:

[code=vb]Private Sub cob_suchfeld_AfterUpdate()
'Nach Auswahl eines Eintrags des Suchfeldes wird das Formular mit dem Datensatz befüllt
Me.Recordset.FindFirst "[SchraubfallBezeichnung] = '" & Me!cob_suchfeld & "'"
End Sub
[/code]

Mehr hab ich bei der Suche nicht eingetragen jetzt.

Das hat ja mit der Suche auch funktioniert, bis ich eben das beim Current eingetragen habe:

Private Sub Form_Current()
If Me.rh_verschraubungsverfahren = 0 Then
    Me.lb_vorgaben_1.Visible = False
    Me.lb_vorgaben_2.Visible = False
    Me.lb_vorgaben_3.Visible = False
    Me.rg_schraubverfahren.Visible = False
       
ElseIf Me.rh_verschraubungsverfahren = 1 Then
    Me.lb_vorgaben_1.Visible = True
    Me.lb_vorgaben_2.Visible = False
    Me.lb_vorgaben_3.Visible = False
    Me.rg_schraubverfahren.Visible = True
    Me![rg_schraubverfahren].Pages(0).SetFocus
    Me.tb_da_druckhaltezeit.Value = "1"
    Me.tb_da_winkelgrad_min.Value = "0"
    Me.tb_da_winkelgrad_max.Value = "99"

ElseIf Me.rh_verschraubungsverfahren = 2 Then

    Me.lb_vorgaben_1.Visible = False
    Me.lb_vorgaben_2.Visible = True
    Me.lb_vorgaben_3.Visible = False
    Me.rg_schraubverfahren.Visible = True
    Me![rg_schraubverfahren].Pages(1).SetFocus
   
ElseIf Me.rh_verschraubungsverfahren = 3 Then

    Me.lb_vorgaben_1.Visible = False
    Me.lb_vorgaben_2.Visible = False
    Me.lb_vorgaben_3.Visible = True
    Me.rg_schraubverfahren.Visible = True
    Me![rg_schraubverfahren].Pages(2).SetFocus

End If
End Sub



Ich verstehs nicht... ich hab mir jetzt auch überlegt, dass es vlt doch besser wäre wenn ich als Suchfeld meine erste Spalte in der Datenbank nehme, die heisst ID_Schraubfalldaten und besteht aus Zahlen, automatisch hochgezählt.

Würde die Suche dann so lauten:

Me.Recordset.FindFirst "[ID_Schraubfalldaten] = " & Me!cob_suchfeld


Wobei ich in meinem Kombifeld trotzdem die SchraubfallBenennung auswählen würden wollte.

Grüße
Nicole
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: DF6GL am August 17, 2011, 14:32:21
Hallo,

und wo ist der Code für den Optionsrahmen?

Du solltest auch nicht den Code in die Form_Current-Prozedur verschieben, sondern dort die Optrahmen-Prozedur aufrufen
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: swordi am August 17, 2011, 14:37:12
Hallo

hier ist mein Code vom Rahmen

Private Sub rh_verschraubungsverfahren_AfterUpdate()

'Je nachdem, welches Verschraubungsverfahren gewählt ist, wird eine andere Registerkarte aktiviert
If Me.rh_verschraubungsverfahren = 1 Then
    Me.lb_vorgaben_1.Visible = True
    Me.lb_vorgaben_2.Visible = False
    Me.lb_vorgaben_3.Visible = False
    Me.rg_schraubverfahren.Visible = True
    Me![rg_schraubverfahren].Pages(0).SetFocus
    Me.tb_da_druckhaltezeit.Value = "1"
    Me.tb_da_winkelgrad_min.Value = "0"
    Me.tb_da_winkelgrad_max.Value = "99"

ElseIf Me.rh_verschraubungsverfahren = 2 Then

    Me.lb_vorgaben_1.Visible = False
    Me.lb_vorgaben_2.Visible = True
    Me.lb_vorgaben_3.Visible = False
    Me.rg_schraubverfahren.Visible = True
    Me![rg_schraubverfahren].Pages(1).SetFocus
   
ElseIf Me.rh_verschraubungsverfahren = 3 Then

    Me.lb_vorgaben_1.Visible = False
    Me.lb_vorgaben_2.Visible = False
    Me.lb_vorgaben_3.Visible = True
    Me.rg_schraubverfahren.Visible = True
    Me![rg_schraubverfahren].Pages(2).SetFocus

End If
End Sub



Verschoben habe ich den nicht, habe ihn nur in das Form_Current kopiert und um die 0 erweitert ?!
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: DF6GL am August 17, 2011, 14:50:53
Hallo,


so meinte ich das :



Sub Form_Current()
rh_verschraubungsverfahren_AfterUpdate
End Sub


Zu FindFirst:

wenn Du nach der ID suchen willst, dann muss das Kombi in seiner ersten Spalte den ID-Wert und in der zweiten die Bezeichnung enthalten:

SELECT  Schraubfall_ID, SchraubfallBezeichnung FROM Schraubfalldaten

Die Spaltenanzahl muss auf 2 stehen und die Spaltenbreiten sollten 0cm;3cm sein.


Sodann dieser Code:

Private Sub cob_suchfeld_AfterUpdate()
Me.Recordset.FindFirst "[Schraubfall_ID] = " & Me!cob_suchfeld
End Sub



"Namen anpassen nicht vergessen!)
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: swordi am August 17, 2011, 15:02:37
Hallo !

Perfekt, vielen vielen Dank.
Du bist wirklich ein Access - Gott.

Habe ich jetzt noch irgendwie die Chance, dass mein Kombifeld immer aktualisiert wird, wenn ich einen neuen Datensatz eingetragen hab?
Jetzt im Moment trage ich einen ein, speichere und wenn ich das Kombifeld dann aufmach ist der Eintrag nicht da ?!

Titel: Re: Problem beim Datensatzsuchen
Beitrag von: DF6GL am August 17, 2011, 19:47:10
Hallo,


bau die folgende Ereignisprozedur ein:

Sub cob_suchfeld_Enter()
Me!cob_suchfeld.Requery
End Sub
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: swordi am August 18, 2011, 07:54:02
Hallo

Vielen dank, das klappt jetzt.

Aber leider muss ich noch mal auf die Suche von gestern zurück kommen -  sorry :(.

Wenn ich nun einen neuen Datensatz eingegegeb und gespeichert habe erscheint er auch im cob_suchfeld (also im Kombifeld).

Wenn ich ihn dann DA anklicke, erscheint aber im Feld SchraubfallBezeichnung sowie in der Kombibox nur noch die ID ? Nicht mehr die Benennung.
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: DF6GL am August 18, 2011, 11:02:07
Hallo,


die Kombifeld-Eigenschaften sind nicht angepasst (worden):


Spaltenanzahl:2
gebundene Spalte: 1
Spaltenbreite: 0cm;4cm

Wo steht denn das Feld "SchraubfallBezeichnung" und ist das ein Kombifeld?


Ich habe jetzt keinen Überblick über das Formular..

Titel: Re: Problem beim Datensatzsuchen
Beitrag von: swordi am August 18, 2011, 11:32:37
Hallo

doch ich habe die Spalten so angepasst wie du es gestern geschrieben hattest.

Mein Problem ist, dass er jetzt eben immer die ID auch in das Feld Schraubfallbezeichnung schreibt und speichert!

Und ich hab noch ein zweites Problem, eigentlich sollte meine Schraubfallbezeichnung nur EINMAL vorkommen... also vlt ist es doch besser, wenn ich die Schraubfallbezeichnung als Primärschlüssel nehme.

Mit diesem Code dann wieder:

Private Sub cob_suchfeld_AfterUpdate()
'Nach Auswahl eines Eintrags des Suchfeldes wird das Formular mit dem Datensatz befüllt
Me.Recordset.FindFirst "[SchraubfallBezeichnung] = '" & Me!cob_suchfeld & "'"
End Sub


Aber dann bekomme ich wieder die Fehlermeldung von gestern :( oder muss ich dann wieder die Spaltenzahl der Kombobox anpassen?
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: DF6GL am August 18, 2011, 11:45:12
Hallo,

es stimmt vermutlich der Tabellenaufbau nicht (mehr).

In "Schraubfallbezeichnung" in der 1-Tabelle MUSS die ID (Schraubfall_ID) aus Tabelle "Fallbezeichnungen" stehen, denn nur die wird abgespeichert. Der Feldname ist gleichermassen "falsch".

Im Grunde stochern wir hier im Nebel herum..   Lad die DB mal hoch und beschreib genau, wo und wie Dein Problem sich äußert.

Titel: Re: Problem beim Datensatzsuchen
Beitrag von: swordi am August 18, 2011, 12:48:38
Hallo

ich kann meine Datei nicht hochladen, das Zip hat 305 KB :(

Aber ist es möglich, dass ich eben nicht die ID sondern die Benennung als Primärschlüssel lasse?
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: DF6GL am August 18, 2011, 13:10:38
Hallo,

vor dem Zippen die DB komprimieren/reparieren...



".. nicht die ID sondern die Benennung als Primärschlüssel lasse.."


wenn Du es richtig machen und Erfolg haben willst:    Nein...
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: swordi am August 18, 2011, 13:19:15
Hallo

super klasse, das geht jetzt mit dem Hochladen.

Mein Problem ist also das Suchfeld (cob_suchfeld) das einfach nicht richtig funktioniert, wenn ich etwas ausgewählt habe.



[Anhang gelöscht durch Administrator]
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: DF6GL am August 18, 2011, 14:07:49
Hallo,

Kombi-Eigenschaften:
Datensatzherkunft:  SELECT Schraubfalldaten.ID_Schraubfalldaten, Schraubfalldaten.Bezeichnung FROM Schraubfalldaten ORDER BY Schraubfalldaten.Bezeichnung;

Spaltenanzahl: 2
Gebundene Spalte: 1
Spaltenbreiten: 0cm;4cm
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: swordi am August 18, 2011, 14:24:41
Hallo

habe die Datensatzherkunft so abgeändert:
SELECT Schraubfalldaten.ID_Schraubfalldaten, Schraubfalldaten.SchraubfallBezeichnung FROM Schraubfalldaten ORDER BY Schraubfalldaten.SchraubfallBezeichnung;

Und das Kombifeld angepasst wie du geschrieben hast.

Wenn ich jedoch einen Wert aus der Box auswähle ... schreibt er da immer die ID rein und überschreibt die ID in die Benennung =(

Was mach ich denn falsch ?
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: DF6GL am August 18, 2011, 14:57:35
Hallo ,


k. A., vermutlich stimmen die Kombieigenschaften nicht...

[Anhang gelöscht durch Administrator]
Titel: Re: Problem beim Datensatzsuchen
Beitrag von: swordi am August 18, 2011, 15:07:08
Hallo

also ich hatte bei Steuerelementinhalt noch was drin stehen =( .

Jetzt klappts.

Ich hoffe das wars jetzt erst mal :D wenn nicht meld ich mich wieder !!

Danke !!