2016-05-27 14 views
0

私はAccess 2013データベースで作業していて、ちょっと困っています。
私のデータベースはログインに基づいています。あなたがログインすると、すべてのゲーム、アイテムなどを見ることができます
私はログインフォームを作っています。ユーザ名&が正しく入力されると、メインフォームに移動します。また、ユーザー名で
ユーザーに関するデータについては、ユーザー名でパラメータとして情報を取得するビルドクエリがあります。
私の質問は、このクエリ(たとえば、すべてのユーザーのゲーム)を使ってフォームに情報を表示する方法です。パラメータを含む選択クエリに基づいてフォームをパーソナライズ

Dim dbs As DAO.Database 
Dim qdf As DAO.QueryDef 
Dim rst As DAO.Recordset 

Set dbs = CurrentDb 

'Get the parameter query 
Set qdf = dbs.QueryDefs("Get User's Games") 

'Supply the parameter value 
qdf.Parameters(0) = Me.txt_UserName <- This is the user name from the main form 

'Open a Recordset based on the parameter query 
Set rst = qdf.OpenRecordset() 

このコードは、必要なデータを取得するための仕事をしていませんが、私は、フォームにそれを注入する方法がわからない:私はコードからパラメータでクエリを実行しているについてthinkedいる何

Forms![My Games].RecordSource = qdf.SQL 
DoCmd.OpenForm "My Games" 

が、SQL、パラメータなしで、それはそれのために値でパラメータを置き換えるためにその可能性をwork.Maybeないように:私は、私は次を使用してみましたが、対応するフォーム
を構築持っています働く?
私はこれを試してみましたが、それはコンパイルすることができませんでした:

Dim q As String 
q = Replace(qdf.SQL, "[Enter User Name]", Me.txt_UserName) 
Forms![My Games].RecordSource = q 

任意のアイデア?これを行う良い方法がある場合は、私は提案に開放しています

答えて

0

私は私の質問に答えることができました。
私が見つけた解決策は、最もきれいではありませんが、機能します。

私は、たとえば、ユーザーのゲームに基づいてフォームを、得ている場合は、私は情報を取得するには、パラメータを指定して定期的な選択クエリを使用し、それを動作させるためのコードのこのビットを使用します。

Public Function ChangeQuery(qdf As DAO.QueryDef, userName As String) As String 
    Dim q As String 
    q = qdf.sql 

    Dim UserNameAsString As String 
    UserNameAsString = "'" & userName & "'" 

    q = Replace(q, "[Enter User Name]", UserNameAsString) 
    ChangeQuery = q 
End Function 

この関数はパラメータ[Enter User Name]を置き換えます。関数内でuserNameと指定し、SQLを置き換えたので、パラメータはありません。私は非選択クエリを必要に応じて

Dim dbs As DAO.Database 
Dim qdf As DAO.QueryDef 

Set dbs = CurrentDb 

'Get the parameter query 
Set qdf = dbs.QueryDefs("Get User's Games") // Get The needed Query 

Me.RecordSource = ChangeQuery(qdf, Me.OpenArgs) //Sets the recordsource of the form to the non parameter sql. 

が、私はこれがそれを打ち消さ誰がお役に立てば幸いですので

Dim qry As DAO.QueryDef 
Set qry = dbs.QueryDefs("Query Name") 
qry .Parameters(0) = // some parameter 
qry .Parameters(1) = // some parameter 

qry .Execute 

のようにそれを使用します。ここで
は、関数を使用する方法です。

関連する問題