首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi 动态创造access 表

2013-01-08 
delphi 动态创建access 表本帖最后由 linzhen6790 于 2011-08-24 19:29:27 编辑代码如下:procedure Tdbbuc

delphi 动态创建access 表
本帖最后由 linzhen6790 于 2011-08-24 19:29:27 编辑 代码如下:
procedure Tdbbuckup.BitBtn5Click(Sender: TObject);
var
  Source:string;
  CreateDB:Variant;
  path : string;
begin
  SaveDialog1.Filter:='All files (*.mdb)|*.*';
  SaveDialog1.FileName:='DataBack'+FormatDateTime('yyyyMMddhhmmss',now);
  if SaveDialog1.Execute then
  begin
    path:=SaveDialog1.FileName;
      //判断数据库是否已经存在
      if   FileSearch(path,ExtractFileDir(Application.ExeName))<>''   then
      begin
          Application.MessageBox('数据库已经存在!','提示',64);
          exit;
      end
      else
      begin
      // 创建数据库
      Source:='Provider=Microsoft.Jet.OLEDB.4.0;'
              +'Data Source='+path+'.mdb';
      try
          CreateDB:=CreateOleObject('ADOX.Catalog');
          CreateDB.Create(Source);
          Application.MessageBox('数据库创建成功','提示',64);
          memo1.Lines.Add('                                             导出数据');
          memo1.Lines.Add(FormatDateTime('',now)+': '+'创建数据库成功');
          memo1.Lines.Add(FormatDateTime('',now)+': '+'创建路径:'+path+'.mdb');
      except
          Application.MessageBox('数据库创建失败','提示',64);
      end;
      end;
  end;

      //创建数据库中的表
      ADO.ConnectionString:=Source;
      ADO.Connected:=true;

      ADOQuery2.Connection:=ADO;
  spfjdh;

end;
//
procedure Tdbbuckup.spfjdh;
begin
  ADOQuery2.Close;
  ADOQuery2.SQL.Clear;
  sql:= 'create   table   spfjdh   '+
        '(编号  COUNTER   PRIMARY   KEY,'   +
        '   进货单号     varchar,'+
        '   进货商     varchar,'+
        '   进货日期     datetime,'+
        '   应付金额     CURRENCY,'+
        '   实付金额     CURRENCY,'+
        '   欠款金额     CURRENCY,'+


        '   费用     CURRENCY,'+
        '   付款人     varchar,'+
        '   付款说明     memo,'+
        '   操作员     varchar,'+
        '   经办人     varchar,'+
        '   结账       bit,'+
        '   审核     varchar,'+
        '   备注     varchar,'+
        '   备注1     memo)'   ;
      ADOQuery2.SQL.Add(sql);
     try
          ADOQuery2.ExecSQL;
          memo1.Lines.Add('创建表:  spfjdh ;属性说明  商品进货总金额 ;  成功');
          //查询表名

      except
          Application.MessageBox('数据表创建失败','提示',64);
           memo1.Lines.Add('创建表:  spfjdh ;属性说明  商品进货总金额 ;  失败');
          end;
end;

原因:导出数据前动态创建一个与原数据库同样的表结构.
原数据库图片:
delphi 动态创造access 表
新数据库图片
delphi 动态创造access 表
问题:就是‘结账’这个布尔值,是哪里错了吗?
[解决办法]
是不是你直接用数字型比较好啊,0,1表示结帐
状态
[解决办法]
这个没有关系的,只是在表里面显示的形式不同而已(非0的都是表示为真)
即使你看到是勾上或者不勾,其实它内容就是0与-1

[解决办法]
布尔型应该是YESNO吧
[解决办法]
动态创建access,mark一下……
[解决办法]
‘结账’这个逻辑定义用' 结账 bit,'跟' 结账 YesNo,'是等效的,你原文贴图的差异仅在于用Access打开时,这个字段的“查阅”显示控件不同,一个是指定了“复选框”,后一个是指定了“文本框”,这一点仅在Access中打开有差异,在delphi的sql操作记录的过程中,是没差异的。

热点排行