Objektnamen aus Variablen zusammen setzen?!

Blaubmania

Erfahrenes Mitglied
Hi,

ähm also das Problem ist das ich im Formular txtbox1 .... txtbox10 habe diese möchte ich alle nacheinander mit Hilfe einer Schleife ansprechen mein Code sieht z.Z. so aus:

Code:
If r.NoMatch = False Then
        Set r2 = db.OpenRecordset("Personal")
        Do Until r.NoMatch = True
            r2.FindFirst "[PerNr] = '" & r![PerNr] & "'"
            Me.txtarbplatz& i&.IsVisible = True
            Me.txtname& i&.IsVisible = True
            Me.txtgebaeude& i&.IsVisible = True
            Me.btncheck& i&.IsVisible = True
            Me.txtarbplatz& i& = r2![PerArbPlatz]
            Me.txtname& i& = r2![PerVorname] & " " & r2![PerName]
            i = i + 1
            r.FindNext "[TL] = True"
        Loop

bloß scheint das i da wohl falsch plaziert zu sein bzw. wie wird es korrekt geschrieben?
 
1. Fehler hab ich gefunden i war Integer habs korrigiert nun eghts aba imma noch ned die Zeile sieht mittlerweile nun so aus:

Code:
Me.txtarbplatz& Str$(i) & .IsVisible = True

Es kommt nun die Fehlermeldung Unzulässiger oder nicht ausreichend definierter Verweis
 
Zuletzt bearbeitet:
Naja vlt. kann mir ja hier jemand hlefen wie lautet diese Anweisung richtig. Hab in der Splate TL, Ja/Nein Feld und ich möchte das er alle Zeilen raussucht in der DB wo TL wahr ist.

Code:
r.FindNext "[TL] = True"
 
Hi.

Um ein Control mit einem bestimmten Namen anzusprechen kannst du die Controls Kollektion verwenden. Bsp:
Visual Basic:
Dim i as Integer
for i = 1 to 10
  Me.Controls("txtbox" & i).Text = "..."
next i
Der Suchstring sollte einfach nur "TL" sein:
Visual Basic:
r.FindNext "TL"

Gruß
 
Die Geschichte mit den Controls scheint zu gehen (Thx dafür) der Suchstring allerdings geht imma noch nicht :/

Code:
Function auflisten()
    Dim db As Database
    Dim r As Recordset
    Dim r2 As Recordset
    Dim i As Integer
    
    i = 0
    
    Set db = CurrentDb
    Set r = db.OpenRecordset("KartenNummer")
    
    r.FindFirst "[TL] = True"
    
    If r.NoMatch = False Then
        Set r2 = db.OpenRecordset("Personal")
        Do Until r.NoMatch = True
            r2.FindFirst "[PerNr] = '" & r![PerNr] & "'"
            Me.Controls("txtname" & i).IsVisible = True
            i = i + 1
            r.FindNext "[TL] = True"
        Loop
    End If
    
End Function
 
Hm. Warum machst du eigentlich immer diese eckigen Klammern um die Spaltennamen - das hab ich irgendwie noch nie gesehen. Vielleicht kann dir da jemand anders helfen.

Gruß
 
deepthroat hat gesagt.:
Hm. Warum machst du eigentlich immer diese eckigen Klammern um die Spaltennamen - das hab ich irgendwie noch nie gesehen. Vielleicht kann dir da jemand anders helfen.

Gruß

Das steht so in den Büchern etc. ^^ das die Spaltennamen so geschrieben werden aba wenn man se weg lassen kann umso besser =) nerven eh nur.

Werd den Code nochmal neu schreiben weil habe einfach mal r.FindFirst gemacht und auch mal ne andere Abfrage rein da kommt imma der selbe Fehler und das kann ja ned sein trotzdme danke für die Hilfe die eine Sache haben wa ja doch geklärt gekriegt :D
 
Also ich habs nun endlich es scheint wohl daran gelegen zu ahben das ich das dbopendynaset nicht drin hatte

Set r = db.OpenRecordset("KartenNummer", dbOpenDynaset) nun geht die Abfrage auch vlt. kann mir jemand kurz erklären warum das da unbedingt rein muss.
 
Anmerkung
Wenn Sie ein Recordset-Objekt in einem Microsoft Jet-Arbeitsbereich öffnen und Sie keinen Typ angeben, so erstellt OpenRecordset ein Recordset-Objekt vom Typ Tabelle, falls möglich.
Wenn Sie eine verknüpfte Tabelle oder Abfrage angeben, so erstellt OpenRecordset ein Recordset-Objekt vom Typ Dynaset.
In einem ODBCDirect-Arbeitsbereich entspricht die Voreinstellung dbOpenForwardOnly.

Vielleicht hilft dir das weiter.
 
Zurück