anten0
Goto Top

Kombinationsfeld mit Form AfterUpdate Ereignis füllen

Musste zuerst ein Kombinationsfeld1 mit Tabellennamen füllen. Nun soll automatisch ein zweites Kombinationsfeld2 mit den Feldnamen der Auswahltabelle aus Kombinationsfeld1 gefüllt werden.

Hallo,

musste zuerst ein Kombinationsfeld1 durch klick auf Button mit Tabellennamen füllen. Nun soll automatisch ein zweites Kombinationsfeld2 mit den Feldnamen der Auswahltabelle aus Kombinationsfeld1 gefüllt werden.

wenn ich unten aufgeführten VBA Code in Access 2000 ausführe bekomme ich eine Endlosschleife als Resultat.
Ich würde gerne wissen was oder wie ich dem Compiler sage das er die Tabellenauswahl aus Kombinationsfeld1 zur Feldnamenausgabe in Kombinationsfeld2 nutzen soll.


Private Sub Befehl7_Click()
Dim RS As Recordset
Dim DB As Database
Dim fld As Field
Dim merkstring As String

If IsNull(Me.Kombinationsfeld10) Then
 MsgBox "Bitte im Kombinationsfeld Tabellen eine Auswahl treffen!"  
 Exit Sub
End If

Set DB = Application.CurrentDb
Set RS = DB.OpenRecordset("SELECT * FROM " & Me.Kombinationsfeld10 & " " & Me.Text5)  

Do
 
 For Each fld In RS.Fields
  
  If merkstring <> "" Then  

   merkstring = merkstring & ";" & fld  

  Else

   merkstring = fld
   
  End If

 Next fld

RS.MoveNext

MsgBox merkstring

merkstring = ""  

Loop Until RS.EOF = True

RS.Close
Set RS = Nothing
Set DB = Nothing

End Sub

----------------------------------------------------------------------------------------------------------------------------------------------

Private Sub Kombinationsfeld10_AfterUpdate()

Dim RS As Recordset
Dim DB As Database

If IsNull(Me.Kombinationsfeld10) Then
 MsgBox "Bitte im Kombinationsfeld Tabellen eine Auswahl treffen!"  
 Exit Sub
End If

Set DB = Application.CurrentDb
Set RS = DB.OpenRecordset("SELECT * FROM " & Me.Kombinationsfeld12)  


End Sub


Wie muss ich verfahren oder welcher Eintrag im Private Sub Kombinationsfeld10_AfterUpdate()???

Grüße
an10zero

Content-ID: 100739

Url: https://administrator.de/contentid/100739

Ausgedruckt am: 23.11.2024 um 04:11 Uhr

anten0
anten0 04.11.2008 um 11:29:04 Uhr
Goto Top
Also hier mal meine Lösung vorerst zu dem Ganzen!

Falss Jemand den code zum ausprobieren übertragen möchte, vorher darauf achten das die Tabelle mit Feldspalte, Feldzeile und Feld sowie das Formular vorhanden sind.

Option Compare Database
Option Explicit
         
                                                                        
Private Sub Befehl7_Click()
Dim RS As Recordset
Dim DB As Database
Dim fld As Field
Dim rsSQL, rsSQLConst1, rsSQLConst2, rsSQLConst3 As String
Dim merkstring As String

If IsNull(Me.Kombinationsfeld10) Then
 
   MsgBox "Bitte Auswahl im Kombinationsfeld treffen!"  
   Exit Sub
 
End If

rsSQL = "SELECT * FROM " & Me.Kombinationsfeld10  
rsSQLConst1 = "SELECT * FROM " & Me.Kombinationsfeld10  
rsSQLConst2 = rsSQLConst1 & " WHERE " & Me.Kombinationsfeld12  
rsSQLConst3 = rsSQLConst2 & "=" & Me.Text5  

If Not IsNull(Me.Kombinationsfeld12) Then

 rsSQL = rsSQLConst2
  
End If
 
If Not IsNull(Me.Text5) Then
 
 rsSQL = rsSQLConst3

End If

Set DB = Application.CurrentDb
Set RS = DB.OpenRecordset(rsSQL)

Do
 
 For Each fld In RS.Fields
  
  If merkstring <> "" Then  

   merkstring = merkstring & ";" & fld  

  Else

   merkstring = fld
   
  End If

 Next fld

RS.MoveNext

MsgBox merkstring

merkstring = ""  

Loop Until RS.EOF = True

RS.Close
Set RS = Nothing
Set DB = Nothing

End Sub

Private Sub Kombinationsfeld10_AfterUpdate()



Dim RS As Recordset
Dim DB As Database
Dim fld As Field
Dim fldNamenMerken As String

Me.Kombinationsfeld12 = Nothing
If IsNull(Me.Kombinationsfeld10) Then
 MsgBox "Bitte Auswahl im Kombinationsfeld treffen!"  
 Exit Sub
End If

fldNamenMerken = ""  

Set DB = Application.CurrentDb
Set RS = DB.OpenRecordset("SELECT * FROM " & Me.Kombinationsfeld10)  

Do
 
 For Each fld In RS.Fields
 
  If fldNamenMerken <> "" Then  
  
   fldNamenMerken = fldNamenMerken + fld.Name & ";"  
  
  Else

   fldNamenMerken = fld.Name
   
  End If

Next fld

Me.Kombinationsfeld12.RowSource = fldNamenMerken
 

RS.MoveNext
  
fldNamenMerken = ""  
 
Loop Until RS.EOF = True


If IsNull(Me.Kombinationsfeld12) Then
 MsgBox "Bitte im Kombinationsfeld Feldauswahl eine Auswahl treffen!"  
 Exit Sub
End If

RS.Close
Set RS = Nothing
Set DB = Nothing

End Sub




Private Sub Form_Open(Cancel As Integer)

Dim DB As Database
Dim td As TableDef
Dim fld As String

Dim kfNamenMerken, fldNamenMerken As String

 'Übergeben der Datenbank  
Set DB = CurrentDb
'für jede Variable Tabellendaten in der Datenbank Tabellendefinition  
For Each td In DB.TableDefs
 'Tabellennamen merken und den nächsten darunter setzen  
 kfNamenMerken = kfNamenMerken + td.Name & ";"  
Next td
 'übergeben der Tabellennamen in kombinationsfeld  
 Me.Kombinationsfeld10.RowSource = kfNamenMerken
 

End Sub

Für Anregungen, Kommentare sowie Besserungen freue ich mich!

Grüße
an 10 zero