Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Datensatzzähler





Frage

Habe im Netz einen code entdeckt, der die kleinen Navigationsschaltflächen in A2002 durch größere ersetzt. Funktioniert auch tadellos. Desweiteren ist auch ein Code in diesem Modul enthalten, der auch den Datensatzzähler ersetzen kann. Leider bekomme ich diesen Code-'Teil' bei mir nicht zum Laufen und weiß nicht, weshalb. Kann mir ein Access-Profi sagen, was ich tun muß, damit in meinem Formular auch dieser frei formatierbare Datensatzzähler läuft ?? Meine DB : Tabelle- und Formularname = 'Rechnung' Steuerelementname = 'RGNR' (wenn diese Angaben nicht ausreichen, bitte posten ) Vielen Dank im voraus Gruß rockola Der entsprechende Code : 'Funktionen zum Navigieren mit Datensätzen Option Compare Database Option Explicit Public Function ZumLetzten() On Error Resume Next DoCmd.GoToRecord , , acLast End Function Public Function ZumErsten() On Error Resume Next DoCmd.GoToRecord , , acFirst End Function Public Function ZumVorigen() On Error Resume Next DoCmd.GoToRecord , , acPrevious End Function Public Function ZumNächsten() On Error Resume Next DoCmd.GoToRecord , , acNext End Function Public Function SUCHEN(Feld As String) 'Gebunden an alle Listenfelder "NameSuchen" On Error GoTo SUCHEN_Err With CodeContextObject DoCmd.GoToControl Feld DoCmd.FindRecord !NameSuchen, acEntire, False, acDown, False, , True 'SendKeys "{F2}", True End With SUCHEN_Exit: Exit Function SUCHEN_Err: MsgBox Err.Description, 48, "Fehler in Prozedur 'SUCHEN()' im Modul 'Datensatznavigation'!" Resume SUCHEN_Exit End Function Public Function WEITERSUCHEN(Feld As String) 'Gebunden an Schaltfläche "Weitersuchen" in allen Listenfeldern "Suchen" On Error GoTo WEITERSUCHEN_Err With CodeContextObject DoCmd.GoToControl Feld If Not IsNull(!NameSuchen) Then DoCmd.FindNext End If 'SendKeys "{F2}", False End With WEITERSUCHEN_Exit: Exit Function WEITERSUCHEN_Err: MsgBox Err.Description, 48, "Fehler in Prozedur 'WEITERSUCHEN()' im Modul 'Datensatznavigation'!" Resume WEITERSUCHEN_Exit End Function Public Function Rückgängig() On Error GoTo Err_rück With CodeContextObject If .Dirty Then DoCmd.RunCommand acCmdUndo End If End With Err_rück: Exit Function End Function Function DSNummer(ausdruck As String, frm As Form) As String ' =DSNummer("Datensatz",[Form]) ' im Programmcode wie folgt einzusetzen: ' strVariable = DSNummer("Adresse", Me) oder ' strVariable = DSNummer("Schule", Forms!MyForm) ' gibt einen Ausdruck zurück wie "Adresse 4 von 108" ' ist das Formular auf einem neuen Datensatz, ' wird die Zeichenfolge "Neuer Datensatz" zurückgegeben. (angepaßt am 14.4.98) On Error GoTo DSNummer_Err Dim rst As Recordset Dim lngNumRecords As Long Dim lngCurrentRecord As Long Dim strTmp As String Set rst = frm.RecordsetClone rst.MoveLast rst.Bookmark = frm.Bookmark lngNumRecords = rst.RecordCount lngCurrentRecord = rst.AbsolutePosition + 1 strTmp = ausdruck & " " & lngCurrentRecord & " von " & lngNumRecords DSNummer_Exit: On Error Resume Next DSNummer = strTmp rst.Close Set rst = Nothing Exit Function DSNummer_Err: Select Case Err Case 3021 strTmp = "Neuer Datensatz" Resume DSNummer_Exit Case Else strTmp = "#" & Error Resume DSNummer_Exit End Select End Function

Antwort 1 von rockola

Hallo, Marie,
Du hast ja Recht; viel zu lang..
In meinem Formular 'Kunden',Feld 'KDNR' darin Unterformular 'Rechnung', Feld 'RGNR' und darin Unterformular 'Positionen' läuft 'DsNummer' nicht, weil ich den Bezug im Textfeld nicht hinbekomme.
'=DSNummer("Datensatz";([Formulare]![Kunden]' und dann weiter mit [Formulare]![Rechnung]. Aber wie muß dieser aufgebaut sein ?? Ich bekomme diesen Ausdruck nicht zum Laufen.
Kann mir jemand helfen ??
Gruß und ne schöne Woche
rockola


Antwort 2 von Marie

dann hör doch mal auf schon wieder den ganzen Text zu posten, Du postest doch 8 Funktionen hier rein und sieben davon haben mit Deiner Frage gar nichts zu tun, es geht doch nur um die letzte und eigentlich nur um den Teil:

Function DSNummer(ausdruck As String, frm As Form) As String

' =DSNummer("Datensatz",[Form])
' im Programmcode wie folgt einzusetzen:
' strVariable = DSNummer("Adresse", Me) oder
' strVariable = DSNummer("Schule", Forms!MyForm)
' gibt einen Ausdruck zurück wie "Adresse 4 von 108"
' ist das Formular auf einem neuen Datensatz,
' wird die Zeichenfolge "Neuer Datensatz" zurückgegeben. (angepaßt am 14.4.98)

Und irgendwas scheinste falsch verstanden zu haben. Was willst Du denn eigentlich für eine Datensatznummer? Die von Deinem Formular oder die von Deinem Unterformular? Da musst Du Dich schon entscheiden und entsprechend dann
die Funktion aufrufen:

Function DSNummer(ausdruck As String, frm As Form) As String

Der Aufruf steht doch hier zum Beispiel:
strVariable = DSNummer("Adresse", Me)

Also etwa
dim strVariable as String
StrVariable = DSNummer("KDNR",Me)

oder halt eben
strVariable = DSNummer("RGNR", Forms!Rechnung)

beides geht ja wohl nicht, weil Du in Deinem Unterformular ja sicher völlig andere datensätze hast wie in Deinem Formular.


HTH

Gruß Marie




Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: