Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Outliener am Mai 29, 2013, 19:44:09

Titel: Filterkriterium aus Formular in anderes Übernehmen
Beitrag von: Outliener am Mai 29, 2013, 19:44:09
Hallo

Seit Wochen bastle ich an einem Problem rum und komm nicht weiter...
Ich Filtere in einem Formular eine Tabelle und möchte per Hyperlink (oder Button - egal) ein zweites Formular öffnen, welches mir speziell zu den Filterkriterien die Möglichkeit gibt, ergänzende Daten in eine zweite Tabelle einzutragen.

Ich bekomme jedoch das Filterkriterium nicht übertragen in den Filter für das zweite Formular....


Hier meine derzeitige (halt leider nicht funktionierende) Lösung

Dim lngID As String
    lngID = Me.Anzeigename
   

DoCmd.OpenForm "UK", , , "Anzeigename= lngID"


Wo liegt nun das Problem? Ich bin leider Neuling hier und hab mir das so alles aus dem Forum zusammengestückelt....
Titel: Re: Filterkriterium aus Formular in anderes Übernehmen
Beitrag von: bahasu am Mai 29, 2013, 21:11:13
Hi,

probier mal (unter der Voraussetzung, dass " lngID" als Zahl deklariert ist):

if nz(lngID,0) > 0 then DoCmd.OpenForm "UK", , , "Anzeigename=" & lngID


Harald
Titel: Re: Filterkriterium aus Formular in anderes Übernehmen
Beitrag von: Outliener am Mai 29, 2013, 22:05:23
Es wird zwar das Kriterium richtig übergeben... Er gibt mir dennoch einen Fehler an... Und öffnet das neue Formular nicht.... :(

Hast Du ne Idee?

Danke überhaupt, das Du mich unterstützt mit meinem Problem.
Titel: Re: Filterkriterium aus Formular in anderes Übernehmen
Beitrag von: bahasu am Mai 29, 2013, 22:11:28
hI;

Zitat von: Outliener am Mai 29, 2013, 22:05:23
Er gibt mir dennoch einen Fehler an...

Wie lautet der Fehler: Nummer und Beschreibung?
An welcher Stelle tritt er auf?
Titel: Re: Filterkriterium aus Formular in anderes Übernehmen
Beitrag von: Outliener am Mai 30, 2013, 05:43:51
Moin

Also:

Ich habe in einer (Kontakte) Tabelle - diverse Namen und Adressen die einer Kunden_ID zugeordnet sind.

Eine Weitere Tabelle (Kontrollen) erfasst diverse Laborwerte die jeder Kunden_ID zugeordnet sind.

Ich möchte nun aus dem ersten Formular per Button zum zweiten Formular kommen. (jedoch die Filterung übernehmen).

Ich hab nun folgende Syntax:

    Dim lngID As String
    lngID = Me.Kunden_ID
   

    If Nz(lngID, 0) > 0 Then DoCmd.OpenForm "UK", , , "Kunden_ID=" & lngID

Ich bekomme jedoch den

Laufzeitfehler 3464
Datentypenkonflikt in Kriterienausdruck

Wenn ich debugge erhalte ich folgendes Problem gezeigt:

Dim lngID As String
    lngID = Me.Kunden_ID
   
If Nz(lngID, 0) > 0 Then DoCmd.OpenForm "UK", , , "Kunden_ID=" & lngID



Wobei ich angezeigt bekomme das Kunden_ID (wenn ich mit der Maus drüber gehen) die richtige Kunden_ID geladen hat.

Ich hoffe ich hab das jetzt gut erklärt alles.

Titel: Re: Filterkriterium aus Formular in anderes Übernehmen
Beitrag von: bahasu am Mai 30, 2013, 08:12:22
Hi,

da string

Dim lngID As String    

   

   If Nz(lngID, "") > "" Then DoCmd.OpenForm "UK", , , "Kunden_ID='" & lngID & "'"


Harald

PS
Wobei es ungewöhnlich ist, eine ID als string zu deklarieren. Zahl (long) ist das Übliche.
Titel: Re: Filterkriterium aus Formular in anderes Übernehmen
Beitrag von: DF6GL am Mai 30, 2013, 08:13:22
Hallo,


da scheinen ein paar Datentypen zusammengewürfelt zu sein..

Zudem ist die NZ()_Funktion unpassend verwendet.

Unter der Annahme, dass "Kunden_ID" den Datentyp Long Integer  besitzt, dann einfach so:

Sub btnButton_Click()
DoCmd.OpenForm "UK", , , "Kunden_ID=" & Me!Kunden_ID

'oder auch , falls Kunden_ID "leer" sein könnte (was bei richtigem Aufbau hier nicht zu erwarten ist)
'DoCmd.OpenForm "UK", , , "Kunden_ID=" & nz(Me!Kunden_ID,0)


End Sub





----------------------
   Dim lngID As String      ' Integer-Variable als String deklariert
   lngID = Me.Kunden_ID  ' damit Long-Wert einer Textvariablen zugewiesen.
   

   If Nz(lngID, 0) > 0 Then ' die NZ()-Funktion ist nur bei Datentyp Variant sinvoll/geeignet.

   DoCmd.OpenForm "UK", , , "Kunden_ID=" & lngID  'Prinzipiell richtig, wenn "lngID" vom Datentyp Long Integer wäre
   End If



Sollte es sich (wider Erwarten) bei Kunden_ID um den Datentyp "Text"  (String) handeln, dann muss der ID-Wert in Hochkommata eingeschlossen werden:


   
DoCmd.OpenForm "UK", , , "Kunden_ID='" & Me!Kunden_ID,"")  & "'"