Public Sub CreateSQL(sTemplate As String, ParamArray vaArg() As Variant)
Dim sSQL As String, sCMD1 As String, sCMD2 As String Dim iArg As Integer, nPos As Integer ' Template vuoto, esci !! If Trim(sTemplate) = "" Then Exit Sub End If ' Crea la stringa sql come specificato, se ad esempio ' sTemplate="SELECT * FROM CLIENTI WHERE NOME LIKE '^*' ORDER BY ^" ' richiamando la funzione con ' sResult=CreateSQL(sTemplate, "ROS", "CODICE") ' si otterra' come risultato in sResult la stringa ' "SELECT * FROM CLIENTI WHERE NOME LIKE 'ROS*' ORDER BY CODICE" ' la funzione e' molto comoda per sostituire le queries ' parametriche e per creare queries dinamiche "al volo" sSQL = sTemplate nPos = 1 For iArg = LBound(vaArg) To UBound(vaArg) nPos = InStr(nPos, sSQL, "^") If nPos > 0 Then sCMD1 = Mid(sSQL, 1, nPos - 1) & vaArg(iArg) sCMD2 = Mid(sSQL, nPos + 1) nPos = Len(sCMD1) + 1 sSQL = sCMD1 & sCMD2 Else Exit For End If Next iArg ' ritorna il risultato sTemplate = sSQL End Sub Crea una stringa SQL parametrica sostituendo tutte le occorrenze del carattere "^" trovate nel template con i parametri passati, se il numero di parametri e' inferiore al numero di caratteri "^" i restanti caratteri non verranno sostituiti permettendo cosi' il richiamo ricorsivo della funzione ed il "riempimento" progressivo della stringa |