form1:Tform
query1:d:\date.mdb(ODBC)
datasource1:query1
date.mdb每次都是从一个模板目录中(c:\data.mdb)拷贝过来的,也就是说对data.mdb进行操作的时候,data.mdb都是空数据库.对data.mdb操作完之后拷贝到另外一个目录(e:\date.mdb).
流程大概如下(节省了许多判断以及interface中的一些调用).
************
formshow代码:
//将模板目录的空白数据库拷贝到当前目录
copyfile('c:\data.mdb','d:\data.mdb',false);
************
主代码button1.click:
//对t_user进行插入
with query1 do
begin
close;
sql.clear;
sql.add('insert into t_user (id,name,password) values (:id,:name,:password)');
parambyname('id').asinteger:=1;
....(省略)
execsql;
end;
//对day_balance进行插入
with query1 do
begin
close;
sql.clear;
sql.add('insert into day_balance(cur_day,status) values(:cur_day,:status)');
parambyname('cur_day').asstring:='20050725';
parambyname('status').asstring:='0';
execsql;
end;
shellexcute();//调用加密算法
while not fileexists('e:\data.mdb') do
begin
copyfile('d:\data.mdb','e:\data.mdb',false);
end;
//将空白模板数据库拷贝到ODBC链接的数据库,以便下次操作.
copyfile('c:\data.mdb','d:\data.mdb',false);
**************
问题出现了,当第一次运行程序的时候,插入t_user和day_balance的数据都正常,但是不退出程序,继续打开form1运行的时候,t_user的数据正常,但是day_balance的数据就是空的.(但程序始终都没有报错)
设定了断点,step运行时却发现,
//对day_balance进行插入
with query1 do
begin
close;
sql.clear;
sql.add('insert into day_balance(cur_day,status) values(:cur_day,:status)');
parambyname('cur_day').asstring:='20050725';
parambyname('status').asstring:='0';
execsql;
end;
这段程序返回的结果都是空的.
我就郁闷了,既然delphi能让这段程序正常运行下去,为什么会对day_balance不能插入数据呢.****************
个人想法:
只要delphi开始运行,ODBC链接的数据库d:\data.mdb就会产生一个data文件,文件类型是access.lockfile.9 ,此时delphi程序是不是应该在每次对数据库进行操作完之后进行释放???
如何释放???
请各位大侠指教.以前都是对固定的数据库进行操作,现在碰到这样的问题,真的脑壳痛啊55555555555
query1:d:\date.mdb(ODBC)
datasource1:query1
date.mdb每次都是从一个模板目录中(c:\data.mdb)拷贝过来的,也就是说对data.mdb进行操作的时候,data.mdb都是空数据库.对data.mdb操作完之后拷贝到另外一个目录(e:\date.mdb).
流程大概如下(节省了许多判断以及interface中的一些调用).
************
formshow代码:
//将模板目录的空白数据库拷贝到当前目录
copyfile('c:\data.mdb','d:\data.mdb',false);
************
主代码button1.click:
//对t_user进行插入
with query1 do
begin
close;
sql.clear;
sql.add('insert into t_user (id,name,password) values (:id,:name,:password)');
parambyname('id').asinteger:=1;
....(省略)
execsql;
end;
//对day_balance进行插入
with query1 do
begin
close;
sql.clear;
sql.add('insert into day_balance(cur_day,status) values(:cur_day,:status)');
parambyname('cur_day').asstring:='20050725';
parambyname('status').asstring:='0';
execsql;
end;
shellexcute();//调用加密算法
while not fileexists('e:\data.mdb') do
begin
copyfile('d:\data.mdb','e:\data.mdb',false);
end;
//将空白模板数据库拷贝到ODBC链接的数据库,以便下次操作.
copyfile('c:\data.mdb','d:\data.mdb',false);
**************
问题出现了,当第一次运行程序的时候,插入t_user和day_balance的数据都正常,但是不退出程序,继续打开form1运行的时候,t_user的数据正常,但是day_balance的数据就是空的.(但程序始终都没有报错)
设定了断点,step运行时却发现,
//对day_balance进行插入
with query1 do
begin
close;
sql.clear;
sql.add('insert into day_balance(cur_day,status) values(:cur_day,:status)');
parambyname('cur_day').asstring:='20050725';
parambyname('status').asstring:='0';
execsql;
end;
这段程序返回的结果都是空的.
我就郁闷了,既然delphi能让这段程序正常运行下去,为什么会对day_balance不能插入数据呢.****************
个人想法:
只要delphi开始运行,ODBC链接的数据库d:\data.mdb就会产生一个data文件,文件类型是access.lockfile.9 ,此时delphi程序是不是应该在每次对数据库进行操作完之后进行释放???
如何释放???
请各位大侠指教.以前都是对固定的数据库进行操作,现在碰到这样的问题,真的脑壳痛啊55555555555
解决方案 »
- 为什么按F9无法编译程序?
- delphi表格制作——再次请问一下
- 大侠:如何备份、恢复数据库啊??MDI窗口如何实现横向、纵向、层叠排列??
- 求有關技術:繁簡體轉換,具體要求請入內。
- 如何在TREEVIEW中点击一个最底层的节点来动态创建一个数据库中的一个表,并保存到数据库中???在线等
- Grid的难题??!!
- 在安装一个IMAGE控件时,提示“找不到文件dsgnintf.dcu”文件,请问怎么解决。
- 2条螺旋方阵问题,请教源代码,相赠100分!
- 求助,李维的书哪里里有免费下载?急用,在线等待,拜托!!!
- 系统Imagelist和enumwindows的问题,请高手解答。。。且高分来去花。。。
- 难题:不用MDI方式,如何能让背景窗体总是在最底(不能把其他窗体设为总在最前来解决)
- 鼠标取词
而现在每次对数据库操作之前,都要从一个模板目录中将空白的数据库文件拷贝过来.
大侠们帮忙啊!
搂主检查一下表 day_balance 中的 cur_day 和 status 的数据类型是不是和程序中定义的不一样?
应该不是query的问题。
在主代码button1开始部分加入:
form_login.database.connection:=true;
在shellexcute();//调用加密算法语句前面加入:
form_login.database.connection:=false;这样每次copyfile之前都断开了数据库data.mdb
程序这样修改之后,一切正常了.结帖了.晚上喝了2杯啤酒庆祝了一下.