Guten Morgen zusammen,
ich würde mich sehr über ein zwei Tipps für folgendes freuen:
Zunächst habe ich (zum ersten Mal in PostgreSQL) eine Stored Procedure (SP) erstellt. Zum Testen auch ein ganz simples Beispiel:
CREATE OR REPLACE PROCEDURE public.gp_lesen(
strnr character varying)
LANGUAGE 'sql'
AS $BODY$
SELECT gpartner FROM projektliste
WHERE nr = strnr;
$BODY$;
Nun versuche ich diese SP über VBA anzusprechen:
Public p_pgCnn As New ADODB.Connection
Sub cnn()
p_pgCnn.Open "Driver={PostgreSQL Unicode};Server=999.999.999.999;Port=9999;Database=meinedatenbank;Uid=meinuser;Pwd=meinkennwort;"
End Sub
Sub StoredProcedureBeispiel01()
pgRcs As New ADODB.Recordset
pgCmd As New ADODB.Command
With pgCmd
.ActiveConnection = p_pgCnn 'die Connection steht permanent global über eine Public Variable
.CommandText = "public.gp_lesen"
.CommandType = adCmdStoredProc
.Parameters("strnr").Value = "123"
Set pgRcs = .Execute 'hier kommt der Fehler public.gp_lesen(unknown) ist eine Prozedur; Error while executing the query
Debug.Print pgRcs.Fields("gpartner").Value
End With
Set pgRcs = Nothing
Set pgCmd = Nothing
End Sub
So funktioniert es in einem MS SQL Server, hatte gehofft, dass ich das auf Postgres so übertragen kann. Was muss ich ändern? Warum beschwert sich der Fehler über eine Prozedur? Natürlich ist es eine Prozedur.
Vielen Dank für Eure Zeit!
P.S. Vielleicht sei kurz erwähnt, dass die PG-Datenbank schon länger läuft und ich auf verschiedenste Weise über VBA und den o.g. CnnString mit SELECT, INSERT, UPDATE ... erfolgreich und sehr zufriedenstellend darauf zugreife. Wegen einem neuen Projekt und großer zu erwartender Datenmenge möchte ich aber nun den Datentransfer über VPN reduzieren und mit SP direkt auf der Datenbank die Datenmenge eben beschränken.
ich würde mich sehr über ein zwei Tipps für folgendes freuen:
Zunächst habe ich (zum ersten Mal in PostgreSQL) eine Stored Procedure (SP) erstellt. Zum Testen auch ein ganz simples Beispiel:
CREATE OR REPLACE PROCEDURE public.gp_lesen(
strnr character varying)
LANGUAGE 'sql'
AS $BODY$
SELECT gpartner FROM projektliste
WHERE nr = strnr;
$BODY$;
Nun versuche ich diese SP über VBA anzusprechen:
Public p_pgCnn As New ADODB.Connection
Sub cnn()
p_pgCnn.Open "Driver={PostgreSQL Unicode};Server=999.999.999.999;Port=9999;Database=meinedatenbank;Uid=meinuser;Pwd=meinkennwort;"
End Sub
Sub StoredProcedureBeispiel01()
pgRcs As New ADODB.Recordset
pgCmd As New ADODB.Command
With pgCmd
.ActiveConnection = p_pgCnn 'die Connection steht permanent global über eine Public Variable
.CommandText = "public.gp_lesen"
.CommandType = adCmdStoredProc
.Parameters("strnr").Value = "123"
Set pgRcs = .Execute 'hier kommt der Fehler public.gp_lesen(unknown) ist eine Prozedur; Error while executing the query
Debug.Print pgRcs.Fields("gpartner").Value
End With
Set pgRcs = Nothing
Set pgCmd = Nothing
End Sub
So funktioniert es in einem MS SQL Server, hatte gehofft, dass ich das auf Postgres so übertragen kann. Was muss ich ändern? Warum beschwert sich der Fehler über eine Prozedur? Natürlich ist es eine Prozedur.
Vielen Dank für Eure Zeit!
P.S. Vielleicht sei kurz erwähnt, dass die PG-Datenbank schon länger läuft und ich auf verschiedenste Weise über VBA und den o.g. CnnString mit SELECT, INSERT, UPDATE ... erfolgreich und sehr zufriedenstellend darauf zugreife. Wegen einem neuen Projekt und großer zu erwartender Datenmenge möchte ich aber nun den Datentransfer über VPN reduzieren und mit SP direkt auf der Datenbank die Datenmenge eben beschränken.