procedure Tfrmaddrubber.Button1Click(Sender: TObject);
var a: integer;
    i: string;
begin
dmdinge.aqde.SQL.Clear;
dmdinge.aqde.sql.add('SELECT count(*) FROM saiyang..sysobjects WHERE NAME = '''+trim(edit1.text)+'''');
dmdinge.aqde.ExecSQL;
a:=dmdinge.aqde.Fields.Count;
i:=edit1.Text;
if a=0 then
begindmdinge.aqde.SQL.clear;
dmdinge.aqde.sql.add('use saiyang');
dmdinge.aqde.sql.Add('create table i (材料牌号 char(20),PHR float)');
dmdinge.aqde.Parameters.ParamByName('i').Value:=edit1.Text;
dmdinge.aqde.open;
frmaddrubber2.Show;
frmaddrubber2.Edit1.Text:=frmaddrubber.Edit1.Text;
frmaddrubber2.Edit1.Enabled:=false;end
else
messagedlg('库里已经有这个橡胶牌号了!',mterror,[mbok],0);
end;我想做一个数据库,先查库里有没有这张表,如果没有,就新建一张表,试了很多,没有办法,瞎写了一段代码,大神们帮我看看要改哪里。

解决方案 »

  1.   

    select count(*) from sysobjects where id = object_id('DBO.表名')0----不存在1----存在
      

  2.   

    借花献佛:procedure TForm1.Button2Click(Sender: TObject);
    var
      a: integer;
      i: string;
    begin
      dmdinge.aqde.SQL.Clear;
      dmdinge.aqde.sql.add('select count(*) from sysobjects where id = object_id('''+trim(edit1.text)+''')';
      dmdinge.aqde.open;
      a:=dmdinge.aqde.RecordCount;
      i:=edit1.Text;
      if a=0 then
      begin
        dmdinge.aqde.SQL.clear;
        dmdinge.aqde.sql.add('use saiyang');
        dmdinge.aqde.sql.Add('CREATE TABLE '+i+'(材料牌号 char(20),PHR float)');
        dmdinge.aqde.ExecSQL;    frmaddrubber2.Show;
        frmaddrubber2.Edit1.Text:=frmaddrubber.Edit1.Text;
        frmaddrubber2.Edit1.Enabled:=false;
      end
      else
        //messagedlg('库里已经有这个橡胶牌号了!',mterror,[mbok],0);
        messagedlg(PChar('库里已经有这个'+i+'表了!'),mterror,[mbok],0);
    end;调试有问题,自己改改吧。
      

  3.   

    MSSQL?
    试试下面的代码:
    with ADOQuery1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('IF NOT EXISTS(');
      SQL.Add(' SELECT 1 FROM [dbo].[sysobjects]');
      SQL.Add(' WHERE [id]=OBJECT_ID(N''Table1'') AND [type]=N''U''');
      SQL.Add(') CREATE TABLE [dbo].[Table1](');
      SQL.Add(' [Id] [bigint] IDENTITY(1,1) NOT NULL,');
      SQL.Add(' [Field1] [int] NOT NULL,');
      SQL.Add(' [Field2] [varchar](8) NULL,');
      SQL.Add(' PRIMARY KEY([Id] ASC)');
      SQL.Add(')');
      ExecSQL;
    end;
      

  4.   

    SQL2008 R2测试正常....
      

  5.   

    问一声,你的aqde是通过什么控件,连接数据库?
    数据库的类型,控件直接连接,还是三层连接。数据库驱动是什么方式?不同的方式,创建表不一样。