Soch Lösung für VBScript (6)

  • Access

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Horst1945.

    Soch Lösung für VBScript (6)

    Ich habe da ein kleines Problem:

    Ich möchte zwei Tabellen zusammenfügen und die Daten in einem DataGrid ausgeben!

    Folgende SQL-Anweisung habe ich erstzellt:

    Visual Basic-Quellcode

    1. SQL1 = "SELECT 2005.artnr, 2005.renr, 2005.liefdat, 2005.rechDat, " _
    2. & "2005.gespreis, 2005.stueck, 2005.rabatt, 2005.preis, artikel.artnr, artikel.artbez, artikel.VPEINHEIT From 2005 Innen " _
    3. & "Join artikel 0n artikel.artnr = 2005.artnr"
    4. Set reRs = New ADODB.Recordset
    5. reRs.CursorLocation = adUseClient
    6. reRs.Open SQL1, conn1, adOpenKeyset, adLockReadOnly
    7. Set DataGrid1.DataSource = reRs


    Aber nachdem ich das Proramm gestartet habe, bekomme ich im,mer wieder eine Fehlermeldung:

    Run-Time error -2147217900
    Syntaxfehler (fehlender Operator) in Abfrage 2005.artnr


    Kann mir jemand Helfen?

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Wie sieht's damit aus:

    SQL-Abfrage

    1. SELECT 2005.artnr, 2005.renr, 2005.liefdat, 2005.rechDat, 2005.gespreis, 2005.stueck, 2005.rabatt, 2005.preis, artikel.artnr, artikel.artbez, artikel.VPEINHEIT From 2005,artikel WHERE artikel.artnr = 2005.artnr
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ich bin langsam am verzweifeln.

    Ich möchte aus den der Tabelle artikel die Felder:

    artnr
    artbez
    vpeinheit
    me

    und aus der Tabelle archiv die Felder

    kdnr
    artnr
    renr
    rechDar
    stueck
    preis
    gespreis

    und aus der Tabelle stammdat die Felder

    kdnr
    name
    ort

    in einem DataGrid ausgeben, ich kann machen was ich will und habe shon einige SQL-Anweisungen ausprobiert, aber es kommen immer wieder Fehler Meldungen!

    Kann mir jemand eine SQL-Anweisung verfassen, damit ich das hinbekommen!

    Besten Dank im voraus.
    Darf ich vorsichtig nochmals nachfragen: Welche Art von Datenbank?


    SQL-Abfrage

    1. SELECT * FROM artikel INNER JOIN archiv ON artikel.artnr=archiv.artnr INNER JOIN stammdat ON archiv.kdnr=stammdat.kdnr
    Sind die Keys in den Tabellen wenigstens indiziert?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ich benutze MS-Access 2000.

    Übrigens funktioniert deine SQL-Anweisung ebenfalls nicht, denn die Fehlermeldung "runtim error -2147217900 Syntaxfehler (fehlender Operator) in Abfrageausdruck 'artikel.artnr = archiv.artnr INNER JOIN stammdat ON archiv.kdnr = stammdat-kdnr'
    Dann musst du halt noch Klammern setzen.
    Und wenn du die Feldnamen einzeln angibst, musst du extrem aufpassen bei deinem Feld "name".
    Ein Feld mit reservierten Namen zu belegen ist so etwas wie eine Todsünde.
    Solche Felder benötigen immer etwas Sonderbehandlung.

    SQL-Abfrage

    1. SELECT archiv.kdnr, archiv.artnr, archiv.renr, archiv.rechDar, archiv.stueck, archiv.preis, archiv.gespreis, artikel.artnr, artikel.artbez, artikel.vpeinheit, artikel.me, stammdat.kdnr, stammdat.[name], stammdat.ort
    2. FROM (archiv INNER JOIN artikel ON archiv.artnr = artikel.artnr) INNER JOIN stammdat ON archiv.kdnr = stammdat.kdnr
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ich hab's jetzt gerade mal unter Access 2013 nachgebildet und es funktioniert einwandfrei.
    Leider habe ich keine momentan keine Uraltversion verfügbar, um deinen Fehler nachzuvollziehen.

    Vielleicht wird's besser, wenn du "INNER JOIN" gegen "JOIN" ersetzt. Ist ja de facto dasselbe.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Da fällt mir nur noch diese Variante ein:

    SQL-Abfrage

    1. SELECT [archiv].[kdnr], [archiv].[artnr], [archiv].[renr], [archiv].[rechDar], [archiv].[stueck], [archiv].[preis], [archiv].[gespreis], [artikel].[artnr], [artikel].[artbez], [artikel].[vpeinheit], [artikel].[me], [stammdat].[kdnr], [stammdat].[name], [stammdat].[ort]
    2. FROM [archiv],[artikel],[stammdat] WHERE [archiv].[artnr] = [artikel].[artnr] AND [archiv].[kdnr] = [stammdat].[kdnr]
    Hat Access 2000 eigentlich nicht den Abfragegenerator?
    Damit lässt sich so was doch wunderschön zusammenklicken.


    Warum benutzt du eigentlich immer noch die 2000er-Version?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hallo Pedaod,

    leide bin erst vor kurzen aus demKrankenhaus gekommen und konnte ich deine SQL-Anweisung erst heute richtig testen.

    Bis auf einige Felder aus der Tabelle archiv (kdnr und artnr) und der Tabelle stammdat (name und ort) die nicht angezeigt werden, klappt al