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

WhyAndAnswer 2004-10-18 06:12:35
程序的思路是:
1、把产品编号放在一个TStringList中(由于有文件名的非法字符,如"\"等)
2、把文件名就定义为在StringList中的index(如0.Adtg)
3、每次读到产品编号时,就判断StringList中是否存在该编号,
4、不存在就到数据库重新查询sql语句,存在就到本地读出来
...全文
285 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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);
}

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧