Sp

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 :frowning:

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 :frowning:

PS:

Datenbank ist eine MS Access die uebers Tool erstellt wird
Programiersprache ist VB 6.0

MfG Alex

Mahlzeit,

  1. Was ist ein SP? Ich komme nicht dahinter :frowning:
  2. und wichtiger: stelle Deine Anfrage ins Access- oder VB-Brett. Hier ist sie fehlplaziert!

Gruß

Sancho

Oki, dann tütel ich des dinge ma da rueber :wink:

Sp = Stored Procedure

MfG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

  1. Was ist ein SP? Ich komme nicht dahinter :frowning:

Stored Procedure!
Sry, kenn mich in Access bzw. VB nicht aus!