Sp

Hallo,

ich habe diesen Artikel bereits woanders gepostet und habe ihn nun nochmal hier gepostet, auf anraten eines anderen User ( er sei hier besser aufgehoben).

Ich hoffe ich bekomme hier ein wenig Hilfe :smile:

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

Hallo Alex,

Ich hoffe ich bekomme hier ein wenig Hilfe :smile:
ich hoffe hier kann mir jemand helfen und weiss wo mein
Denkfehler liegt.

hmm, da sehe ich schwarz…da fehlen uns so 200 Informationen …

Eine kurze Beschreibung. Ich habe ein Tool

Tool? welches denn?

das verwaltet eine DB, die etliche Tabellen beinhaltet.

welche Art von DB? Typ, Version etc.?

In diesem Tool kann man SP erstellen

definiere SP! Nicht jeder kennt die Abkürzung…

und sie werden dann der DB hinterlegt.

wie hinterlegt? Bitte genau beschreiben!

Desweiteren kann man nun auf ein Button klicken und bekommt
dann alle vorhanden SP aufgelistet.

welcher Button? WO? in der DB?

Nun habe ich aber das Problem. Nehmen wir mal an es gibt eine
Tabelle Names personen mit den Feldern „Vorname“ und
„Nachname“.

ok, das nehmen wir an.

Erstelle ich nun eine SP und speichere sie,

speichern in der DB? wie?

so bekomme ich bei Bedarf angezeigt!

WAS bekommst du WO, dann WIE, WOMIT angezeigt?

Schliesse ich aber die Datenbank und öffne
sie dann erneut, so findet er keine SP mehr.

womit öffnest du die DB?

Wenn ich mir nun den Inhalt der Datenbank anschaue,

womit anschaust?

so stelle ich fest, das sich auf einmal eine neue Tabelle in der DB befindet.

ok, dann wurde das SP als Tabelle und nicht als Abfrage abgelegt!

Sie traegt den Namen , der SP und die Felder sind die von den
Personen :frowning:

Felder von Personen? D.h. Herr Meyer, Herr Schulze etc. sind Feldbezeichnungen?

Weiss jemand wo hier der Hund begraben liegt, denn ich
verzweifel schon langsam :frowning:

hmmm, die Frage ist, was willst du eigentlich erreichen? Was soll denn als Ergebnis rauskommen?

PS:

Datenbank ist eine MS Access

welche Version?

die uebers Tool

welches Tool?

erstellt wird

wie erstellt wird?

Programiersprache ist VB 6.0

Wie du lesen kannst, sind da eine Menge Fragen offen.
Vielleicht nimmst du dir mal Zeit, das Ganze genauer zu erklären. Dann wird man dir bestimmt eher helfen können.

Grundsätzlich sind die Angaben, welche Software du verwendest unbedingt notwendig!! Die Bezeichnung TOOL ist nicht gerade hilfreich.
Access ist Bestandteil vom Office Paket. Welches hast du? Welche Service Packs sind installiert?

Für den Anfang eine kleine Auswahl/Möglichkeit der Hilfe:
http://www.google.de/search?aq=o&num=100&hl=de&newwi…

Grüße aus Raben Steinfeld (bei Schwerin)
Wolfgang
(Netwolf)

… was man auch im Artikel selbst lesen kann. (Aber auch, dass es halt eigentlich um VB 6.0 geht - so dass der Artikel hier eigentlich fehl am Platze ist). Ich frag mich darüber hinaus, was das überhaupt werden soll, denn Access unterstützt gar keine Stored Procedures. Vermutlich geht es also um die MSDE. Alles in allem mal wieder so eine Frage, aus der ich mich lieber heraushalte …

Gruß aus dem Norden
Reinhard Kraasch

(http://www.dbwiki.de - das Datenbank-Wiki)