奇怪的问题:关于ACCESS2000和QUERY ( 积分: 100 )

  • 主题发起人 幼虫2004
  • 开始时间

幼虫2004

Unregistered / Unconfirmed
GUEST, unregistred user!
我用access2000库,其中一个表有6个字段:短日期、长时间、是否、递增、文本、备注

我在输入界面有控件分别对应上述:edit1、maskedit1、无、无、spinedit1、memo1。

输入值:2005-7-24(注:是用MonthCalendar1双击赋值的)、12:30、数据库自动递增、数据库设置默认值为0、111、第一次试验。

按保存键,执行Query1的SQL如下:
sqltmp := 'insert into 库表名(短日期,长时间,文本,备注) ';
sqltmp :=sqltmp + 'values('+main0.edit1.text+','+main0.maskedit1.text+',';
sqltmp :=sqltmp +main0.SpinEdit1.Text+','+main0.Memo1.Text+')';
main0.Query1.SQL.Add(sqltmp);
main0.Query1.Prepare;
main0.Query1.execsql;
然后出错,单保留短日期、和或文本时可以增加一条纪录,但是年月变成1905-5-20,或者我将字段类型改为文本后变成1974, 而时间根本入不了库,memo的内容也不行。
我用showmessage()看了一下SQL为“insert into 库表名(短日期,长时间,文本,备注) values(2005-7-24,12:30,111,第一次试验)”
没看出来什么毛病呀?
其中单保留长时间的----insert into 库表名(长时间) values(12:30) 的错误是:
Project Project1.exe raised exception class EDatabaseError with message 'Query1:
Field '03' is of an unknown type'.

还有个错误提示:
'General SQL error.
[ODBC Microsoft Access 驱动程序]参数不足,期待是2。'

都是怎么回事啊????
 
我用access2000库,其中一个表有6个字段:短日期、长时间、是否、递增、文本、备注

我在输入界面有控件分别对应上述:edit1、maskedit1、无、无、spinedit1、memo1。

输入值:2005-7-24(注:是用MonthCalendar1双击赋值的)、12:30、数据库自动递增、数据库设置默认值为0、111、第一次试验。

按保存键,执行Query1的SQL如下:
sqltmp := 'insert into 库表名(短日期,长时间,文本,备注) ';
sqltmp :=sqltmp + 'values('+main0.edit1.text+','+main0.maskedit1.text+',';
sqltmp :=sqltmp +main0.SpinEdit1.Text+','+main0.Memo1.Text+')';
main0.Query1.SQL.Add(sqltmp);
main0.Query1.Prepare;
main0.Query1.execsql;
然后出错,单保留短日期、和或文本时可以增加一条纪录,但是年月变成1905-5-20,或者我将字段类型改为文本后变成1974, 而时间根本入不了库,memo的内容也不行。
我用showmessage()看了一下SQL为“insert into 库表名(短日期,长时间,文本,备注) values(2005-7-24,12:30,111,第一次试验)”
没看出来什么毛病呀?
其中单保留长时间的----insert into 库表名(长时间) values(12:30) 的错误是:
Project Project1.exe raised exception class EDatabaseError with message 'Query1:
Field '03' is of an unknown type'.

还有个错误提示:
'General SQL error.
[ODBC Microsoft Access 驱动程序]参数不足,期待是2。'

都是怎么回事啊????
 
是否、递增字段插入时没有赋值.最好指定默认值.
 
不是,因为他们不报错,报错的是只要insert into 库表名(长时间和或备注) values(值1,值2)就出错。
 
>>Field '03' is of an unknown type'
那你长时间是什么类型?
 
就是access的时间/日期型 格式--长时间 12:00:00
 
那没办法了,我Access基本就没用过(用Sql Server),是否12:30:00,或者转换下插入.
 
12:30 --> 12:30:00 我也试过了,唉!
 
有没有救世主啊
 
您好﹗

Values后少了一個空格﹐另外在長日期值的左右加上#試試﹐如下﹕
sqltmp := 'insert into 库表名(短日期,长时间,文本,备注) ';
sqltmp :=sqltmp + 'values (#'+main0.edit1.text+'#,'+main0.maskedit1.text+',';
sqltmp :=sqltmp +main0.SpinEdit1.Text+','+main0.Memo1.Text+')';
 
注意数据类型,Query对有些类型不感冒的哦!!!
 
sqltmp := 'insert into 库表名(短日期,长时间,文本,备注) ';
sqltmp :=sqltmp + 'values(#'+main0.edit1.text+'#,#'+main0.maskedit1.text+'#,"';
sqltmp :=sqltmp +main0.SpinEdit1.Text+'","'+main0.Memo1.Text+'")';
main0.Query1.SQL.Add(sqltmp);
main0.Query1.Prepare;
main0.Query1.execsql;
 
query1.sql.clear;
query1.SQL.add('insert into TT ');
query1.SQL.add(' (F1,F2,F3) ');
query1.SQL.add(' values:)F1, :F2, :F3) ');
query1.ParamByName('F1').AsString := 'Tname';
query1.ParamByName('F2').AsInteger :=
query1.ParamByName('F2').AsDATETIME := DATE();
这样中不中???
 
谢谢大家,谢谢大家了!
我太感动了,呜~呜~(今夏大雨)

诸位朋友的方法我都试试,今天跑到书店翻翻书,感觉app2001的成功率最大,就是不知道MEMO的内容入库中不中。
 
还是不中!!
气死我了!!

请看我的代码,错在那里了?郁闷!
这是我另外的试验程序代码,Access2000数据库,其中一个表dd的字段类型:短日期、短时间、文本、备注、文本;
procedure TForm1.Button11Click(Sender: TObject);
begin
query1.Close;
query1.SQL.Clear;

query1.SQL.Add('insert into dd(短日期,短时间,文本,备注,文本) values:)v1,:v2,:v3,:v4,:v5)');
query1.Params[0].AsDate := strtodate(edit4.Text);//edit4输入2005-5-5,用strtodate可以转换成日期,
query1.Params[1].AsTime := strtotime(maskedit5.Text);//输入07:20、7:20、17:20用strtotime可以转换,
query1.Params[2].AsString := edit5.Text;//‘111’
query1.Params[3].AsString := edit6.Text;//‘试验试验试验’
query1.Params[4].AsString := edit7.Text;//‘小王’

query1.Prepare;
query1.ExecSQL;

end;


运行就出错:
Project Project1.exe raised exception class EDBEngineError with message 'General SQL error.
[Microsoft][ODBC Microsoft Access 驱动程序]时间日期格式无效 (null)' .
 
顶一下,追求真理,坚持不懈
 
真是个很难的问题,
谁能按照我的思路用D6+Access做出来哪?
急盼!!
 
出错信息:
Project Project1.exe raised exception class EDBEngineError with message 'General SQL error.
[Microsoft][ODBC Microsoft Access 驱动程序]时间日期格式无效 (null)' .


我试验后发现:如果去掉日期、时间,就可以正常运行,可见是日期和时间方面的错误;

在Delphi下用strtodate(edit4.Text);//edit4输入2005-5-5,strtodate函数可以将2005-5-5转换成日期,不会报错;
同样strtotime(maskedit5.Text);//输入07:20、7:20、17:20用strtotime可以转换,不报错;
可见日期、时间在Delphi下的转换都没有问题;

可是一向数据库插入新记录就错! ???
 
注意日期格式,请检查
 
ak_2005 请详细说说,最好您能帮我走走这段程序在您的机器上。
 

Similar threads

S
回复
0
查看
747
SUNSTONE的Delphi笔记
S
S
回复
0
查看
696
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部