Windows Scripting Host

wsh-doku wsh allgemein wscript shell wscript network file system object wmi activex data object
   

ActiveX Data Objects

Zugriff auf eine SQL- Datenbank mit einem VB-Script.

Voraussetzungen:

  

  • WSH muß auf dem Rechner installiert sein.
    Eine ODBC- Benutzerdatenquelle muß vorhanden sein.
    (Arbeitsplatz/ Systemsteuerung/ ODBC-Datenquelle/ Benutzer-DSN)
    In den folgenden Beispielen hatte die Datenquelle den Name "test" und
    war mit einem lokalen Server verbunden. Als Standartdatenbank war
    die NORTHWIND-Datenbank eingestellt.
    Damit die Skripte auch funktionieren muß die SQL- Datenbank auch in Betrieb sein.

  • Beispiel 1
  • Beispiel 2
  • Beispiel 3
  • Beispiel 4
  • Beispiel 5
  • Beispiel 6
  • Beispiel 7
  • Beispiel 8
  • Beispiel 9

    Beispiel 1

    Mit diesem Skript lesen Sie den ersten Datensatz in
    der Spalte "Productname" von der Datenbank "Products" aus
    und bestimmen die Anzahl der Spalten in dieser Datenbank.

    set db = createobject ("ADODB.connection")
    dim liste
    db.open "test","",""
    sql = "select * from Products"
    set rs = db.Execute(sql)
    liste = rs("Productname")
    msgbox liste, vbinformation
    msgbox rs.fields.count
    db.close

    Wenn Sie das Skript gestartet haben, erscheint eine Dialogbox mit dem Wort "Chai".
    In der Zeile 3 muß eventuell noch der Benutzername und das Passwort eingegeben werden.
    In der vorletzten Zeile wird noch die Anzahl der insgesamten Spalten ausgegeben, in diesem Fall 10.

    Stand: 13.10.2005

    [zurück]

    Beispiel 2

    Mit diesem Skript lesen Sie alle Datensätze
    in der Spalte "Productname" von der
    Datenbank "Products" aus, deren "ProductID"
    kleiner als 10 ist.
    Außerdem wird das Ergebnis noch alphabetisch
    nach "Productname" sortiert.

    set db = createobject ("ADODB.connection")
    dim liste
    sql = "select * from Products where productid<10 order by productname"
    db.open "test","",""
    set rs = db.Execute(sql)
    Do While Not rs.EOF
    liste = liste & " # " & rs("Productname")
    rs.MoveNext
    Loop
    db.close
    msgbox liste

    Dieses Skript beinhaltet in Zeile 6-9 eine Schleife,
    die solange ausliest bis die Spalte keine Daten mehr beinhaltet.

    Stand: 13.10.2005

    [zurück]

    Beispiel 3

    Mit diesem Skript lesen Sie alle Datensätze in der Spalte "Productname"
    von der Datenbank "Products" aus, deren "ProductName" ein "ü" beinhaltet.
    Man beachte das hier der "like"- Befehl mit "rs.filter" aufgerufen wird.

    dim liste
    set db = createobject ("ADODB.connection")
    db.open "test","",""
    sql = "select * from Products"
    set rs = db.Execute(sql)
    rs.filter= "productname like '%ü%'"
    Do While Not rs.EOF
    test = Replace(rs("productname"), "ü", "ue",1,-1,1)
    liste = liste & " XXX " & test
    rs.MoveNext
    Loop
    db.close
    msgbox liste

    Desweiteren ersetzt das Skript NUR in der Ausgabe alle "ü" in "ue",
    die Datenbank selbst bleibt unverändert.

    Stand: 13.10.2005

    [zurück]

    Beispiel 4

    Mit diesem Skript verändern Sie in der Spalte "Productname"
    von der Datenbank "Products" alle Strings "chai" in den String "chai1".

    set db = createobject ("ADODB.connection")
    db.open "test","",""
    sql = "update products set Productname='chai1' where productname='chai'"
    db.Execute(sql)
    db.close

    Achtung:
    Dieses Skript ändert ohne Nachfrage und
    man kann die Durchführung nicht mit dem SQL- Befehl "ROLLBACK" wiederrufen.

    Stand: 13.10.2005

    [zurück]

    Beispiel 5

    Mit diesem Skript ändern Sie bestimmte Datensätze und
    werden nochmals gefragt, ob die Änderungen wirklich
    durchgeführt werden sollen.

    set db = createobject ("ADODB.connection")
    db.open "test","",""
    db.BeginTrans
    sql = "update products set Productname='chai1' where productname='chai'"
    db.Execute(sql)
    If MsgBox("Sollen die Änderungen gespeichert werden?", vbYesNo) = vbYes Then
    db.CommitTrans
    Else
    db.RollbackTrans
    End If
    db.close


    Stand: 13.10.2005

    [zurück]

    Beispiel 6

    Mit diesem Skript lesen Sie alle Datensätze
    in der Spalte "Productname" von der Datenbank "Products" aus,
    deren "ProductID" kleiner oder gleich 10 ist.
    Dieses Mal gibt das Skript das Ergebnis nicht in einer Messagebox,
    sondern in der Datei "test.txt" aus.

    set fs = createobject("Scripting.filesystemobject")
    set logbuch =fs.opentextfile("test.txt", 8, true,0)
    set db = createobject ("ADODB.connection")
    db.open "test","",""
    sql = "select * from Products where productid<=10 order by productname"
    set rs = db.Execute(sql)
    Do While Not rs.EOF
    logbuch.writeline rs("Productname")
    rs.MoveNext
    Loop
    db.close
    logbuch.close

    Stand: 15.10.2005

    [zurück]

    Beispiel 7

    Dieses Skript legt eine neue Tabelle und eine neue Spalte an.
    Danach löscht es die Spalte und die Tabelle wieder.

    set db = createobject ("ADODB.connection")
    db.open "test","",""
    msgbox("Es wird eine Tabelle 'test' erstellt.")
    sql = "create table test (ID int, Name text, Telefon int)"
    rs = db.Execute(sql)
    msgbox("Es wird eine Spalte eingefügt.")
    sql = "alter table test ADD email VARCHAR(20) "
    rs = db.Execute(sql)
    msgbox("Die Spalte wird wieder gelöscht.")
    sql = "alter table test drop column email "
    rs = db.Execute(sql)
    msgbox("Die Tabelle 'test' wird wieder gelöscht.")
    sql = "drop table test"
    rs = db.Execute(sql)
    db.close

    Stand: 13.10.2005

    [zurück]

    Beispiel 8

    Dieses Skript gibt in einer Messagebox "Keine Daten gefunden!" aus,
    wenn die Datenbankabfrage kein Ergebnis bringt.

    set db = createobject ("ADODB.connection")
    db.open "test","",""
    sql = "select * from Products where productid<-10 order by productname">
    set rs = db.Execute(sql)
    if rs.bof then
    msgbox("Keine Daten gefunden!")
    else
    msgbox(rs("productname"))
    end if
    db.close

    Stand: 13.10.2005

    [zurück]

    Beispiel 9

    Fehlerbehandlung, wenn eine Spalte bzw. Datenbank nicht gefunden wird.
    Wird die Fehlermeldung ausgegeben.
    In diesem Fall ist ein Fehler im SQL- Code eingebaut.

    set db = createobject ("ADODB.connection")
    on error resume next
    db.open "test","",""
    if err.number = 0 then
    sql = "select * from products where productnammmmme like 'a%'"
    set rs = db.Execute(sql)
    if err.number = 0 then
    msgbox(rs("productname"))
    end if
    db.close
    end if
    if err.number <> 0 then
    frage = msgbox("In Ihrer Anwendung ist ein Fehler folgendem Typs aufgetreten." & vbcr & vbcr _
    & "Fehlertyp: " & err.description,vbOKonly + vbcritical,"FEHLER REPORT")
    end if

    Die Fehlermeldung, die ausgegeben wird, ist vom Skript selber, nicht von WSH.
    Die WSH- Fehlermeldungen werden alle durch den Befehl "on error resume next" unterdrückt.

    Stand: 13.10.2005

    [zurück]

  •    


    [home]

    [wsh-doku]

    [wsh allgemein]

    [wscript shell]

    [wscript network]

    [file system object]

    [wmi]

    [activex data object]

    [links]