Datenbank Verbindung

  • VB6

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von Ovoxo.

    Datenbank Verbindung

    Guten Tag

    Ich habe im Forum gesucht und auch Google brachte mich nicht weiter.

    Bin auf der suche nach einem Weg mich via VBScript auf meine SQL-Datenbank zu verbinden und Daten auszugeben.

    Hab das schon zusammen aber funktioniert leider nicht.

    Quellcode

    1. Dim db, rs
    2. Dim strCS, sql
    3. Dim Liste
    4. set db = createobject ("ADODB.connection")
    5. strCS = "Driver={SQL Server}; Server=NAME; Database=DB-NAME; usrName; PW
    6. db.ConnectionString = strCS
    7. db.Open
    8. sql = "Select * From dbo.User Where CreatedOn = 2013-01-01"
    9. set rs = db.Execute(sql)
    10. Liste = rs("CreatedOn")
    11. msgbox Liste
    12. db.close
    ändere bitte im Titel VB6 oder VB-Script um.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Wie rufst du dein Skript auf? Doppelklick?

    Nutze mal eine CMD und rufe wscript.exe mit deinem Skript als Parameter auf.

    Hier auch noch etwas zum Thema

    stackoverflow.com/questions/86…data-from-sql-server-2005
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Fehlermeldung

    Script: C:\User...
    Line: 8
    Char: 1
    Error: [Microsoft][ODBC Driver Manager] Data source Name not found and no Default Driver specified
    Code: 80004005
    Source: Microsoft OLE DB Provicer for Divers
    Bilder
    • 05-03-2015 16-02-46.jpg

      48,74 kB, 661×306, 143 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Ovoxo“ ()

    Tja, du versuchst eine Datasource anzuzapfen die nicht da ist.

    Hier nochmal eine Quelle auf deutsch.

    it-academy.cc/article/800/10+E…erung+mit+VB+und+ADO.html
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Option Explicit

    Public Cn As New ADODB.Connection

    Public Sub InitConnectionSQL(Servername As String, DB As _
    String, UserID As String, Password As String)

    Cn.Provider = "SQLOLEDB.1" 'SQL-Server
    Cn.ConnectionString = "Data Source=" & Servername & _
    " User ID=" & UserID & " Password=" & Password & _
    " Initial Catalog=" & DB 'Einstellungen für den Zugriff auf
    'den SQL-Server

    Cn.Open 'Verbindung herstellen

    End Sub

    InitConnectionSQL("ServerName","DBName","UID","PW")
    Bilder
    • 05-03-2015 16-51-27.jpg

      37,66 kB, 499×275, 149 mal angesehen

    Quellcode

    1. Option Explicit
    2. Dim Cn, Rs, sql, rd, test
    3. Set Cn = CreateObject("ADODB.Connection")
    4. Set Rs = CreateObject("ADODB.Recordset")
    5. Cn.ConnectionString = "Provider = SQLOLEDB; Data Source=Server; User ID= UID; Password= PW; Initial Catalog=DB;" 'Einstellungen für den Zugriff auf
    6. 'den SQL-Server
    7. Cn.Open 'Verbindung herstellen
    8. sql = "Select * from dbo.Companies Where Company = TestCompany"
    9. set rd = Cn.Execute(sql)
    10. test = rd("CreatedOn")
    11. MsgBox(test)
    12. If Cn.State = 1 Then
    13. Cn.Close
    14. Set Cn = Nothing
    15. MsgBox("Closed")
    16. Else
    17. MsgBox("Failed")
    18. End If


    So funtioniert es, nun habe ich einfach das Problem, dass ich nur den Wert vom Feld "CreatedOn" und nicht alle...

    Ovoxo schrieb:

    nur den Wert vom Feld "CreatedOn"
    Was erwartest du, wenn du ​test = rd("CreatedOn") zuweist.
    Du kannst alle Felder auf diese Art holen.
    Oder einfach durch das Recordset loopen.

    Im übrigen verstehe ich nicht, warum du Rs definierst um dann doch rd zu verwenden.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Stimmt! Danke

    Aber nun klappt es fast.. Item habe ich nun deklariert
    Es gibt mir die ersten zwei Felder aus und danach bekomme ich den nächsten Fehler

    Quellcode

    1. For Each item In rd.Fields
    2. MsgBox(item)
    3. Next


    EDIT:
    Habe die Lösung, hatte NULL-Werte in der Tabelle

    Quellcode

    1. For Each item In rd.Fields
    2. If (item = "") OR (IsNull(item)) Then
    3. MsgBox("")
    4. Else
    5. MsgBox(item)
    6. End If
    7. Next

    [line]​[/line]
    Wollte nicht ein neues Thema dafür machen.

    Sieht jemand den Fehler hier?

    Quellcode

    1. dt1 = "2013-11-02 00:00:00.000"
    2. dt2 = "2013-11-02 23:59:59.999"
    3. sql = "Select Company, ZIP, City, Street, Phone, Fax, Email, Kundennummer, Internet from dbo.Companies Where CreatedOn BETWEEN'" & dt1 & "' AND '" & dt2 & "'"


    Bekomme immer den Fehler, dass nichts gefunden wurde obwohl es solch ein Wert in der Tabelle existiert.

    Beiträge zusammengefügt. ~Thunderbolt
    Bilder
    • 06-03-2015 08-50-34.jpg

      35,29 kB, 456×272, 140 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Thunderbolt“ ()