多次执行ADODataSet的打开和LoadFromFile,SaveToFile,竟然会出错,提示“系统找不到指定的路径”

WhyAndAnswer 2004-10-18 06:12:35
程序的思路是:
1、把产品编号放在一个TStringList中(由于有文件名的非法字符,如"\"等)
2、把文件名就定义为在StringList中的index(如0.Adtg)
3、每次读到产品编号时,就判断StringList中是否存在该编号,
4、不存在就到数据库重新查询sql语句,存在就到本地读出来
...全文
217 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
WhyAndAnswer 2004-10-20
???
回复
cnrealboy 2004-10-19
//这里在DBGrid中多次变化编号后,就会出错
//错误是“系统找不到指定的路径”

你是怎么变化编号的?其中是否有一些代码影响到你的系统的一些设置了?
跟踪调试一下,看看各种变量是否正确。
代码没有看到很明显的错误,或许是我功力不够!
回复
WhyAndAnswer 2004-10-19
很奇怪啊
回复
WhyAndAnswer 2004-10-19
code是一个字符型的编号,由于其中含有不能作为文件名的字符,所以只好加到StringList中,把该code在StringList中的位置作为文件名

错误发生在DS->Open();
而不是在DS->SaveToFile(fn,pfADTG);
回复
hongwuzhao 2004-10-19
似乎应该:
StringList->Add(code); //不存在则添加到StringList
fn+=IntToStr(code)+".Adtg"; //最后一个
回复
hongwuzhao 2004-10-19
以下两句好象有问题。加入的code可能和fn(StringList->Count-1)不一致


StringList->Add(code); //不存在则添加到StringList
fn+=IntToStr(StringList->Count-1)+".Adtg"; //最后一个
回复
WhyAndAnswer 2004-10-18
一般产品编号在5个以上就有可能出错,数据集的打开和从本地导入是无规律的;
回复
WhyAndAnswer 2004-10-18
源程序
String fn=ExePath+"temp\\"; //ExePath应用程序路径
int index=-1;
index=StringList->IndexOf(code); //定位
if(index>=0)
{
//找到了
fn+=IntToStr(index)+".Adtg";
}
else
{
StringList->Add(code); //不存在则添加到StringList
fn+=IntToStr(StringList->Count-1)+".Adtg"; //最后一个
}

int exe=0; //是否要到数据库查询

if(FileExists(fn)) //本地是否存在该文件
{
if(index>=0) //该编号已经存在
{
DS->LoadFromFile(fn); //本地读出来
}
else
{
exe=1;
}
}
else
{
exe=1;
}

if(exe==1) //要从数据库查询
{

//取生产计划数据
DS->Close();
DS->Connection=ADOCn;

DS->CommandText="exec Get_SP '"+code+"'"; //执行存储过程
if(!DS->Prepared)
{
DS->Prepared=true;
}
/*****************
//这里在DBGrid中多次变化编号后,就会出错
//错误是“系统找不到指定的路径”
DS->Open();
DS->SaveToFile(fn,pfADTG);
}
回复
相关推荐
发帖
数据库及相关技术
创建于2007-08-02

1159

社区成员

C++ Builder 数据库及相关技术
申请成为版主
帖子事件
创建了帖子
2004-10-18 06:12
社区公告
暂无公告