Verwenden von Access-VBA zum ändern der Datensatzquelle für ein Formular

Erstelle ich ein Suchformular und ich bin nicht in der Lage, um zu sehen die Ergebnisse der Suche in das Unterformular.
Die Abfrage läuft wunderbar, ich habe die Unterformulare Datensatzquelle die Abfrage. Ich donot Fehlern. Wenn ich auf die Schaltfläche suchen wird die Abfrage ausgeführt und es zeigt die Anzahl der Zeilen in der Datensatzmarkierer am unteren Rand des Unterformulars, aber ich sehe keine Zeilen.

Hier ist mein code für das OnClick-Ereignis der Schaltfläche:

Private Sub cmdSearch_Click()

Dim tableName As String
Dim colName As String
Dim keyword As String
Dim strSQL As String

tableName = Me.cmbTableNames.Value
colName = Me.cmbColumnNames.Value
keyword = Me.txtKeyword.Value
strSQL = "Select * from [" & [tableName] & "] where [" & [colName] & "] like '*" &  [keyword] & "*';"
Debug.Print strSQL
Me.searchResultsForm.Visible = True

Forms![F_SearchForm]![searchResultsForm].Form.RecordSource = "Select * from [" &   [tableName] & "] where [" & [colName] & "] like '*" & [keyword] & "*';"
Forms![F_SearchForm]![searchResultsForm].Form.Requery
End Sub

Kann mir jemand sagen was ich falsch mache.

Danke

Dies ist, was zeigt sich in der Unmittelbaren Fenster für Debug.Drucken

Select * from [dbo_Internal Contacts] where [First Name] like '*Amy*';

Mein Formular sieht in der Formularansicht:

Verwenden von Access-VBA zum ändern der Datensatzquelle für ein Formular

Ich habe einige Textfelder in meinem Unterformular (35). Wenn ich nun die Abfrage ausführen, meine form sieht wie folgt aus:
Verwenden von Access-VBA zum ändern der Datensatzquelle für ein Formular

Wie kann ich link diese Textfelder im Unterformular die Spalten in der Datenherkunft über vba?

Bitte helfen

  • Gibt es einen Grund, Sie sind nicht mit der nativen Abfrage-generator und design-Modus-Eigenschaften, um die Datensatzquelle für das Formular? Einbettung von SQL in code ist eine schlechte Praxis und (wie Sie entdeckt), ist das Debuggen schwieriger.
  • Ich bin versuchen, um eine Suche zu bilden, und der Tabellenname und die Spaltennamen werden die Werte aus einem Kombinationsfeld ausgewählt durch den Benutzer. Ich habe versucht, diese Abfrage (strSQL), wie es ist. Aber der Zugang ist nicht lassen Sie mich speichern Sie die Abfrage, gibt er mir die Fehlermeldung invalid bracketing bei tablename. Das ist der Grund, warum ich wählte diesen Weg gehen.
  • Sie können nicht fügen Sie diesen code in einer Abfrage; starten Sie einfach von Grund im design-Modus des Abfrage-generator, und wählen Sie dann die Tabellen aus, die Sie benötigen, und erstellen Sie Verknüpfungen zwischen den Bereichen als erforderlich.
  • Debug.Print strSQL gibt diesen im Direktfenster: ------> Select * from [dbo_Internal Kontakte] where [Vorname] like 'Amy';
  • Es tut mir Leid, wenn ich nicht klar war früher. Ich möchte eine Suche erstellen-Formular, das Formular, der ein Kombinationsfeld, in der alle Tabellennamen meiner db. Nachdem ich wählen Sie eine Tabelle, eine weitere combo-box kommt, in der alle Spalten in der Tabelle oben ausgewählt. Dann, wenn der Benutzer wählt eine Spalte erscheint ein Textfeld, hier ein Schlüsselwort eingegeben wird. Jetzt meine Abfrage sollte die Namen der ausgewählten Tabelle, col Namen-und Schlagwort von der form und dem ausführen der select-Abfrage und zeigen Sie die Ergebnisse in einem Unterformular.
  • Oh, es funktioniert, ich weiß nicht, y die * verschwand, als klebte ich die Abfrage hier in der Kommentar-box. Dies ist, was Debug.Print verleiht mir: 'Select * from [dbo_Internal Kontakte] where [Vorname] like 'Amy", ich bin Leid, ich kann nicht Holen Sie sich die * zu zeigen, bis in diesem Kommentar-box, aber Sie existieren in der Abfrage.
  • Ich habe die Ausgabe von debug.Druck auf meine wichtigste Frage
  • Ja, dass ist genau das, was ich bekomme
  • Meine Vermutung ist, dass dein Unterformular enthält keine Daten steuert, die verpflichtet sind, die Felder zurückgegeben, die von der SELECT - Anweisung. Zum Beispiel, wenn ID ist die erste Spalte zurückgegeben SELECT * wird, und Sie möchten, dass die Spalte im Unterformular angezeigt, das Unterformular sollte eine Kontrolle (wie ein Textfeld), deren Steuerelementinhalt-Eigenschaft ist die ID Feld. Macht das Sinn, und das tut beschreiben Sie Ihre Unterformular design?
  • Ich Verstand, was u r sagen. Mein Unterformular ist im Grunde leer, ich donot haben keine texfields oder recordsource-oder controlsource für mein Unterformular. Gibt es eine Möglichkeit, dynamisch legen Sie die Datenherkunft meines Unterformulars mit vba
  • eine weitere Sache, die ich tatsächlich erstellt ein leeres Formular und verwendet es als Unterformular auf meinem main-form.
  • Ein leeres Unterformular wird nicht zeigen Ihnen alle Werte aus der Datenquelle. Dies ist ein wichtiger Punkt ... und ist nicht beschränkt auf Unterformulare.
  • Ya du hast Recht. Aber ich möchte das Unterformular dynamisch, basierend auf der Tabelle ausgewählt ist aus der ersten combobox. Die Anzahl der Spalten in jeder Tabelle unterschiedlich und ich kann nicht einen Satz Anzahl der text-Felder im Unterformular. Gibt es irgendeinen anderen Weg, um zu zeigen das Ergebnis dieser Abfrage, wenn nicht auf einem Unterformular?

InformationsquelleAutor ksagar | 2014-04-08
Schreibe einen Kommentar