QueryTables.Add ODBC

Barra Sargtlin

Grünschnabel
Hallo zusammen,

ich möchte eine ODBC Verbindung mit einem unserer Server herstellen.
Ich bekam dazu ein mehrseitiges VBA Script was ich als Richtlinie nehmen sollte und habe mir daraus bisher die wichtigen Stellen rausgesucht und soweit angepasst.
Bisher alles einfach gehalten, dient nur der reinen Logik, später kommt es ganz anders ... Aber bisher sieht es folgend aus:

Code:
Option Explicit
    Public SQL1 As String
    Public SQL2 As String
    
    Public DATUMA As String
    Public DATUMB As String
    Public Depot As Integer


Private Sub CommandButton1_Click()
    DATUMA = "170810"
    DATUMB = "180810"
    Depot = 3200
    
    Sql
End Sub


Sub Sql()
    SQL1 = "SELECT '3200' +0 depot, k.kd_nr kunde, k.rech_name1 name, COUNT(a.paket_nr) menge " + _
          "FROM t_kd k, OUTER t_pak_apl a WHERE k.kd_nr = a.kd_nr AND a.pak_dat " + _
          "BETWEEN '17.08.2010' AND '18.08.2010' AND k.kd_stat IN (4,6) GROUP BY 1,2,3 ORDER BY 1,2"
    
    Range("A:D").Select
    Selection.ClearContents
    
    SQLAbfragen HOST:="atdpt" & Depot, Sql:=SQL1, sheetName:="Sheet1", Cell:="A1"
End Sub


Sub SQLAbfragen(HOST As String, Sql As String, sheetName As String, Cell As String)    
    Application.ODBCTimeout = 20
    
    With sheetName.QueryTables.Add( _
            Connection:="ODBC" & _
            ";DRIVER={INFORMIX 3.34 32 BIT}" & _
            ";UID=xxxxxx" & _
            ";PWD=xxxxxxxx" & _
            ";DATABASE=depot" & _
            ";HOST=" & HOST & _
            ";SRVR=" & HOST & _
            ";SERV=sqlexec2" & _
            ";PRO=olsoctcp;" _
            , Destination:=Range(Cell))
        
        .CommandText = Sql
        .Name = "Abteilungs sowieso"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = True
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

So. das funtkioniert soweit auch. Das Problem ist jetzt, dass ich einen völlig anderen Server benutzen muss. Was den SQL selbst angeht ist alles klar. Aber wie trage ich den neuen Server genau ein ? Per IP oder Alias ?
 
Zuletzt bearbeitet:

Yaslaw

alter Rempler
Moderator
Im folgenden Code hast du die DB-Connection
Visual Basic:
    With sheetName.QueryTables.Add( _
            Connection:="ODBC" & _
            ";DRIVER={INFORMIX 3.34 32 BIT}" & _
            ";UID=xxxxxx" & _
            ";PWD=xxxxxxxx" & _
            ";DATABASE=depot" & _
            ";HOST=" & HOST & _
            ";SRVR=" & HOST & _
            ";SERV=sqlexec2" & _
            ";PRO=olsoctcp;" _
            , Destination:=Range(Cell))

Und hier rufst du sie mit weiteren DB-Informationen auf
Visual Basic:
SQLAbfragen HOST:="atdpt" & Depot, Sql:=SQL1, sheetName:="Sheet1", Cell:="A1"

Also, der bisherige Host heist "atdpt" & Depot (Depot ist wieder eine Variable die wieter oben auf 3200 gesetzt wird.)

Der Host und die ODBC-Informationen musst du auf den neuen Server anpassen
 

Barra Sargtlin

Grünschnabel
Erstmal danke für die schnelle Antwort.
Allerdings half mir das nicht wirklich weiter, das gesagte wusste ich schon.

Ich glaube meine Probleme liegen eher an der Firmenstruktur bzw dem Firmen Server und dessen Datenbanken.

Als Fehlermeldung bekomme ich
ERROR: -908 : 08004 : [Informix][Informix ODBC Driver][Informix]Attempt to database server (decdb01) failed.
 
Zuletzt bearbeitet:

Neue Beiträge