Hallo,
ich hoffe hier kann mir jemand helfen und weiss wo mein Denkfehler liegt.
Eine kurze Beschreibung. Ich habe ein Tool das verwaltet eine DB, die etliche Tabellen beinhaltet. In diesem Tool kann man SP erstellen und sie werden dann der DB hinterlegt.
Desweiteren kann man nun auf ein Button klicken und bekommt dann alle vorhanden SP aufgelistet.
Nun habe ich aber das Problem. Nehmen wir mal an es gibt eine Tabelle Names personen mit den Feldern „Vorname“ und „Nachname“.
Erstelle ich nun eine SP und speichere sie, so bekomme ich bei Bedarf angezeigt! Schliesse ich aber die Datenbank und öffne sie dann erneut, so findet er keine SP mehr. Wenn ich mir nun den Inhalt der Datenbank anschaue, so stelle ich fest, das sich auf einmal eine neue Tabelle in der DB befindet. Sie traegt den Namen , der SP und die Felder sind die von den Personen
Hier noch schnell ein kleiner Auzug wie ich die SP speichere und wieder einlese.
Declarationen
Public Con As New ADODB.Connection 'Connection
Public CatADO As New ADOX.Catalog 'ADOX Catalog
Public Cmd As New ADODB.Command 'ADO Command
speichern tue ich die SP wiefolgt
Set Cmd.ActiveConnection = Con
Set CatADO.ActiveConnection = Con
If Trim(Text4.Text) "" And InStr(1, LCase(Text3.Text), "[parameter]", vbBinaryCompare) \> 0 Then
If IsNumeric(Text4.Text) Then
P = "PARAMETERS @IntVal INTEGER;"
Cmd.CommandText = P & Replace(LCase(Text3.Text), "[Parameter]", "@IntVal", 1, 1, vbTextCompare)
Else
P = "PARAMETERS @TxtVal TEXT(255);"
Cmd.CommandText = P & Replace(LCase(Text3.Text), "[Parameter]", "@TxtVal", 1, 1, vbTextCompare)
End If
Else
Cmd.CommandText = Text3.Text
End If
CatADO.Procedures.Append vData, Cmd
auslesen der SP mache ich wiefolgt
Dim vData as Variant
Set CatADO.ActiveConnection = Con
Set Cmd.ActiveConnection = Con
For i = 0 To CatADO.Procedures.Count - 1
If i = 0 Then
ReDim vData(0)
Else
ReDim Preserve vData(i)
End If
vData(i) = CatADO.Procedures.Item(i).Name
Next i
Die DB öffne ich wiefolgt
Public Function OpenDatabase(sFile As String, Optional PWD As String = "") As Boolean
On Error GoTo ErrHandler
Dim AdoErr As ADODB.Error
If Con.State = adStateOpen Then Exit Function
If Not (FileExists(sFile)) Then Exit Function
With Con
.CursorLocation = adUseClient
.Mode = adModeReadWrite
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source") = sFile
If Len(PWD) 0 Then .Properties("Jet OLEDB:smiley:atabase Password") = PWD
.Open
OpenDatabase = CBool(Con.State = adStateOpen)
End With
Exit Function
ErrHandler:
Call fAdoErr("fConnectDB")
End Function
Weiss jemand wo hier der Hund begraben liegt, denn ich verzweifel schon langsam
PS:
Datenbank ist eine MS Access die uebers Tool erstellt wird
Programiersprache ist VB 6.0
MfG Alex