delphi 动态创建access 表,该如何解决

delphi 动态创建access 表
代码如下:
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;

原因:导出数据前动态创建一个与原数据库同样的表结构.
原数据库图片:

新数据库图片

问题:就是‘结账’这个布尔值,是哪里错了吗?

------解决方案--------------------
是不是你直接用数字型比较好啊,0,1表示结帐
状态
------解决方案--------------------
这个没有关系的,只是在表里面显示的形式不同而已(非0的都是表示为真)
即使你看到是勾上或者不勾,其实它内容就是0与-1

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