jeudi 20 novembre 2008

VBScript lib / manip chaines requetes

' option explicit ' <== uncomment to debug
'
' QUERIES.VBS
' loadQuery filename, queryname, var texte
' SubstParm paramname, value, var texte
'

' explore aFilename à la recherche de '[<aQueryname>] puis charge les lignes non vides dans gTexte
sub LoadQuery(aFilename, aQueryName, gTexte)
dim lFSO, lFin, s, done
err.clear: on error resume next
set lFSO = createObject("Scripting.FileSystemObject")
if err.Number = 0 then
  set  lFin = lFSO.OpenTextFile(aFileName, 1)
if err.Number = 0 then
    on error goto 0
    done = lFin.AtEndOfStream
    gTexte = ""
    while not done
      s = lFin.ReadLine
      if s <> "" then
        if left(s, 2) = "'[" then ' s'il s'agit d'un commentaire
        s = trim(mid(s, 3, len(s) - 2)) ' => keyw]
        s = trim(left(s, len(s) - 1)) ' => keyw
        if ucase(s) = ucase(aQueryName) then ' on a trouvé notre requête => la charger
            while not done
              s = lFin.readLine
              if s = "" or s = "'" or left(s, 2) = "'[" then
                done = true
              else
              if gTexte <> "" then gTexte = gTexte & " "
                gTexte = gTexte & right(s, len(s) - 1)
                done = lFin.AtEndOfStream
              end if
            wend ' not done
        end if ' s = <keyw>
        end if ' = '[
      end if ' s <> ''
      done = done or lFin.AtEndOfStream
    wend ' not done
    lFin.Close
    Set lFin = Nothing
  end if ' lFin disponible
  Set lFSO = Nothing
end if ' lFSO disponible
if err.number <> 0 then err.raise
end sub

' substitue <aValue> à :<aParamName> dans <gTexte>
sub SubstParm(aParamName, aValue, gTexte)
if trim(gTexte) <> "" and trim(aParamName) <> "" then
gTexte = replace(gTexte, ":" & aParamName, aValue)
end if
end sub

'
'[QRY1]
'select * from amsf.frps
'where pspn like 'A%'
'[MegaUpdate]
'[QRY2]
'update amsf.frst
'set stcodrav = (select count(1) from frsta
'where stapn=stpn and stcodmag=:MAG)
'
' ----- area to uncomment to test this lib
'dim srcFile: srcFile="c:\lib\queries.vbs"
'dim texte: texte = "rien n'a été trouvé"
'LoadQuery srcfile, "", texte
'wscript.echo "(vide) => " & texte
'LoadQuery srcfile, "Introuvable", texte
'wscript.echo "Introuvable => " & texte
'LoadQuery srcfile, "mEGAuPDATE", texte
'wscript.echo "MegaUpdatE => " & texte
'LoadQuery srcfile, "qry1", texte
'wscript.echo "QRY1 => " & texte
'LoadQuery srcfile, "qry2", texte
'wscript.echo "QRY2 => " & texte
'SubstParm "MAG", "'ONE'", texte
'wscript.echo texte

Aucun commentaire: