Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: huelse77 am April 27, 2015, 09:31:59

Titel: Falsche Maskierung ?!
Beitrag von: huelse77 am April 27, 2015, 09:31:59
Hallo zusammen,

ich habe folgende Funktion erstellt, die funktioniert:

Public Function test(tbl As String, fld As String, crt As String) As Integer
test = DCount("*", tbl, "Lieferanten= '" & crt & "'")
End Function


Eigentlich soll die Funktion aber so aussehen

test = DCount("*", tbl, "'" & fld & "'='" & crt & "'")


Nur das funktioniert nicht egal wie ich die Variable fld maskiere. Entweder ich erhalte den Wert 0, es werden alle Datensätze gezählt oder ich werde auf den fehlenden Operator hingewiesen.

Ich hoffe Ihr könnt mir helfen?

Vielen Dank vorab.

Beste Grüße
huelse77

Titel: Re: Falsche Maskierung ?!
Beitrag von: MzKlMu am April 27, 2015, 10:03:55
Hallo,
was ist denn fld ?, bzw. was willst Du machen mit der Funktion.
Titel: Re: Falsche Maskierung ?!
Beitrag von: el_gomero am April 27, 2015, 10:27:42
Moin,

poste doch mal die Werte zur Übergabe, evtl machen Leer- und/oder Sonderzeichen bei den Bezeichnern Ärger.
Titel: Re: Falsche Maskierung ?!
Beitrag von: huelse77 am April 27, 2015, 10:34:17
Hallo Klaus,

tbl = Tabelle
fld = Feld
crt = Kriterium

Ziel des ganzen ist es in einem Formular den eingegebenen Wert in einem Textfeld zu prüfen, ob dieser in einer Tabelle vorhanden ist. Insgesamt sind es 3 Textfelder und mit je einer Tabelle, wo der Wert geprüft werden soll.

So sieht dann z.B. der Aufruf der Funktion aus:

test("Lieferanten", "Lieferanten", Me!Text0)   

BG

huelse77
Titel: Re: Falsche Maskierung ?!
Beitrag von: MzKlMu am April 27, 2015, 10:38:17
Hallo,
was die Abkürzungen bedeuten ist mir schon klar. Ich hatte eher den Sinn gemeint. Wo kommt denn der Wert für fld her? Gleich Frage für crt ?

Und warum nicht einfach 3 Funktionen für die 3 Felder ?
Titel: Re: Falsche Maskierung ?!
Beitrag von: huelse77 am April 27, 2015, 10:43:55
Hallo Jürgen,

der Wert, der im Textfeld eingegeben wird ist z.B. "FS Neuss" und funktioniert mit dem Code:


Public Function test(tbl As String, fld As String, crt As String) As Integer
test = DCount("*", tbl, "Lieferanten= '" & crt & "'")
End Function


Im möchte das Feld "Lieferanten" mit der Variablen fld ersetzen und das funktioniert leider nicht

Vielen Dank vorab

BG

huelse77

Titel: Re: Falsche Maskierung ?!
Beitrag von: huelse77 am April 27, 2015, 10:49:47
Hallo Klaus,

anstatt 3 Funktionen möchte ich gerne nur eine haben.

fld-Wert = Feldname aus der jeweiligen Tabelle
crt-Wert = kommt aus dem Textfeld

Vielen Dank vorab

BG

huelse77
Titel: Re: Falsche Maskierung ?!
Beitrag von: el_gomero am April 27, 2015, 10:58:47
nochmal - wie lauter Feldname und Kriterium?

Zitat
der Wert, der im Textfeld eingegeben wird ist z.B. "FS Neuss" und funktioniert mit dem Code:

das wage ich zu bezweifeln, denn die Funktion erwartet 3 Übergabeparameter.
Titel: Re: Falsche Maskierung ?!
Beitrag von: huelse77 am April 27, 2015, 11:14:32
Hallo Jürgen,

der Code funktioniert, weil ich 3 Variablen übergebe (s.o.) und nur 2 nutze.

Feldname ="Lieferanten"
Kriterium = "FS Neuss" bzw. je nach Nutzereingabe

Vielen Dank vorab

BG
huelse77
Titel: Re: Falsche Maskierung ?!
Beitrag von: el_gomero am April 27, 2015, 11:28:48
wenn du die Prozedur RunTest ausführst müsste die richtige Anzahl per Messagebox angezeigt werden. Den Tabellennamen hältst du bisher geheim, also im Code ersetzen.


Public Function test(strTbl As String, strFld As String optional, strCrt As String) As Long

test = DCount("*", strTbl, "Lieferanten= '" & strCrt & "'")

End Function

Sub RunTest()

   MsgBox Test("Tabellenname",, "FS Neuss")

End Sub

hatte das 2. Komma vergessen und jetzt nachgetragen.
Titel: Re: Falsche Maskierung ?!
Beitrag von: el_gomero am April 27, 2015, 11:48:12
mit 3 Parametern wäre der Aufruf so (ungetestet):


Public Function test(strTbl As String, strFld As String optional, strCrt As String) As Long
Dim strKrit as String

      strKrit = strFld & "='" & strCrt & "'"
      test = DCount("*", strTbl, strKrit)

End Function

Sub RunTest()

   MsgBox Test("Tabellenname", "Lieferanten", "FS Neuss")

End Sub
[code]
test = DCount("*", tbl, "'" & fld & "'='" & crt & "'")
Titel: Re: Falsche Maskierung ?!
Beitrag von: huelse77 am April 27, 2015, 12:07:19
Hallo Jürgen,

vielen Dank, das war die Lösung!!

BG

huelse77