Platzhalterzeichen

Hallo Leute,

Ich habe eine Abfrage, in Access 2003 konstruiert. Nun möchte ich in einer weiteren Spalte dieser Abfrage eine Wenn Formel anwenden:
Der Eintrag in der Spalte „aenderung“ lautet so:
488117 - 23.03.2011 10:21:52
Ich möchte nun durch die folgende Formel in einer neuen Spalte Einträge erzeugen:

Mitarbeiter: Wenn([aenderung]=„488117 - *“;„Ma1“;„MA2“)

Das Problem liegt in dem „*“ als Platzhalter für Datum und Uhrzeit !

Kann Jemand helfen ?

Christian

Hallo,

Ich habe eine Abfrage, in Access 2003 konstruiert. Nun möchte
ich in einer weiteren Spalte dieser Abfrage eine Wenn Formel
anwenden:
Der Eintrag in der Spalte „aenderung“ lautet so:
488117 - 23.03.2011 10:21:52

Was soll der bedeuten, bzw. ausrechnen?

Ich möchte nun durch die folgende Formel in einer neuen Spalte
Einträge erzeugen:

Mitarbeiter: Wenn([aenderung]=„488117 - *“;„Ma1“;„MA2“)

das ist noch verworrener…nicht interpretierbar.

Das Problem liegt in dem „*“ als Platzhalter für Datum und
Uhrzeit !

nein, das liegt an der verkorksten Logik, sorry…

Ein „*“ kann NUR für TEXT-VERGLEICHE herangezogen werden.

Kann Jemand helfen ?

nein, zumindest ich kann nicht erkennen, was das werden soll…

Viele Grüße vom Bodensee
Franz, DF6GL

Hallo Franz,

in der Spalte „aenderung“ wird die Personalnummer („488117“)und das Datum sowie die Uhrzeit automatisch vermerkt.
Wenn ich in einer weiteren Spalte den Namen zu der Personalnr. haben möchte, lese ich doch aus der Spalte aenderung die Personalnr aus und versuche einen entsprechenden Namen zuzuordnen.

was ist daran verkorkst ?

Gruß Christian

Hallo,

in der Spalte „aenderung“ wird die Personalnummer
(„488117“)und das Datum sowie die Uhrzeit automatisch
vermerkt.

Wenn ich in einer weiteren Spalte den Namen zu der Personalnr.
haben möchte, lese ich doch aus der Spalte aenderung die
Personalnr aus

warum aus dieser? Ich versehe diese Spalte so, als dass in der Abfrage darin erst die PNR und die Uhrzeit zusammengesetzt werden.

und versuche einen entsprechenden Namen
zuzuordnen.

dann nimm die Spalte , in de die PNR drinsteht und wende die Dlookup-Funktion auf die Tabelle an, in der die Mitarbeiternamen der jeweiligen PNR zugeordnet sind. Die Tabelle „Miarbeiter“ gibt es doch…?? Wenn nicht, dann wäre das Punkt 4 in der u. st. Liste :wink:

was ist daran verkorkst ?

mehrere Sachen:

–PNR UND Datum in EINER Spalte…
–Lt. vorherigen Posting NUR ZWEI Mitarbeiter möglich
–nicht schlüssige „Methodik“ in der Abfrage
–Tabelle „Mitarbeiter“ muß existieren.

Viele Grüße vom Bodensee
Franz, DF6GL

Hallo,

warum aus dieser? Ich versehe diese Spalte so, als dass in der
Abfrage darin erst die PNR und die Uhrzeit zusammengesetzt
werden.

…recht hast Du, aber ich lese die Personalnr. mit einer Funktion aus.

Private Declare Function apiGetUserName Lib „advapi32.dll“ Alias _
„GetUserNameA“ (ByVal lpBuffer As String, nSize As Long) As Long

Public Function fOSUserName() As String

Dim lngLen As Long, lngX As Long
Dim strUserName As String
strUserName = String$(254, 0)
lngLen = 255
lngX = apiGetUserName(strUserName, lngLen)
If (lngX > 0) Then
fOSUserName = Left$(strUserName, lngLen - 1)
Else
fOSUserName = vbNullString
End If

End Function

Damit steht die Personalnr noch lange nicht in einer Spalte !

dann nimm die Spalte , in de die PNR drinsteht und wende die
Dlookup-Funktion auf die Tabelle an, in der die
Mitarbeiternamen der jeweiligen PNR zugeordnet sind. Die
Tabelle „Miarbeiter“ gibt es doch…?? Wenn nicht, dann wäre
das Punkt 4 in der u. st. Liste :wink:

also kann ich die Spalten auch nicht verknüpfen.

mehrere Sachen:

–PNR UND Datum in EINER Spalte…
–Lt. vorherigen Posting NUR ZWEI Mitarbeiter möglich
–nicht schlüssige „Methodik“ in der Abfrage
–Tabelle „Mitarbeiter“ muß existieren.

OK! Habe Tabelle Mitarbeiter angelegt.
doch wie ist das mit der DLookup - Methode ?

Habe versucht das in der Hilfe nachzuvollziehen - grausig !

Habe ich nicht verstanden !
Kannst Du mir das erläutern ?

Gruß Christian

Hallo,

warum aus dieser? Ich versehe diese Spalte so, als dass in der
Abfrage darin erst die PNR und die Uhrzeit zusammengesetzt
werden.

…recht hast Du, aber ich lese die Personalnr. mit einer
Funktion aus.

Private Declare Function apiGetUserName Lib „advapi32.dll“
Alias _
„GetUserNameA“ (ByVal lpBuffer As String, nSize As Long) As
Long

Public Function fOSUserName() As String

Dim lngLen As Long, lngX As Long
Dim strUserName As String
strUserName = String$(254, 0)
lngLen = 255
lngX = apiGetUserName(strUserName, lngLen)
If (lngX > 0) Then
fOSUserName = Left$(strUserName, lngLen - 1)
Else
fOSUserName = vbNullString
End If

End Function

Mit dieser Funktion liest Du den Anmeldenamen des Windows-User aus…keine Personalnummer.

Damit steht die Personalnr noch lange nicht in einer Spalte !

Ja, das ist richtig. Wir sind aber erst bei dem Anmeldenamen, der in einer Mitarbeitertabelle beim entspr. Mitarbeiter stehen muß.

dann nimm die Spalte , in de die PNR drinsteht und wende die
Dlookup-Funktion auf die Tabelle an, in der die
Mitarbeiternamen der jeweiligen PNR zugeordnet sind. Die
Tabelle „Miarbeiter“ gibt es doch…?? Wenn nicht, dann wäre
das Punkt 4 in der u. st. Liste :wink:

also kann ich die Spalten auch nicht verknüpfen.

?? Gibt es die Tabelle Mitarbeiter? Und steht da neben der PersNr auch der entspr. Windows-Anmeldename (in einem Feld, z. B. „Loginname“ ,der mit o. st. Funktion ausgelesen wird) drin?

Die PNR kann mit Dlookup etwa so für ein Form-Textfeld ermittelt werden:

.
.
Me!PNR = Dlookup(„PNR“,„tblMitarbeiter“,„Loginname= '“ & fOSUserName() & „’“)
.
.

mehrere Sachen:

–PNR UND Datum in EINER Spalte…
–Lt. vorherigen Posting NUR ZWEI Mitarbeiter möglich
–nicht schlüssige „Methodik“ in der Abfrage
–Tabelle „Mitarbeiter“ muß existieren.

OK! Habe Tabelle Mitarbeiter angelegt.
doch wie ist das mit der DLookup - Methode ?

Habe versucht das in der Hilfe nachzuvollziehen - grausig !

was ist da grausig?

Habe ich nicht verstanden !
Kannst Du mir das erläutern ?

Ja, siehe oben…

Viele Grüße vom Bodensee
Franz, DF6GL

Hallo,

?? Gibt es die Tabelle Mitarbeiter? Und steht da neben der
PersNr auch der entspr. Windows-Anmeldename (in einem Feld, z.
B. „Loginname“ ,der mit o. st. Funktion ausgelesen wird) drin?

Der Windows Anmeldename ist bei uns auch gleichzeitig die Personalnr !!
Also habe ich eine Tabelle Namens „Mitarbeiter“, mit den Spalten „Personalnummer“ und „Mitarbeiter“

Die PNR kann mit Dlookup etwa so für ein Form-Textfeld
ermittelt werden:
Me!PNR = Dlookup(„PNR“,„tblMitarbeiter“,„Loginname= '“ &
fOSUserName() & „’“)

…Heißt in meinem Fall doch:
Me!Personalnummer= Dlookup(„Personalnummer“,„Mitarbeiter“,„Personalnummer= '“ &fOSUserName() &"’")

ergibt aber in meinem Fall: #Name?

und bevor Du fragst… ich bin in der Tabelle Mitarbeiter auch drin !

was ist da grausig?

Ich verstehe die Begriffe einfach nicht !

DLookup(Ausdruck, Domäne, [Kriterium]) - Was ist z.B. die Domäne, ist das meine Tabelle in der nachgeschaut wird oder die Tabelle wo der Eintrag rein soll ?

was ist Ausdruck ?

…und da sagst Du das wäre nicht unverständlich.

Gruß Christian

Hallo,

?? Gibt es die Tabelle Mitarbeiter? Und steht da neben der
PersNr auch der entspr. Windows-Anmeldename (in einem Feld, z.
B. „Loginname“ ,der mit o. st. Funktion ausgelesen wird) drin?

Der Windows Anmeldename ist bei uns auch gleichzeitig die
Personalnr !!

Ok, kann man nicht wissen, bzw. erkennen, wenn das „Gleiche“ zwei verschiedene Namen bekommt (einmal „Personalnummer“ , zum Anderen „Anmeldename“ )

Also habe ich eine Tabelle Namens „Mitarbeiter“, mit den
Spalten „Personalnummer“ und „Mitarbeiter“

ja, ist ok, und wenn „Personalnumemr“ in der TAbelle das Primärschlüsselfeld ist.

Die PNR kann mit Dlookup etwa so für ein Form-Textfeld
ermittelt werden:
Me!PNR = Dlookup(„PNR“,„tblMitarbeiter“,„Loginname= '“ &
fOSUserName() & „’“)

…Heißt in meinem Fall doch:
Me!Personalnummer=
Dlookup(„Personalnummer“,„Mitarbeiter“,„Personalnummer= '“
&fOSUserName() &"’")

ergibt aber in meinem Fall: #Name?

Es kommt hier noch drauf an, welchen Datentyp „Personalnummer“ hat. Hier ist TEXT angenommen.

Außerdem ist im konkreten Fall die Dlookup-Funktion gar nicht nötig, weil lt. o. st. Definition:

Der Windows Anmeldename ist bei uns auch gleichzeitig die
Personalnr !!

schon durch fOSUserName() geliefert wird. Allenfalls könnte man die Mitarbeiter-Tabelle dazu benutzen um festzustrellen, dass der angemeldete User auch in der Mitarbeitertabelle vorhanden ist, d. h. die Befugnis hat, die DB zu benutzen.

und bevor Du fragst… ich bin in der Tabelle Mitarbeiter auch
drin !

hätte ich jetzt nicht gefragt, weil es sekundär ist, wer alles in der Tabelle eingetragen ist.

was ist da grausig?

Ich verstehe die Begriffe einfach nicht !

da mußt Du halt konkret fragen…

DLookup(Ausdruck, Domäne, [Kriterium]) - Was ist z.B. die
Domäne, ist das meine Tabelle in der nachgeschaut wird oder
die Tabelle wo der Eintrag rein soll ?

„Domäne“ ist die Tabelle oder Abfrage, in der Dlookup nachschaut und dabei das Kriterium benutzt, um den oder die dadurch bestimmten DS zu filtern.

Wenn mehrere DS dem angegebenen Kriterium (das ist genau so wie die Where-Condition in einer Abfrage , bzw. SQL-String, nur ohne das Wort „Where“) entsprechen, dann liefert Dlookup den AUSDRUCK mit den DAten aus dem ERSTEN gefundenen Datensatz.

was ist Ausdruck ?

Ausdruck ist ein „Term“ , der eines oder mehrere Felder miteinander verbindet oder berechnet. Normalerweise gibt man hier nur ein Tabellenfeld an. Man kann aber auch eine Formel (–> Ausdruck) angeben, die dann halt gleich berechnet wird:
Msgbox Dlookup(„Personalnummer & ', ’ & Mitarbeiter“ , „Mitarbeiter“, „Mitarbeiter=‚Christian‘“)

…und da sagst Du, das wäre unverständlich.

Viele Grüße vom Bodensee
Franz, DF6GL

Hallo,

„Domäne“ ist die Tabelle oder Abfrage, in der Dlookup
nachschaut und dabei das Kriterium benutzt, um den oder die
dadurch bestimmten DS zu filtern.

so weit-so gut !

Wenn mehrere DS dem angegebenen Kriterium (das ist genau so
wie die Where-Condition in einer Abfrage , bzw. SQL-String,
nur ohne das Wort „Where“) entsprechen, dann liefert Dlookup
den AUSDRUCK mit den DAten aus dem ERSTEN gefundenen
Datensatz.

Aha !

was ist Ausdruck ?

Ist der Ausdruck das was wiedergegeben werden soll ?

Ausdruck ist ein „Term“ , der eines oder mehrere Felder
miteinander verbindet oder berechnet. Normalerweise gibt man
hier nur ein Tabellenfeld an. Man kann aber auch eine Formel
(–> Ausdruck) angeben, die dann halt gleich berechnet wird:
Msgbox Dlookup(„Personalnummer & ', ’ & Mitarbeiter“ ,
„Mitarbeiter“, „Mitarbeiter=‚Christian‘“)

Ich glaub hier liegt der Hase im Pfeffer !
Meine Tabelle Mitarbeiter ist so aufgebaut, daß zunächst in Spalte A die Personalnummer steht. In der Spalte B dann der zugehörige Name !

Wenn ich also den Name erscheinen lassen möchte, dann vergleiche ich doch die fOSUserName() mit der Saplte Personalnummer und lasse mir den Mitarbeiter aus der Spalte B geben oder ?

Also: Me!Mitarbeiter = Dlookup(„Mitarbeiet & ', ’ & Mitarbeiter“ ,„Personalnummer=‚fOSUserName()‘“)

…und da sagst Du, das wäre unverständlich.

Ja,-das ist echt schwer für mich !

Gruß Christian