2017-11-22 1 views
0

Ich habe ein wenig Mühe mit meinem SQL beim ZugangSQL immer Namen von Userform

CurrentDb.Execute "INSERT INTO _tbl_Structure " & _ 
      "SELECT * " & _ 
      "FROM [MS Access;pwd=" & strPassword & ";database=" & DBpath & "\" & DBname & "].[" & tblStructure & "] " & _ 
      "WHERE [user] = '" & [Forms!frm_Advisors_Stats-manager].[Position] 

Die Ausgabe erscheint mit

[Forms!frm_Advisors_Stats-manager].[Position]

Jede Hilfe zu sein, was ich hier falsch mache?

Das Textfeld "Position" zeigt an, ob die eingeloggte Person ein Manager ist oder nicht. Wenn sie ein Manager sind wie auf dem Benutzerformular angegeben zieht alle zeichnet der Manager im Team hat

Der Fehler gezeigt ist:

External name not defined

+2

Sie schließen das Zitat nicht in '= '" & [Forms! Frm_Advisors_Stats-manager]. [P oition] '. Sollte sein '= '" & [Forms! Frm_Advisors_Stats-manager]. [Position] & "'" ' – SearchAndResQ

+0

Ja, ich habe bemerkt, dass nachdem ich gepostet habe, habe ich es geschlossen, aber immer den gleichen Fehler – dmorgan20

Antwort

1

Oder korrekte Belichtungsreihen verwenden:

[Forms]![frm_Advisors_Stats-manager]![Position] 
0

Da Sie String-Verkettung verwenden, Ihr Objekt Notation muss sein gültig für VBA. Da Ihr Objektname einen Bindestrich enthält, müssen Sie sich mithilfe der Formularsammlung und ohne den bang-Operator ordnungsgemäß darauf beziehen.

"WHERE [user] = '" & Forms("frm_Advisors_Stats-manager").Position.Value & "'" 
+0

Danke - Das hat rausgeworfen ein weiterer Fehler: Anwendungsdefinierter oder objektdefinierter Fehler – dmorgan20

+0

Das klingt, als ob Sie den Formular- oder Formularsteuerungsnamen falsch schreiben, oder das Formular ist nicht geöffnet –

+0

Kurz bevor der Code ausgeführt wird, habe ich diese Zeile: DoCmd.OpenForm "frm_Advisors_Stats -manager ", acNormal Der Code ist auch in einem Modul würde sich dies auswirken – dmorgan20

0

Eine andere Möglichkeit, ein Steuerelement in einem Formular zu verweisen, die ich viel verwendet wird, ist:

Form_Advisors_Stats-manager.Position 

Deshalb:

CurrentDb.Execute "INSERT INTO _tbl_Structure " & _ 
     "SELECT * " & _ 
     "FROM [MS Access;pwd=" & strPassword & ";database=" & DBpath & "\" & DBname & "].[" & tblStructure & "] " & _ 
     "WHERE [user] = '" & Form_Advisors_Stats-manager.Position & "'"