Hi,
Ik ben wat bezig met een ADO recordset. Nu geef ik mijn SQL command door aan een functie die de SQL uitvoert. Het resultaat daarvan is dan dus het resultaat van de functie. Dit gezegd hebbende zijn er 2 dingen die er kunnen gebeuren als er geen resultaat is/of er een fout in de SQL statement zit:
Hoe kan ik dit het beste opvangen. Ik werk eigenlijk al een tijdje met ADO excel in vba icm SQLserver ik deed dit altijd afvangen in de functie en mijn qeuries die al voor gedefinieerd waren klopten ook eigenlijk altijd wel. Nu wil ik wat meer gelaagdheid inbouwen, zodat ik mijn module gwn kan exporteren. Bedoeling is wel dat ik die beide scenario's goed opvang. Nu kan ik daar omslachtige scenario's voor bouwen maar er moet toch een snelle kort methode zijn om die twee scenario's op te vangen (Lees: ik ben gwn benieuwd hoe de guru's dat hier zouden aanpakken.
De code/functie die ik gebruik voor mn statement is, waar het probleem is dat als ik een recordset tergukrijg die leeg is ik alsnog een error krijg:
Ik ben wat bezig met een ADO recordset. Nu geef ik mijn SQL command door aan een functie die de SQL uitvoert. Het resultaat daarvan is dan dus het resultaat van de functie. Dit gezegd hebbende zijn er 2 dingen die er kunnen gebeuren als er geen resultaat is/of er een fout in de SQL statement zit:
- het sql statement is onjuist (bijv. een table naam die niet juist is
- het resultaat van de query is niks, er is dus geen match
Hoe kan ik dit het beste opvangen. Ik werk eigenlijk al een tijdje met ADO excel in vba icm SQLserver ik deed dit altijd afvangen in de functie en mijn qeuries die al voor gedefinieerd waren klopten ook eigenlijk altijd wel. Nu wil ik wat meer gelaagdheid inbouwen, zodat ik mijn module gwn kan exporteren. Bedoeling is wel dat ik die beide scenario's goed opvang. Nu kan ik daar omslachtige scenario's voor bouwen maar er moet toch een snelle kort methode zijn om die twee scenario's op te vangen (Lees: ik ben gwn benieuwd hoe de guru's dat hier zouden aanpakken.
De code/functie die ik gebruik voor mn statement is, waar het probleem is dat als ik een recordset tergukrijg die leeg is ik alsnog een error krijg:
Code:
Function funRunSql(ByVal strSQL As String) As Variant
Dim cn As Object
Dim rs As Object
Set cn = CreateObject("ADODB.Connection")
cn.Open strConst_DB_SQLSERVER
Set rs = cn.Execute(strSQL)
On Error GoTo Hell
If rs.RecordCount <> 0 Then
funRunSql = funTranspose(rs.getrows)
Else
MsgBox "No result with this SQL statement!"
End
End If
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
Exit Function
Hell:
MsgBox "Something wend wrong with the SQL query:" & vbCrLf & vbCrLf & strSQL & vbCrLf & vbCrLf & "All script and procedures will stop from this point."
End
End Function
Function funTranspose(ByRef varSQ As Variant) As Variant
Dim i As Integer, j As Integer, sq As Variant
ReDim sq(UBound(varSQ, 2), UBound(varSQ))
For i = 0 To UBound(varSQ): For j = 0 To UBound(varSQ, 2): sq(j, i) = varSQ(i, j): Next j: Next i
funTranspose = sq
End Function