Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何使用Delphi应用程序在MS Access数据库中创建视图,而无需在PC上安装MSAccess?_Database_Delphi_Ms Access_View - Fatal编程技术网

Database 如何使用Delphi应用程序在MS Access数据库中创建视图,而无需在PC上安装MSAccess?

Database 如何使用Delphi应用程序在MS Access数据库中创建视图,而无需在PC上安装MSAccess?,database,delphi,ms-access,view,Database,Delphi,Ms Access,View,我想在MS Access上创建视图定义。我使用了以下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_P

我想在MS Access上创建视图定义。我使用了以下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.
请帮忙,提前谢谢。

。它会让你注意到复数视图的错误

在FROM中有多个表是一种连接方式

或者通过, 或者在FROM中只有一个表,并且没有联接。 我记得在过去,我做了比现在更多的访问工作,在一个大型查询中看到了这一点,其中有一个表select,还有一个orderby

,所以这是你最好做的事


如果添加参数或子选择,则为。Access也不喜欢视图中的视图,但在您的视图中并非如此。

正如Jeroen所解释的,这里的问题是Access的限制“创建视图”语句。在这种情况下,可以改用创建过程。它将创建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;

在Delphi中将变量olevarCatalog,cmd声明为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 File.MDB和视图的最佳方法。

尝试从查询中删除部分顺序,并在从该视图中选择时使用它,例如从视图中选择*按以下顺序UPPLAN\u Id,SequenceNo。查询而不是视图更合适吗?它将允许更多的sql方式!;感谢您教我Access有创建过程,它非常类似于创建视图,但没有一些限制。