abfrage in VB

Icem@n

Grünschnabel
hallo,

Ich benutze VB6(SP5) und Access2000

mein Programm sieht folgendermaßen aus:

Code:
Option Explicit
Dim rst As Recordset
Dim rec As Recordset
Dim conn As Connection

Private Sub Command1_Click(Index As Integer)
Select Case Index
        Case 0
        rst.MoveFirst
        Case 1
If Not rst.EOF Then
        rst.MoveNext
If rst.EOF Then rst.MoveLast
End If
    Case Is = 2
If Not rst.BOF Then
    rst.MovePrevious
If rst.BOF Then rst.MoveFirst
End If
    Case Is = 3
    rst.MoveLast
End Select
End Sub

Private Sub Command2_Click(Index As Integer)
Select Case Index
        Case 0
        rec.MoveFirst
        Case 1
If Not rec.EOF Then
        rec.MoveNext
If rec.EOF Then rec.MoveLast
End If
    Case Is = 2
If Not rec.BOF Then
    rec.MovePrevious
If rec.BOF Then rec.MoveFirst
End If
    Case Is = 3
    rec.MoveLast
End Select
End Sub


Private Sub firma_hinzufügen_ändern_löschen_Click()
neuefirma.Show
End Sub

Private Sub Form_Load()

''''''''''''''''''''''''''' Verbindung zur DB herstellen '''''''''''''''''''''''''''''''''

Set conn = New Connection
conn.Open "Provider = Microsoft.Jet.Oledb.4.0;" & _
"Data Source = " & App.Path & "\Fernwartung1.mdb"

''''''''''''''''''''''''''' firma-Tabelle öffnen'''''''''''''''''''''''''''''''''

Set rst = New Recordset
rst.CursorLocation = adUseClient
'rst.CursorType = adOpenStatic
'rst.LockType = adLockOptimistic
rst.Open "Select * from firma", conn

Set Text1(0).DataSource = rst
Text1(0).DataField = rst.Fields("firma_id").Name
Set Text1(1).DataSource = rst
Text1(1).DataField = rst.Fields("firma_name").Name

'''''''''''''''''''''''''''Knoten-Tabelle öffnen'''''''''''''''''''''''''''''''''

Set rec = New Recordset
rec.CursorLocation = adUseClient
'rec.CursorType = adOpenStatic
'rec.LockType = adLockOptimistic
rec.Open "Select * from Knoten", conn

Set Text2(0).DataSource = rec
Text2(1).DataField = rec.Fields("firma_id").Name

If Text2(1).Text = Text1(0).Text Then
    Set Text2(0).DataSource = rec
        Text2(0).DataField = rec.Fields("Knoten_id").Name
    Else
        
        Text2(0).Text = "nicht vorhanden"
End If
End Sub

mein Problem ist das ich der Knotentabelle die Firma_id übergeben will die in der Firma tabelle ausgewählt wird, damit in der Knotentabelle nur die knoten der ausgewählten firma zur auswahl stehen, nun hab ich schon eine Textbox wo die ausgewählte Firma_id drinne steht, aber ich kann einfach nicht darauf zugreifen. Gibt es eine Möglichkeit in eine SQL-where abfrage auf den wert in der Textbox zuzugreifen?

bin für jede Hilfe Dankbar

Mfg Icem@n
 
na ich wollte das gleich in die open anweisung des Recordsets mit einbauen.

Code:
Set rst = New Recordset
rst.CursorLocation = adUseClient
'rst.CursorType = adOpenStatic
'rst.LockType = adLockOptimistic
rst.Open "Select * from firma", conn

sprich so in etwa:
Code:
rec.Open "Select * from Knoten where firma_id = " & Text1(0).Text & "", conn

aber da kommt dann ein Laufzeitfehler(Datentypen in Kriterienausdruck unverträglich)
 
Soweit ich das mitbekommen habe, verträgt VB keine Leerzeichen in der folgenden Zeile:

Code:
rst.Open "Select * from firma", conn

Aber so ganz verstanden hab ich dein Problem nicht. Kenn mich aber auch mit SQL nicht aus. Im Notfall öffnest du die Tabelle und kontrollierst dann einfach die ID. (oder hab ichs falsch verstanden? Die ID steht doch in einer bestimmten Spalte in der Tabelle Firma, oder?)
 
die spalte Firma_id ist in der Tabelle Firma Primärschlüssel
und in der Tabelle Knoten gibt es die auch mit einer Beziehung zur Firma tabelle
in meinem VB_Projekt öffne ich als erstes die Firma Tabelle und übergebe die Firma_id und den Firma_name an 2 Textboxen.
Wenn man dann die Firma gewählt hat kann man einen Arbeitsplatz auswählen
ich will aber das nur die Arbeitsplätze angezeigt werden die die gleiche Firma_id haben wie in der Textbox der ausgewählten Firma.
Deswegen will ich halt in der Abfrage für die Knotentabelle in der where Klausel auf die Textbox zugreifen und den Inhalt mit der firma_id der Tabelle Knoten vergleichen.
 
es muss doch eine möglichkeit geben das so zu bewerkstelligen.

PLEASE HELP
 
Zuletzt bearbeitet:
Wie schon gesagt, von SQL hab ich keine Ahnung. Du kannst doch aber die Tabelle öffnen und dann vergleichen. Braucht zwar länger aber ist doch besser als gar nichts,oder?
 
Falls das mit den Leerzeichen stimmt kannst du doch die SQL-Anweisung in einer String-Variablen zusammenbasteln und dann übergeben.

Code:
Dim SQL as String
SQL="bla..." & textfeld.text & "bla..."
rec.open SQL, conn

hast das schonmal versucht ?
 
Solange die Tabelle kein Leerzeichen beinhaltet, klappt das auch.
Aber ich glaube das Problem lag woanders. Es soll doch eine Art Abgleich mit einer ID (die in den Spalten stehen) gemacht werden.

So hab ich das zumindestens verstanden! :rolleyes:
Naja - schaun wa mal!
 
Hi,

sorry hat etwas gedauert hatte noch andere Arbeit die erledigt werden musste.
Danke aber für euere Antworten.

zu

Original geschrieben von Retlaw

Code:
Dim SQL as String
SQL="bla..." & textfeld.text & "bla..."
rec.open SQL, conn

hast das schonmal versucht ?

hab ich versucht , kommt aber auch ein Laufzeitfehler.

wie gesagt ich will in der Recordset Open-anweisung einer Tabelle, in der Where-Klausel einen Wert, mit einem Wert der in einer Textbox steht vergleichen.
 
Zuletzt bearbeitet:
Zurück