[NEWSboard IBMi Forum]

Thema: SQL aus Excel

Hybrid View

  1. #1
    Registriert seit
    Sep 2005
    Beiträge
    53

    Question SQL aus Excel

    Hallo,

    nachdem das mit "call" nur eine Übergangslösung sein darf möchte ich aus Excel VBA SQL Befehle auf der AS400 ausführen, leider kommen da immer wieder Fehlermeldungen :


    Option Explicit
    Sub as400_SQL()
    Dim cnn As ADODB.Connection
    Dim CallCmd As String
    Set cnn = New ADODB.Connection
    ' Verbindungsdaten
    cnn.Open "Provider=IBMDA400;" & _
    "Data Source=192.***.***.***;" & _
    "User ID=*****;" & _
    "Password=*****;"
    Hier soll mit SQL z.B. ausgeführt werden : „create table … …“

    ' Verbindung schliessen
    cnn.Close
    End Sub
    Mit Bitte um Hilfe und vielen Dank im voraus, ERIC

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Es wäre sehr hilfreich, die Fehlermeldung mal zu posten.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Apr 2004
    Beiträge
    105
    Hallo Eric,

    versuch es mal so:


    Option Explicit

    Sub as400_SQL()

    Dim cnn As ADODB.Connection

    Dim CallCmd As String

    Dim SQL As String

    Set cnn = New ADODB.Connection

    'Verbindungsdaten

    cnn.Open "Provider=IBMDA400;" &
    "Data Source=192.***.***.***;" & "User ID=*****;" & "Password=*****;"

    'SqlStatement
    SQL = "CREATE TABLE [MyTable] (" & _
    "[FieldA] [int] NOT NULL , " & _
    "[FieldB] [varchar] (30) NOT NULL)"
    '.. ausführen
    cnn.Execute SQL


    ' Verbindung schliessen
    cnn.Close

    End Sub

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Lass aber vor allem die eckigen Klammern weg.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Sep 2005
    Beiträge
    53

    Thumbs up VielenDank, funktioniert

    Hallo,

    hab das jetzt so eingetippt und esklappt :

    Sub as400_SQL()
    Dim cnn As ADODB.Connection
    Dim SQL As String
    Set cnn = New ADODB.Connection
    'Verbindungsdaten
    cnn.Open "Provider=IBMDA400;" & _
    "Data Source=192.***.***.***;" & _
    "User ID=*****;" & _
    "Password=******;"

    'SqlStatement
    SQL = "create table blabla.sql001(feld1 integer not null, feld2 varchar(15), primary key (feld1))"
    '.. ausführen
    cnn.Execute SQL
    ' Verbindung schliessen
    cnn.Close
    End Sub

    Vielen Dank ERIC

  6. #6
    Registriert seit
    Sep 2005
    Beiträge
    53

    Question Erweiterung

    Hallo,

    gibt es eine Möglichkeit vorab zu prüfen ob die Datei vorhanden ist und wenn nein, dann "create table ..." wenn ja dann z.B."insert into ..." ?

    Vielen Dank.
    ERIC

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Dafür gibt es die Schema-Abfragen des Connection-Object's.
    Man kann auch einfach per Try und Error einen Select lostreten, bei Fehler dann einen Create erstellen.

    on error resume next
    err.clear
    set rcd = cnn.execute("select ...")
    if err.number <> 0 then
    ' ggf. auch andere Fehler berücksichtigen
    end if
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Sep 2005
    Beiträge
    53

    Question Rückfrage

    Hallo,

    danke für die schnelle Antwort, ohne Abfrage "knallt" es beim 2.Lauf, denn die Tabelle ist ja schon da, dann:

    Dim RCD As ADODB.Recordset oder?
    und dann den Select, worauf ???
    (select lib/file)

    es lief durch und keine Fehlermeldung mehr, hatte :

    ...

    'SqlStatement
    SQL = "create table blabla.sql001(feld1 integer not null, feld2 varchar(15), primary key (feld1))"
    '.. ausführen

    on error resume next
    err.clear
    set rcd = cnn.execute("select blabla/sql001")
    if err.number <> 0 then
    SQL = "create table blabla.sql012(feld1 integer not null, feld2 varchar(15), primary key (feld1))"
    '.. ausführen
    cnn.Execute SQL
    end if
    ' Verbindung schliessen
    cnn.Close
    End Sub


    Eine sql012 gibt es leider nicht und auch keine Fehler ! Wo ist mein Fehler ?

    Danke im Voraus ERIC

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Wie beim Create muss auch der Select bei qualifizierter Benennung einen Punkt verwenden "libname.tblname".

    Alternativ kannst du den CREATE ja genauso abfangen. Du bekommst in der err.Description einen Fehlercode geliefert.
    Das CNN-Object enthält auch genauere SQLSTATE-Codes nach einem Fehler.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Registriert seit
    Sep 2005
    Beiträge
    53

    Question KOMM NICHT WEITER, WO IST MEIN FEHLER

    Hallo,
    vielen Dank für die Rückinfo, nur ich
    komm da nicht weiter , kannst Du mir bitte mal den vollständigen Script geben ?

    ...

    wenn "lib/sql001" vorhanden,
    dann erstelle "lib/sql011", wenn "lib/sql011 vorhanden, dann EXIT

    hab da hin und her probiert, über den Fehler läuft er, nur dann auch wenn "lib/sql011" vorhanden, keine Fehlermeldungen mehr.
    Vielen Dank im voraus ERIC

Similar Threads

  1. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  2. Datum überlebt ODBC Transfer auf Excel nicht
    By jjagi in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 07-07-06, 08:29
  3. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  4. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  5. SQL Error in Excel
    By Fritzchen in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 02-08-05, 08:42

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •