Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Hondo am Oktober 03, 2016, 18:05:32

Titel: Parametrisierte Abfrage
Beitrag von: Hondo am Oktober 03, 2016, 18:05:32
Hallo,
ich möchte in meiner Abfrage den Tabellennamen als Parameter verwenden, bekomme aber Fehler dass der Tabellennamen fehlt:

    strSQL = "PARAMETERS prmTable Text (255), prmSpacer Text (255);" & _
             "INSERT INTO [prmTable] ( NodeKey, NodeCaption, IsGroup, ChildrenCount, IconID00 ) " & _
             "SELECT C.CustomerID, [prmSpacer] & chr(32) & C.CompanyName AS Expr2, IIf(Count(O.OrderID)>0, True, False) AS Expr3, Count(O.OrderID) AS Expr4, 328 As Expr5 " & _
             "FROM tblCustomers AS C LEFT JOIN tblOrders AS O ON C.CustomerID = O.CustomerID " & _
             "GROUP BY C.CustomerID, C.CompanyName " & _
             "ORDER BY Count(O.OrderID)"

    Set qd = db.CreateQueryDef("", strSQL)
    qd.Parameters!prmTable = "Tabellennamen"
    qd.Parameters!prmSpacer = Space$(3)
    qd.Execute dbFailOnError
    qd.Close


Ist es generell so dass man den Tabellennamen nicht Parametrisieren kann?

Gruß Andreas
Titel: Re: Parametrisierte Abfrage
Beitrag von: Josef P. am Oktober 03, 2016, 18:18:13
Hallo!

Tabellen- oder Feldnamen sind keine Werte, daher kannst du diese nicht über einen Parameter in einer Abfrage dynamisch einbinden.
Wenn du das benötigst, musst du die SQL-Anweisung dynamisch zusammenstellen.

mfg
Josef
Titel: Re: Parametrisierte Abfrage
Beitrag von: Hondo am Oktober 03, 2016, 19:27:03
Danke Josef
Titel: Re: Parametrisierte Abfrage
Beitrag von: ebs17 am Oktober 03, 2016, 21:28:20
Inhaltlich könnte man die Frage stellen, warum gleiche Daten in variable Tabellen eingefügt werden sollen.
Titel: Re: Parametrisierte Abfrage
Beitrag von: Hondo am Oktober 03, 2016, 21:34:46
Hallo,
ja könnte man. ;-)

Es geht um ein natives TreeView in Access (siehe AEK 2016).
Da werden die Daten in eine Tabelle fester Struktur geschrieben an das das "Treeview" gebunden wird.
Man könnte aber auch mehrere TreeViews auf einem Form haben, also muss der Tabellennamen als Parameter beim Initialisieren des TreeViews übergeben werden.

Eine Alternative wäre die Tabelle anhand des "Controlnamens" (hier der Namen des UnterformularObjektes) da dieser ja eindeutig ist, zu erstellen und zu verwenden.

Gruß Andreas
Titel: Re: Parametrisierte Abfrage
Beitrag von: DF6GL am Oktober 04, 2016, 09:08:56
Hallo,

und warum verwendest Du nicht nur eine Tabelle, bei der der Treeviewname in einer Spalte geführt wird und somit für ein  Kriterium (--> Parameter) zur Verfügung steht?