Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
773
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Jul 2009
    Beiträge
    6
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    
    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 ?
    Geändert von Barra Sargtlin (23.08.10 um 11:27 Uhr)
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    4.669
    Im folgenden Code hast du die DB-Connection
    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
        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
    Code vb:
    1
    
    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
     
    ---------------------------------------------------------------------------------------------------
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    Registriert seit
    Jul 2009
    Beiträge
    6
    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.
    Geändert von Barra Sargtlin (24.08.10 um 11:02 Uhr)
     

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    4.669
    Ist eine ODBC_Verbindung auf dem Rechner eingerichtet?

    Hier dann noch eine gute Seite für die Connection-Strings auf die Datenbanken
    http://www.connectionstrings.com/
     
    ---------------------------------------------------------------------------------------------------
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    Registriert seit
    Jul 2009
    Beiträge
    6
    Zitat Zitat von yaslaw Beitrag anzeigen
    Ist eine ODBC_Verbindung auf dem Rechner eingerichtet?
    Außer dem Script ist seitens Client nichts nötig.
    PRoblem war, dass ich den richtigen Servernamen angab, er braucht jedoch den alias. Und sqlexec, nicht sqlexec2.
    Geändert von Barra Sargtlin (25.08.10 um 11:13 Uhr)
     

Ähnliche Themen

  1. Windows XP - MySQL- ODBC Verbindung herstellen. Kein Treiber im ODBC- Datenquellen-A
    Von Thomas_Jung im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 14.12.10, 14:57
  2. SQL/Access-ODBC-Block-Problem: Meldung "ODBC-Aktualisierung fehlgeschlagen"
    Von KlebeKalle im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 08.10.09, 14:00
  3. Querytables
    Von sra im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 26.11.04, 14:55
  4. ODBC Verbindung ohne ODBC-Datenquellen-Administrator
    Von cyriacks im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 06.06.04, 18:19
  5. Odbc
    Von Rev im Forum PHP
    Antworten: 2
    Letzter Beitrag: 01.02.02, 18:16

Stichworte