Hallo, ich habe eine Frage zu meiner Datenbank:
Ich habe ein Formular und dazu ein UF. Ich möchte gerne die Datensätze je nach anzahl und Auswahl im Kombifeld nummerieren und aktualisieren nach einer weiteren Auswahl vom Kombifeld:
Code habe ich aus http://www.donkarl.com/faq/FAQ4Formulare.htm#4.39
Private Sub Unterformular_Fragpo_Enter()
Function FctNr()
'gibt eine laufende Nummer im Formular zurück
'Anzeige im Formular durch ein Feld mit Steuerelementinhalt: =FctNr()
On Error GoTo FctNr_Error
Me.RecordsetClone.Bookmark = Me.Bookmark
FctNr = Me.RecordsetClone.AbsolutePosition + 1
FctNr_Exit:
Exit Function
FctNr_Error:
If Err.Number = 3021 Then FctNr = 0 'bei neuem DS
Resume FctNr_Exit
End Function
End sub
Und beim Textfeld im Steuerelementinhalt habe ich dann =FctNr() geschrieben.
Jedoch bekomme ich im Textfeld die Fehlermeldung= #Name
Kann jemand helfen? Danke
Marco
Hallo Marco
du musst den Code nur richtig übernehmen:
Private Sub Unterformular_Fragpo_Enter()
Function FctNr()
'gibt eine laufende Nummer im Formular zurück
'Anzeige im Formular durch ein Feld mit Steuerelementinhalt: =FctNr()
On Error GoTo FctNr_Error
Me.RecordsetClone.Bookmark = Me.Bookmark
FctNr = Me.RecordsetClone.AbsolutePosition + 1
FctNr_Exit:
Exit Function
FctNr_Error:
If Err.Number = 3021 Then FctNr = 0 'bei neuem DS
Resume FctNr_Exit
End Function
End sub
Vielen Dank für die schnelle Antwort. Habe das alles so befolgt.
Leider ist nach wie vor die Fehlermeldung: #Name im Textfeld.
Zur Info:
HF mit Kombifeld und UF mit den Datensätzen. Nach Auswahl listen sich die Datensätze auf im UF und die hätte ich gerne nummeriert. Steuerelementinhalt des Textfeldes: =FctNr()
Objektliste steht:(Allgemein) und in der Prozedurliste: FctNr
Function FctNr()
'gibt eine laufende Nummer im Formular zurück
'Anzeige im Formular durch ein Feld mit Steuerelementinhalt: =FctNr()
On Error GoTo FctNr_Error
Me.RecordsetClone.Bookmark = Me.Bookmark
FctNr = Me.RecordsetClone.AbsolutePosition + 1
FctNr_Exit:
Exit Function
FctNr_Error:
If Err.Number = 3021 Then FctNr = 0 'bei neuem DS
Resume FctNr_Exit
End Function
Hast du evtl. noch eine Idee?
Gruß Marco
Hallo,
scheinbar hat sich da irgendwo ein Fehler eingeschlichen.
Verwirf mal A L L E S was du bisher damit angestellt und versucht hat und beginne nochmal von Vorne.
Wenn du das Textfeld und etwaige Codes aus dem UNTERFORMULARMODUL rausgeschmissen hast, speichere die DB und komprimiere/repariere mal.
1. Erstelle im UNTERFORMULAR (Detailbereich) ein Textfeld Name des Textfeldes egal - nenne es einfach mal 'txtNr'.
2. Kopiere die Function ins Formularmodul des UNTERFORMULARS (keinerlei Bindung an ein Ereignis)
3. Im Entwurfsmodus des (UNTER)Fromulars schreibe in der Registerkarte 'Daten' unter 'Steuerelementinhalt' ... = fctNr()
Wenn du nichts umbenannt hast und die Function so übernommen hast wie Oma das korrigiert reingestellt hat, dann funktioniert das! ;)
[Anhang gelöscht durch Administrator]
Hallo, danke für die Antwort.
Ich scheiter ab Punkt 2.
Zitat2. Kopiere die Function ins Formularmodul des UNTERFORMULARS (keinerlei Bindung an ein Ereignis)
Wenn ich den Code Function FctNr() in das Formularmodul einfüge, mach ich das doch so:
Unter Datenbanktools in Visual Basic gehen. Dort im Objektfenster das Unterformular auswählen und im Prozedurfenster frei lassen. Ist das so richtig? Dann den Code einfügen.
Zitat3. Im Entwurfsmodus des (UNTER)Fromulars schreibe in der Registerkarte 'Daten' unter 'Steuerelementinhalt' ... = fctNr()
Leider steht bei mir im Entwurfsmodus des Unterformulars bei Daten "Herkunftsobjekt, Verknüpfen nach Verknüpfen vor" kein Steuerelement.
Könnte mir jemand einen Tip geben? Danke
Gruß Marco
Hallo,
2. was heißt ".. frei lassen" ? Im Formularmodul können ja noch andere Prozeduren stehen. Kopier die Funktion einfach komplett zusätzlich in dieses Prozedurfenster (an eine "freie" Stelle im Formularmodul, falls die nicht schon drinsteht)
3. da ist natürlich "Steuerelemementinhalt des Textfeldes, das die laufende Nr anzeigen soll" gemeint... (lt. Deiner anfänglichen Beschreibung hast Du das schon)
Hallo,
ZitatDort im Objektfenster das Unterformular auswählen ...
...mit Doppelklick auswählen, dann kommst du direkt ins Form-Modul, dann weiter wie Franz schon angemerkt hat.
Zitatda ist natürlich "Steuerelemementinhalt des Textfeldes ...
Klaro, sorry, habe vergessen zu erwähnen, dass du das Steuerelement zuerst auswählen musst.
Also in der Registerkarte 'Daten' vom Textfeld 'txtNr' bei Steuerelementinhalt (=1.Zeile) muss dann das =fctNr() hin!
Das Zeugs muss funktionieren ;D ::)
Guten Abend, ich kann mich nur bedanken das Ihr immer ansprechbar seit.
Leider klappt es immer noch nicht. Ich habe mal Screenshots gemacht. Könntet ihr mal bitte drüberschauen? Irgendwie klappt es noch nicht mit dem Ufo und der Nummerierung.
Vielen Dank
Gruß Marco
[Anhang gelöscht durch Administrator]
Hallo,
die Funktion steht sehr wahrscheinlich im Hauptformular(modul) und nicht im Unterformular(modul).
Hallo,
habe die Funktion jetzt ins UF Modul gepackt(siehe Anlage)
Aber gleiches Problem: #Name im Textfeld...
Muss ich da noch irgendwas beachten?
Gruß Marco
[Anhang gelöscht durch Administrator]
Hallo,
da hast Du (wieder) falsch gepackt...
entferne die Zeilen
Private Sub Unterformular_Fragpo_Enter()
und
End Sub
(nach "End Function")
Hallo,
habe das geändert und immernoch steht dort #Name im Textfeld.
Habe die Datenbank angehängt. Irgendwo ist der Schnitzer drin.
Unter frmVersuch ist meine Problematik.
Danke
Gruß Marco
[Anhang gelöscht durch Administrator]
Hallo,
anbei..
1)Funktion in ein Standardmodul gelegt.
2) "Me" durch Funktionsargument ersetzt"
3) Im Aufruf akt. Form-Objekt als Parameter angegeben.
[Anhang gelöscht durch Administrator]
Ich möchte mich sehr bedanken. Alles geklappt und selbst nochmal probiert.
Vielen Dank ihr seid klasse :D