新做一模块,需要在现在数据库中增加1个表与两个视图如果在程序打开时把表和视图创建进去?发现表可以成功,但视图创建不进去

解决方案 »

  1.   

    我的语句 我放了三个MEMO 然后把创建语句放进去
    表的语句如下:
    if not exists (select * from 
    dbo.sysobjects where id = 
    object_id(N'[dbo].
    [p_ModuleInstructionTab]') 
    and OBJECTPROPERTY(id, 
    N'IsUserTable') = 1)
    CREATE TABLE [dbo].
    [p_ModuleInstructionTab] (
    [ID] [int] IDENTITY (1, 
    1) NOT NULL ,
    [Fid] [int] NOT NULL ,
    [FInstruction] [text] 
    COLLATE Chinese_PRC_CI_AS NULL ,
    [isused] [int] NOT NULL 
    ,
    [int1] [int] NULL ,
    [int2] [int] NULL ,
    [int3] [int] NULL ,
    [str1] [varchar] (50) 
    COLLATE Chinese_PRC_CI_AS NULL ,
    [str2] [varchar] (50) 
    COLLATE Chinese_PRC_CI_AS NULL ,
    [str3] [varchar] (50) 
    COLLATE Chinese_PRC_CI_AS NULL ,
    [img] [image] NULL 
    ) ON [PRIMARY] TEXTIMAGE_ON 
    [PRIMARY]视图语句create view dbo.P_FormMenuView
    as
    select 
    a.subsysid,a.subsysname,a.showid,b.menuid,b.menucaption,b.menustruct,b.parentmenu
    id from P_SubSystemTab a left join P_FormMenuConfigTab b on a.subsysid=b.subsysid
    where a.useed=1
    然后:  try
        AdoqTmp.SQL.Text := Memo1.Text;
        AdoqTmp.ExecSQL;
      except
            ShowMessage('memo1');
      end;
      

  2.   

    你一次过的话,用动态语句较好, 即 N'...还有,你用MEMO的话,注意MEMO的行,即你可以adoquery1.sql.add(... 一行一行的加
      

  3.   

    AdoqTmp.SQL.Text := Memo1.Text; 
    Memo中如果有换行符等字符,放到sql中执行是有问题的
      

  4.   

    建议用sqlserver的DTS生成的脚本去执行,在执行中加个goif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[user]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[user]
    GOCREATE TABLE [dbo].[user] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [name1] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [id1] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [bm1] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [bmbh] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [pass1] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [manager] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    GO