數據庫图片新增問題(挑戰問題!)(100分)

  • 主题发起人 主题发起人 WangBingBing
  • 开始时间 开始时间
W

WangBingBing

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一軟件要作如下新增:
FieldByName('merm_no').AsString:=EDIT1.TEXT;(编号)
FieldByName('merm_photo1').AsString:=Edit2.Text;(放入圖片字段(VARCHAR))
FieldByName('merm_Qty').AsString:=DBEdit3.Text;
有一個特定的目錄文件夹放圖片;新增這筆記錄Edit2.Text不用人工
輸入,當在目錄文件夹放入的圖片名與EDIT1.TEXT中輸入的編號相同時就自動把這個圖片名+.JPG
自動增到merm_photo1字段里面去,如果新增的編號EDIT1.TEXT名在這個特定文件夹放圖片的目錄
里面沒有這個片名就設merm_photo1為NULL空值;


望高手相助!謝謝!
 
Var
F:string; //定义为一个文件名如 A20.jpg
begin
f:='c:/hello/'+Trim(edit1.text)+'.jpg'; //获取文件位置:c:/hello/A20.jpg
if FileExists(f) Then //判断文件是否存在
Begin
With AdoQuery1 Do Begin //保存文件
Close;
Sql.Clear;
Sql.Add('insert into Hello(id,Image1)values(:id,:image1)');
Parameters[0].Value:=edit1.Text;
Parameters[1].LoadFromFile(f,ftBlob);
ExecSQL;
End;
End;
end;
//结束
明白了吗?
 
謝謝上大虾;
我不知道Sql.Add('insert into Hello(id,Image1)values(:id,:image1)');
里面的Hello,id各是什么意思;
Parameters[0].Value:=edit1.Text;
Parameters[1].LoadFromFile(f,ftBlob);
不用Parameters可以實現嗎?這樣用起來很麻煩了;因為我新增還有其它的,我是按上面的主法新增的;
請告知
謝謝!
 
可不可以給我一個對應的merm_no(编号)字段對應的是EDIT1.TEXT;
而merm_photo1(放入圖片字段)字段對應的是Edit2.Text;

我用的就是TADOQUERY;
请按这个给我写一个好吗?

上面的
Sql.Add('insert into Hello(id,Image1)values(:id,:image1)');
Parameters[0].Value:=edit1.Text;
Parameters[1].LoadFromFile(f,ftBlob);
确实我认为我的困难了解它,SORRY!
 
你是想把图片保存在数据库中吗?还是说,数据库中只记录图片的位置。
上面说的是把图片保存在数据库中。不是保存图片的路径。

》Hello,id各是什么意思
//Hello 获取文件位置:c:/hello/*.jpg,ID是你要传入的参数(也就是要把EDIT1
的值传给它)。

》可不可以給我一個對應的merm_no(编号)字段對應的是EDIT1.TEXT;
》而merm_photo1(放入圖片字段)字段對應的是Edit2.Text;
这是不是要保存图片的路径,不保存图片呀???

 
我只想把图片名保存在数据库merm_photo1字段中;
但是這個图片名是與merm_no(编号)名相同的;
例如:我要新增一個編號為00001(merm_no);則要把Q:/squote/Photo/下的00001.JPG
这个文件名存入到merm_photo1字段中;
如果在Q:/squote/Photo/下沒有00001.JPG這個文件名就為空;
总之我需要的是merm_photo1(EDIT2.TEXT)這個不是人工輸入,而是根據merm_no和Q:/squote/Photo/下
的图片有或是沒有來決定merm_photo1;
TKS!
 
怎麼沒有人來回我了,我需要幫助!
謝謝!
 
:(!我快要哭了!
 
这就更好办了。但你如何维护数据库中保存的路径和你图片的真正路径的一至性呢?!
比如:你刚开始保存时都是对的,但有人不小心把图片移动了位置。这时你怎么办???
下面来解决你保存图片路径的问题。首先,你要先把图片放在一个由规律的路径下。
也就是说,你知道图片名后就能找到图片。也就是你说的:例如:
》我要新增一個編號為00001(merm_no);則要把Q:/squote/Photo/下的00001.JPG
现在你保存的路径是Q:/squote/Photo/,如果它是定死的,就好办了,如果不是,你要
自己想算法。。。
下面是路径是Q:/squote/Photo/的程序。。。
Var Tempstr:string;

FieldByName('merm_no').AsString:=EDIT1.TEXT;(编号)
Tempstr:='Q:/squote/Photo/'+EDIT1.TEXT+'.JPG';
FieldByName('merm_photo1').AsString:=Tempstr;
你试试上面的代码行不行。不行再讨论。。。
 
謝謝wumeng;
不過在我公司這系統實質需求中;都有先增入這merm_no條記錄,然後再換图片到這個目錄;
如果先新增了這條記錄;判断為空了(沒有這图片);過些日子然後再換图片到這個目錄下面又有圖片了,
但是這個merm_photo1栏位还是为空(代表还没有这圖片),怎麼解決進去?最好能有自動的方法嗎?
 
要先判断输入的文件名是否有图像存在
你可能用文件选择控件来做
function DirectoryExists(Name: string): Boolean
这是查找文件是否存在的函数
 
謝謝!
不過我現在要解決的是以下問題了:
"在我公司這系統實質需求中;都有先增入這merm_no條記錄,然後再換图片到這個目錄;
如果先新增了這條記錄;判断為空了(沒有這图片);過些日子然後再換图片到這個目錄下面又有圖片了,
但是這個merm_photo1栏位还是为空(代表还没有这圖片),怎麼解決進去?最好能有自動的方法嗎?"
 
回复wumeng:
我用的是絕對路經;直接存在服務器上指定的目錄
下面,別人是改不了的,只有網管有權限去到服務器去改動;
謝謝!
 
那你就作一个程序,定时或人工执行,保证有图片时数据库中就要有相应的路径。
原理这样:先选择所有'merm_photo1'为空的字段,SQL 为 select * from TABLE
where merm_photo1 is null,有这个结果集后,循环判断你的路径下有没有相应图片。
有就UPDATE。
查找文件是否存在的函数为fileexists(FileName).
这个是目录的判断DirectoryExists(Name: string)
 
你放图片的可以用两个字段,
一个是你输入时的字段,这个是不管有没有文件都要保存的
一个是你真正的如果没有图片为空的字段
用第一个字段进行比较,如果找到图片,那么第二个字段等于第一个字段的值
那就OK啦
 
回复wumeng:
很高興你的理解能力非常好,你完全理解了我需求的意圖;也非常感謝你的熱心;謝謝!
但我還有不明白的:
怎麼去定时或人工执行呢,;我想這個fileexists(FileName).在親增時判断了;但要在
新增了以后怎么去判断?
可否麻烦对照这两个字段给我写一个实例供我参考?谢谢!

 
呵呵,函数拷错了,自杀
If FieldByName("第二个字段").AsString<>'' then
begin
If fileexists(FieldByName("第一个字段").AsString) then
begin
'这里写第一个字段的值给第二字段的语句
end;
end;
 
回无疯无禄:
merm_photo1栏位字段自動新增,不是輸入;我想放入一图片要两个栏位,这个不太适合;一个
库不能按自已的喜好来任改动;
最好就一個merm_photo1栏位来搞定;你以上的好象還不能解決先增記錄,後換图片可以在merm_photo1中有图片
的功能
 
>>怎麼去定时或人工执行呢,
作这个的时候,你的程序已经写好,人工执行程序你应该会吧(双击就行)。定时执行。
在NT 下有计划任务这个服务,或者你也可以用AT命令。。。

》》我想這個fileexists(FileName).在親增時判断了;但要在新增了以后怎么去判断?
原理这样:先选择所有'merm_photo1'为空的字段,SQL 为 select * from TABLE
where merm_photo1 is null,有这个结果集后。。。
~~~~~~~~~~~~~~~~~~~~~~~~~~~
这就是找新增记录以后,但图片栏位是空的记录了。
 
后退
顶部