4

MSAccessでVIEW定義を作成したい。私は次のCREATE VIEWステートメントを使用しました:

SELECT 
   MFP.FollowUpPlan_Id, 
   MFP.FollowUpPlan_Name AS PlanName, 
   DFP.Sequence_No AS SequenceNo, 
   MFS.FollowUpSchedule_Name AS ScheduleName    
FROM 
   MAS_FollowUp_Plan AS MFP, 
   DET_FollowUp_Plan AS DFP, 
   MAS_FollowUp_Schedule AS MFS
WHERE 
   (((MFP.FollowUpPlan_Id)=DFP.FollowUpPlan_Id) AND
   ((DFP.FollowUpSchedule_Id)=MFS.FollowUpSchedule_Id)) AND
   MFP.is_Deleted = FALSE AND
   DFP.is_Deleted = false     
ORDER BY 
   MFP.FollowUpPlan_Id, DFP.Sequence_No;       

しかし、それはエラーをスローします:

Only Simple Select Queries are allowed in view.

助けてください、よろしくお願いします。

4

3 に答える 3

7

ここでの問題は、Jeroenが説明したように、AccessのCREATE VIEWステートメントの制限です。この場合、CREATE PROCEDURE代わりに使用できます。これにより、dbのQueryDefsコレクションの新しいメンバーが作成されます---したがって、Accessユーザーインターフェイスからは、新しい名前付きクエリとして表示されます。

次のステートメントは、VBScriptのADOを使用して機能しました。ここでの以前のDelphiの質問から、DelphiはADOも使用できると理解しているので、これもうまくいくはずです。

CREATE PROCEDURE ViewSubstitute AS
SELECT
    MFP.FollowUpPlan_Id,
    MFP.FollowUpPlan_Name AS PlanName,
    DFP.Sequence_No AS SequenceNo,
    MFS.FollowUpSchedule_Name AS ScheduleName
FROM
    (MAS_FollowUp_Plan AS MFP
    INNER JOIN DET_FollowUp_Plan AS DFP
    ON MFP.FollowUpPlan_Id = DFP.FollowUpPlan_Id)
    INNER JOIN MAS_FollowUp_Schedule AS MFS
    ON DFP.FollowUpSchedule_Id = MFS.FollowUpSchedule_Id
WHERE
    MFP.is_Deleted=False AND DFP.is_Deleted=False
ORDER BY
    MFP.FollowUpPlan_Id,
    DFP.Sequence_No;
于 2012-09-01T14:53:12.850 に答える
4

Accessでビューを作成するときにORDER BY混合することはできませんJOINエラー" Only simple SELECT queries are allowed in VIEWS."が表示されます(複数形のビューに注意してください)

に複数のテーブルがあるのFROMは一種のことJOINです。

  • を削除するかORDER BY
  • または、テーブルが1つだけで、がFROMありませんJOIN

過去(現在よりも多くのAccessを実行したとき)から、単一のテーブルがで選択された大規模なクエリでこれを確認したことを覚えていますORDER BY

ORDER BYコンセンサスは、とにかくビューに含めるべきではないということです。そのため、それが最善の方法です。

同じエラーメッセージが表示されるもう1つの理由は、パラメータまたはサブ選択を追加した場合です。アクセスはビューのそれらも好きではありませんが、それはあなたのビューには当てはまりません。

于 2012-08-31T09:28:02.553 に答える
1

変数olevarCatalog、cmdをDelphiのOleVariantとして宣言し、ComObjを使用します

olevarCatalog := CreateOleObject('ADOX.Catalog');
olevarCatalog.create(YourConnectionString); //This Will create MDB file.
// Using ADO Query(CREATE TABLE TABLEName....) add the required Tables.

// To Insert View Definition on MDB file.
cmd := CreateOleObject('ADODB.Command');
cmd.CommandType := cmdText;
cmd.CommandText := 'ANY Kind of SELECT Query(JOIN, OrderBy is also allowed)';
olevarCatalog.Views.Append('Name of View',cmd);
cmd := null;

これは、Delphiを使用してMS ACCESSファイル(.MDB)とビューを作成するための最良の方法です。

于 2012-09-04T10:22:52.357 に答える