Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: tragger am Juni 26, 2013, 22:21:27

Titel: Zu bestimmten Datensatz springen - in Abhängigkeit von Variabeln
Beitrag von: tragger am Juni 26, 2013, 22:21:27
Hallo Leute,

hier nochmal etwas Spezielles. Ich möchte gerne beim Laden des Formulars zu einem bestimmten Datensatz in einem Ufo springen. Hierbei wird Ufo bereits problemlos variabel angesprochen (LastSubWindow).

Nur habe ich nun das Problem, dass ich das jeweilige Primärschlüsselfeld noch ansprechen muss. Hier im Beispiel ist es "KontaktID. Nun muss "KontaktID" ersetzt werden durch irgendeine Variable. Ich habe keine wirkliche Idee. >:( Wie ist das zu lösen?


Hier der Code:
Me(LastSubWindow).Form.Recordset.FindFirst "KontaktID=" & numbermarkersub1
Titel: Re: Zu bestimmten Datensatz springen - in Abhängigkeit von Variabeln
Beitrag von: DF6GL am Juni 26, 2013, 23:33:13
Hallo,

wieso muss KontaktID "ersetzt" werden"?


Der Code positioniert auf den Datensatz, bei dem KontaktID gleich dem Inhalt der Variablen "numbermarkersub1"  ist..

Me!LastSubWindow.Form.Recordset.FindFirst "KontaktID=" & numbermarkersub1
Titel: Re: Zu bestimmten Datensatz springen - in Abhängigkeit von Variabeln
Beitrag von: tragger am Juni 26, 2013, 23:37:09
Hallo,

das ist ja mein Problem. In einem andern Unterformular ist das entscheidende Feld nicht "KontaktID", sondern "AdressID" usw.

Dieser Code steht in meinem Hauptformular und soll universell für alle Unterformulare in Registerkarten gelten.

Edit:
In "lastsubwindow" ist der Name des Unterformulars als String gespeichert.
Titel: Re: Zu bestimmten Datensatz springen - in Abhängigkeit von Variabeln
Beitrag von: DF6GL am Juni 26, 2013, 23:59:38
Hallo,

ok, ich versteh das jetzt..   ;)



Dim Feldname as String
Feldname = "AdressID"
Me(LastSubWindow).Form.Recordset.FindFirst  Feldname  & " = " & numbermarkersub1
Titel: Re: Zu bestimmten Datensatz springen - in Abhängigkeit von Variabeln
Beitrag von: tragger am Juni 27, 2013, 22:02:57
Hallo,

vielen Dank!!!

Oh man, immer wieder so ein doofer Fehler mit dem Zusammensetzen von solchen Bedingungen, wenn ich doch ne Logik darin finden würde.... ???
Titel: Re: Zu bestimmten Datensatz springen - in Abhängigkeit von Variabeln
Beitrag von: DF6GL am Juni 28, 2013, 11:53:32
Hallo,

"wenn ich doch ne Logik darin finden würde"



die Logik gibt es schon, die siehst sie nur nicht....



Die Findfirst-Methode(!)   erfordert für deren Argument einen Where-Condition-Ausdruck als Parameter.   Dieser Ausdruck hat als Ergebnis von Natur aus den Datentyp String. 


Im Beispiel wird nun der String mittels dem &-Operator zusammengebaut aus dem Inhalt der Variablen Feldname,  dem LiteralString   " = "  und dem Inhalt der Variablen numbermarkersub1
Hat diese den Datentyp Zahl, so erfolgt zusätzlich eine interne(!) Konvertierung in Datentyp Text(String).

Die Gänsefüße beim Literalstring  sind nur notwendig, weil VBA diese Zeichen als String(!)-Konstante ansehen muss, ansonsten würde das =-Zeichen als Operator interpretiert.

Wenn unklar ist, wie das Resultat einer solcher String-Zusammensetzung lautet, bietet es sich an, den Ausdruck mit Debug.Print einfach in das Direktfenster zu schreiben...


Debug.Print Feldname  & " = " & numbermarkersub1



Ein weiteres "Erschwernis" ist es, wenn IN einem String selber (als Bestandteil , bzw. Zeichen) ein Gänsefuß vorkommen soll/muss.

Dann muss dieses verdoppelt werden, damit es nicht als Textbegrenzungszeichen erkannt wird.

(Ähnliches gilt für das Hochkomma)


Soll in einem String selber ein Gänsefuß als Textbegrenzungszeichen (irgenwann später) interpretiert werden, kann man dafür das (einfache) Hochkomma anstelle eines doppelten Gänsefußes einsetzen.