一个关于 数据库备份的 非常郁闷的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 ldk0110
  • 开始时间 开始时间
L

ldk0110

Unregistered / Unconfirmed
GUEST, unregistred user!
with&nbsp;savedialog1&nbsp;do<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;InitialDir:=extractfilepath(application.exename);<br>&nbsp;&nbsp;&nbsp;FileName:='zsgl';<br>&nbsp;&nbsp;&nbsp;Title:='保存文件';<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;if&nbsp;savedialog1.Execute&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;ledit1.Text:=savedialog1.FileName;<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;directoryexists(ExtractFilePath(LEdit1.Text))&nbsp;then&nbsp;//判断路径是否存在<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LEdit1.Text:=ExtractFilePath(LEdit1.Text)+ChangeFileExt(ExtractFileName(LEdit1.Text),'');&nbsp;//把有扩展名文件名的扩展名去掉<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;FileExists(LEdit1.Text)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Application.MessageBox('文件已存在是否覆盖?',&nbsp;'确认',&nbsp;mb_yesno)&nbsp;&lt;&gt;&nbsp;6&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOCommand1.CommandText:='';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOCommand1.CommandText&nbsp;:='&nbsp;backup&nbsp;database&nbsp;zsgl&nbsp;to&nbsp;disk&nbsp;=&nbsp;:path&nbsp;with&nbsp;init';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOCommand1.Parameters.ParamByName('path').Value&nbsp;:=TRIM(LEdit1.Text);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOCommand1.Execute;<br>我这样执行后生产的备份文件名自动截取了4个字符,如我输入的文件名是asdfg结果却便为a了,这是怎么回事啊,我一步一步的调一直没发现问题出在哪!!!!
 
怎么这么久都没人回答啊,没人会吗?
 
LEdit1.Text:=ExtractFilePath(LEdit1.Text)+ChangeFileExt(ExtractFileName(LEdit1.Text),'');&nbsp;//把有扩展名文件名的扩展名去掉<br><br>ChangeFileExt(ExtractFileName(LEdit1.Text),'');&nbsp;<br>若果没有扩展名他也会把最后4个字符去掉,因为扩展名包括(.???)4个字符
 
好像不是ChangeFileExt(ExtractFileName(LEdit1.Text),'');&nbsp;这个去掉的<br>程序运行到ADOCommand1.Parameters.ParamByName('path').Value&nbsp;:=TRIM(LEdit1.Text);<br>这的时候&nbsp;LEdit1.Text&nbsp;的值还对着呢就是&nbsp;ADOCommand1.Execute;<br>之后就变了<br>我把LEdit1.Text:=ExtractFilePath(LEdit1.Text)+ChangeFileExt(ExtractFileName(LEdit1.Text),'');&nbsp;//把有扩展名文件名的扩展名去掉<br>这句去掉也不对!!郁闷,还有那个地方可能有错呢?
 
LEdit1.Text<br>这个文本框长度问题,干脆用一个string变量代替,还有就是备份有没有扩展名无所谓。<br>你可以直接用savedialog1.FileName<br><br>ADOCommand1.Parameters.ParamByName('path').Value&nbsp;:=savedialog1.FileName;<br><br>或者<br>ADOCommand1.CommandText&nbsp;:='&nbsp;backup&nbsp;database&nbsp;zsgl&nbsp;to&nbsp;disk&nbsp;=&nbsp;&quot;'+savedialog1.FileName+'&quot;&nbsp;with&nbsp;init';
 
用这个ADOCommand1.CommandText&nbsp;:='&nbsp;backup&nbsp;database&nbsp;zsgl&nbsp;to&nbsp;disk&nbsp;=&nbsp;&quot;'+savedialog1.FileName+'&quot;&nbsp;with&nbsp;init';<br>可以,但是用<br>ADOCommand1.Parameters.ParamByName('path').Value&nbsp;:=savedialog1.FileName;<br>怎么不行呢?这是怎么回事,难道是ParamByName('path').Value&nbsp;有限制长度的问题?<br>我用<br>ADOCommand1.CommandText&nbsp;:='&nbsp;backup&nbsp;database&nbsp;zsgl&nbsp;to&nbsp;disk&nbsp;=&nbsp;&quot;'+LEdit1.Text+'&quot;&nbsp;with&nbsp;init';<br>也可以了
 
我一直都是用ADOCommand1.CommandText&nbsp;:='&nbsp;backup&nbsp;database&nbsp;zsgl&nbsp;to&nbsp;disk&nbsp;=&nbsp;&quot;'+savedialog1.FileName+'&quot;&nbsp;with&nbsp;init';<br>这种模式添加参数的,很少用ADOCommand1.Parameters.ParamByName('path').Value&nbsp;:=savedialog1.FileName来传递参数,看看你的ADOCommand1属性有没有什么设定的问题,还有path可能是个关键字容易出问题。<br>问题解决了加分吧,
 
问题是解决了,可是不清楚到底那个用法怎么不对,希望还有大侠指点,在等等,放心吧分肯定有你的!
 
你的参数“path”&nbsp;建议换掉,写成Apath&nbsp;、Apathname&nbsp;或&nbsp;Afilename等试一下也许就可以了,“PATH”是SQL&nbsp;SERVER&nbsp;的系统保留关键字
 
ADOCommand1.Parameters.ParamByName('path').Value&nbsp;:=TRIM(LEdit1.Text);<br>ADOCommand1.Parameters.ParamByName('path').Size&nbsp;:=length(TRIM(LEdit1.Text));
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
742
import
I
后退
顶部