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
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
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

