Funktion im SELECT aufrufen

17/11/2008 - 11:41 von Stefan Wirrer | Report spam
Hallo,

ich möchte gerne innerhalb eines SQL-Statements das Ergebnis einer Funtion
verarbeiten.
(Befüllen eines Endlosformulars)

SELECT tbl_Artikel.id_artikel, tbl_Artikel.atklbestnr,
GetHazardmaterial(tbl_Artikel.id_artikel) AS HazMat
FROM tbl_Artikel
ORDER BY tbl_Artikel.atklbestnr;

Public Function GetHazardmaterial(ByVal lngIDArticle As Long) As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim qdf As DAO.QueryDef
Dim strSQL As String

Set db = CurrentDb
DoCmd.DeleteObject acQuery, "PassThrough"
Set qdf = db.CreateQueryDef("PassThrough")

strSQL = "Select fc_get_hazardmaterial(" & lngIDArticle & ") as HazMat;"
With qdf
.Connect = GetPrivProperty("DBConnect")
.SQL = strSQL
.ReturnsRecords = True
Set rs = .OpenRecordset
End With
GetHazardmaterial = Nz(rs!HazMat, "")
End Function

Die Funktion ruft eine Funktion auf der DB (PostgreSQL) auf.
? GetHazardmaterial(123)
liefert das gewünschte Ergebnis.

Wenn ich das SQL-Statement ausführe bekomme ich die Fehlermeldung
2486 Sie können diese Aktion momentan nicht ausführen.
bei: DoCmd.DeleteObject acQuery, "PassThrough"

Hat Access 2003 ein Problem, wenn ich ein SQL-Statement ausführe, dass
eine Funktion ausführt die per PT aufgerufen wird?

Die PG-Funktion liefert mir einen String zurück, der das Ergebnis aus
mehreren
Datensàtzen durch Komma getrennt als einzelnen DS liefert.
Das Ergebnis is zB.t: X+, N, O

Gibt es eine Möglichkeit ohne PT auszukommen?

Gruß
aus München

Stefan

Stefan.Wirrer@volke-muc.de

Access-FAQ: http://www.donkarl.com/AccessFAQ.htm
KnowHow-MDB: http://www.freeaccess.de/
Infos für Neulinge in den Access-Newsgroups:
http://www.doerbandt.de/access/Newbie.htm
Stammtisch: http://www.access-muenchen.de/
 

Lesen sie die antworten

#1 Mark Doerbandt
17/11/2008 - 11:55 | Warnen spam
Hallo, Stefan,

Stefan Wirrer:

Public Function GetHazardmaterial(ByVal lngIDArticle As Long) As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim qdf As DAO.QueryDef
Dim strSQL As String

Set db = CurrentDb
DoCmd.DeleteObject acQuery, "PassThrough"
Set qdf = db.CreateQueryDef("PassThrough")

strSQL = "Select fc_get_hazardmaterial(" & lngIDArticle & ") as HazMat;"
With qdf
.Connect = GetPrivProperty("DBConnect")
.SQL = strSQL
.ReturnsRecords = True
Set rs = .OpenRecordset
End With
GetHazardmaterial = Nz(rs!HazMat, "")
End Function

Die Funktion ruft eine Funktion auf der DB (PostgreSQL) auf.
? GetHazardmaterial(123)
liefert das gewünschte Ergebnis.

Wenn ich das SQL-Statement ausführe bekomme ich die Fehlermeldung
2486 Sie können diese Aktion momentan nicht ausführen.
bei: DoCmd.DeleteObject acQuery, "PassThrough"

Hat Access 2003 ein Problem, wenn ich ein SQL-Statement ausführe, dass
eine Funktion ausführt die per PT aufgerufen wird?

Die PG-Funktion liefert mir einen String zurück, der das Ergebnis aus
mehreren
Datensàtzen durch Komma getrennt als einzelnen DS liefert.
Das Ergebnis is zB.t: X+, N, O

Gibt es eine Möglichkeit ohne PT auszukommen?



ich wuerde hier ADO und ein .Command benutzen.

Gruss - Mark

Ähnliche fragen