Query接值的問題 |
尚未結案
|
connection
一般會員 發表:5 回覆:8 積分:2 註冊:2005-07-19 發送簡訊給我 |
各位大大,
不才的小妹又來請教了,
我在form1 select tableA後,
會在DBgird裏出現所有的資料,當我點選DBGird裏的某筆資料想做更新,此時需要將此筆資料帶到form2去,藉由檔名(FNAME)為key值,來開啟另一個存有此筆資料圖片的table
我在formshow裏寫的程式如下:
procedure TfrmCheckImg.FormShow(Sender: TObject);
var F: TextFile;
S: string; begin
AssignFile(F, '.\IMG.INI');
Reset(F);
Readln(F, S);
Edit1.Text := S;
CloseFile(F);
query2.Active:=True;
//ImgName := Query2.FieldByName('檔案名稱').AsString ;
DM_Package.qryRBIMG_P.Close;
DM_Package.qryRBIMG_P.SQL.Clear;
DM_Package.qryRBIMG_P.SQL.Add('Select * from RBIMG_P ');
DM_Package.qryRBIMG_P.SQL.Add('where FNAME=:FNAME and CARNO=:CARNO');
DM_Package.qryRBIMG_P.ParamByName('FNAME').AsString:=Query2.FieldByName('檔案名稱').AsString ;
DM_Package.qryRBIMG_P.ParamByName('CARNO').AsString:=Form_GS201_I.DBEdit_CARNO.Text;
DM_Package.qryRBIMG_P.Open;
ImgName := DM_Package.qryRBIMG_P.FieldByName('FNAME').AsString ;
ImgName := Edit1.Text '\' ImgName ;
ImgName1:= ImgName '-01.jpg';
ImgName2:= ImgName '-02.jpg';
ImgName3:= ImgName '-03.jpg'; Image1.Picture.LoadFromFile(ImgName1);
Image2.Picture.LoadFromFile(ImgName2);
Image3.Picture.LoadFromFile(ImgName3); end; 可是form2的FNAME所接的值並不會隨我在fORM1的DBGird變換不同筆資料而有所變化,請問大大這該如何處理?
感激~~~><~~~~~
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 從程式碼部分來看﹐應該是多了一個Query2.Open的動作﹐因為當您把Query2開啟時﹐資料錄指針即指向該資料表的首筆資料﹐而非原來的資料﹐刪除程式碼中如下紅色句試試﹕
procedure TfrmCheckImg.FormShow(Sender: TObject); var F: TextFile; S: string; begin AssignFile(F, '.\IMG.INI'); Reset(F); Readln(F, S); Edit1.Text := S; CloseFile(F); query2.Active:=True; //刪除此句 //ImgName := Query2.FieldByName('檔案名稱').AsString ; DM_Package.qryRBIMG_P.Close; DM_Package.qryRBIMG_P.SQL.Clear; DM_Package.qryRBIMG_P.SQL.Add('Select * from RBIMG_P '); DM_Package.qryRBIMG_P.SQL.Add('where FNAME=:FNAME and CARNO=:CARNO'); DM_Package.qryRBIMG_P.ParamByName('FNAME').AsString:=Query2.FieldByName('檔案名稱').AsString ; DM_Package.qryRBIMG_P.ParamByName('CARNO').AsString:=Form_GS201_I.DBEdit_CARNO.Text; DM_Package.qryRBIMG_P.Open; ImgName := DM_Package.qryRBIMG_P.FieldByName('FNAME').AsString ; ImgName := Edit1.Text + '\'+ImgName ; ImgName1:= ImgName+'-01.jpg'; ImgName2:= ImgName+'-02.jpg'; ImgName3:= ImgName+'-03.jpg'; Image1.Picture.LoadFromFile(ImgName1); Image2.Picture.LoadFromFile(ImgName2); Image3.Picture.LoadFromFile(ImgName3); end;P.S 上貼程式碼時請注意使用文章的縮排功能﹐這樣較利于觀察﹒ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟 |
connection
一般會員 發表:5 回覆:8 積分:2 註冊:2005-07-19 發送簡訊給我 |
感謝版主的解答,
form2的query2是要開啟另一個access(客戶)提供的資料表B,from1則有query1去開另一個資料表A,這兩個資料表相互之間有檔案名稱FNAME做為KEY值,
不過昨天我將KEY值更換另一個,直接去抓FORM1當下所出現的是何車號來當KEY值,就可判斷出第3個TABLE C的圖該開哪個了,謝謝大大的幫忙,
目前最傷腦筋的是刪除跟更新鈕的問題一直沒法處理好,否可請大大幫忙,
按下更新鈕後會先執行
begin
if (qryOVRSPD.FieldByName('FSEQ').AsString <>'') then
begin
ShowMessage('此筆資料已有告發單編號, 不可更新!!!') ;
Exit ;
end ;
StatusBar1.Panels[5].Text := '更新' ;
EditEnabledStatus;
qryOVRSPD.Edit ;
//qryOVRSPD.ApplyUpdates;
qryOVRSPD.FieldByName('PBCODE').AsString := Login_PBCODE ;
qryOVRSPD.FieldByName('OPCODE').AsString := Login_OPCODE ;
qryOVRSPD.FieldByName('OPDATE').AsString := DM_Package.GetSystemDate ;
qryOVRSPD.FieldByName('FSEQ').AsString := '' ;
qryOVRSPD.FieldByName('IDATE').AsString := old_idate ;
qryOVRSPD.FieldByName('ITIME').AsString := old_itime ;
qryOVRSPD.FieldByName('CDKIND').AsString := old_cdkind ;
qryOVRSPD.FieldByName('SPDLMT').AsString := old_spdlmt ;
qryOVRSPD.FieldByName('PCODE').AsString := old_pcode ;
qryOVRSPD.FieldByName('PCODENAME').AsString := old_pcodename ;
qryOVRSPD.FieldByName('IRCODE').AsString := old_ircode ;
qryOVRSPD.FieldByName('IRNAME').AsString := old_irname ;
qryOVRSPD.FieldByName('RULEF1').AsString := old_rulef1 ;
qryOVRSPD.FieldByName('RULEG1').AsString := old_ruleg1 ;
qryOVRSPD.FieldByName('RULEG1NAME').AsString := old_ruleg1name ;
qryOVRSPD.FieldByName('RULEF2').AsString := old_rulef2 ;
qryOVRSPD.FieldByName('RULEG2').AsString := old_ruleg2 ;
qryOVRSPD.FieldByName('RULEG2NAME').AsString := old_ruleg2name ;
qryOVRSPD.FieldByName('PROJCODE').AsString := old_projcode ;
qryOVRSPD.FieldByName('RULEI').AsString := old_rulei ;
qryOVRSPD.FieldByName('RULEINAME').AsString := old_ruleiname ;
DBEdit_CARNO.SetFocus ;
BitBtn3.Enabled:=True ; //查詢影像檔 end; 這兒是讓欄位秀出前一筆資料,因為連續輸入單子,有些欄位可能重覆,
該更新的欄位更改值後,在確定的鈕裏程式如下
DM_Package.DB_Package.StartTransaction ;
systemdate := DM_Package.GetSystemDate ; //取得Database日期
try
//qryOVRSPD.ApplyUpdates ;
//update OPER:KEYINSEQ_C
if (StatusBar1.Panels[5].Text = '新增') then
begin
DM_Package.qryRunSQL.Close ;
DM_Package.qryRunSQL.SQL.Clear ;
DM_Package.qryRunSQL.SQL.Add('update OPER set KEYINSEQ_C=:KEYINSEQ') ;
DM_Package.qryRunSQL.SQL.Add('where PBCODE=:PBCODE and OPCODE=:OPCODE') ;
DM_Package.qryRunSQL.ParamByName('KEYINSEQ').AsInteger := get_keyinseq;
DM_Package.qryRunSQL.ParamByName('PBCODE').AsString := Login_PBCODE ;
DM_Package.qryRunSQL.ParamByName('OPCODE').AsString := Login_OPCODE ;
DM_Package.qryRunSQL.Prepare ;
DM_Package.qryRunSQL.ExecSQL ;
DM_Package.qryRunSQL.Close;
DM_Package.qryRunSQL.SQL.Clear;
DM_Package.qryRunSQL.SQL.Add('insert into OVRSPD');
DM_Package.qryRunSQL.SQL.Add('(KEYINSEQ, PBCODE, PCODE,');
DM_Package.qryRunSQL.SQL.Add('IDATE, ITIME, CARNO, CDKIND, SPDLMT, SPD,IRCODE,');
DM_Package.qryRunSQL.SQL.Add('IRNAME, RULEF1, RULEF2, FNAME,RULEG1, RULEG2, RULEG1NAME,');
DM_Package.qryRunSQL.SQL.Add('RULEG2NAME, RULEI,PROJCODE, OPCODE, OPDATE, FSEQ,');
DM_Package.qryRunSQL.SQL.Add('RBDATE, ARVDATE, Q_SPRVSNNO,Q_OIDNO,');
DM_Package.qryRunSQL.SQL.Add('Q_ONAME, Q_OADDR, Q_AOWNERNO, Q_CARKIND, Q_COLOR, Q_STATUS)');
DM_Package.qryRunSQL.SQL.Add(' values (:KEYINSEQ, :PBCODE, :PCODE, :IDATE, :ITIME, :CARNO,');
DM_Package.qryRunSQL.SQL.Add(':CDKIND, :SPDLMT,:SPD, :IRCODE, :IRNAME, :RULEF1,');
DM_Package.qryRunSQL.SQL.Add(':RULEF2, :FNAME, :RULEG1, :RULEG2,:RULEG1NAME,');
DM_Package.qryRunSQL.SQL.Add(':RULEG2NAME, :RULEI, :PROJCODE, :OPCODE,');
DM_Package.qryRunSQL.SQL.Add(':OPDATE, :FSEQ, :RBDATE,:ARVDATE,');
DM_Package.qryRunSQL.SQL.Add(':Q_SPRVSNNO, :Q_OIDNO, :Q_ONAME, :Q_OADDR, :Q_AOWNERNO,');
DM_Package.qryRunSQL.SQL.Add(':Q_CARKIND,:Q_COLOR, :Q_STATUS)');
DM_Package.qryRunSQL.ParamByName('KEYINSEQ').AsInteger := get_keyinseq ;
DM_Package.qryRunSQL.ParamByName('PBCODE').AsString:= Login_PBCODE ;
DM_Package.qryRunSQL.ParamByName('PCODE').AsString:= DBEdit_PCODE.Text ;
DM_Package.qryRunSQL.ParamByName('IDATE').AsString:= DBEdit_IDATE.Text ;
DM_Package.qryRunSQL.ParamByName('ITIME').AsString:= DBEdit_ITIME.Text ;
DM_Package.qryRunSQL.ParamByName('CARNO').AsString:= DBEdit_CARNO.Text ;
DM_Package.qryRunSQL.ParamByName('CDKIND').AsString:= DBEdit_CDKIND.Text ;
DM_Package.qryRunSQL.ParamByName('SPDLMT').AsInteger:= StrToInt(DBEdit_SPDLMT.Text);
DM_Package.qryRunSQL.ParamByName('SPD').AsInteger:= StrToInt(DBEdit_SPD.Text) ;
DM_Package.qryRunSQL.ParamByName('IRCODE').AsString:= DBEdit_IRCODE.Text ;
DM_Package.qryRunSQL.ParamByName('IRNAME').AsString:= DBEdit_IRNAME.Text ;
DM_Package.qryRunSQL.ParamByName('RULEF1').AsString:= DBEdit_RULEF1.Text ;
DM_Package.qryRunSQL.ParamByName('RULEF2').AsString:= DBEdit_RULEF2.Text ;
DM_Package.qryRunSQL.ParamByName('FNAME').AsString:= FrmImage.ImgName1 ;
DM_Package.qryRunSQL.ParamByName('RULEG1').AsString:= DBEdit_RULEG1.Text ;
DM_Package.qryRunSQL.ParamByName('RULEG2').AsString:= DBEdit_RULEG2.Text ;
DM_Package.qryRunSQL.ParamByName('RULEG1NAME').AsString:= DBEdit_RULEG1NAME.Text ;
DM_Package.qryRunSQL.ParamByName('RULEG2NAME').AsString:= DBEdit_RULEG2NAME.Text ;
DM_Package.qryRunSQL.ParamByName('RULEI').AsString:= DBEdit_RULEI.Text ;
DM_Package.qryRunSQL.ParamByName('PROJCODE').AsString:= DBEdit_PROJCODE.Text ;
DM_Package.qryRunSQL.ParamByName('OPCODE').AsString:= Login_OPCODE ;
DM_Package.qryRunSQL.ParamByName('OPDATE').AsString:= systemdate ;
DM_Package.qryRunSQL.ParamByName('FSEQ').AsString:= '';
DM_Package.qryRunSQL.ParamByName('RBDATE').AsString := '';
DM_Package.qryRunSQL.ParamByName('ARVDATE').AsString:= '';
DM_Package.qryRunSQL.ParamByName('Q_SPRVSNNO').AsString:='';
DM_Package.qryRunSQL.ParamByName('Q_OIDNO').AsString:='';
DM_Package.qryRunSQL.ParamByName('Q_ONAME').AsString:='';
DM_Package.qryRunSQL.ParamByName('Q_OADDR').AsString:='';
DM_Package.qryRunSQL.ParamByName('Q_AOWNERNO').AsString:='';
DM_Package.qryRunSQL.ParamByName('Q_CARKIND').AsString:='';
DM_Package.qryRunSQL.ParamByName('Q_COLOR').AsString:= '' ;
DM_Package.qryRunSQL.ParamByName('Q_STATUS').AsString:= '0';
DM_Package.qryRunSQL.Prepare;
DM_Package.qryRunSQL.ExecSQL;
end ;
if (StatusBar1.Panels[5].Text = '更新') then
begin
DM_Package.qryRunSQL.Close;
DM_Package.qryRunSQL.SQL.Clear;
DM_Package.qryRunSQL.SQL.Add('update OVRSPD');
DM_Package.qryRunSQL.SQL.Add('set KEYINSEQ = :KEYINSEQ, PBCODE = :PBCODE,');
DM_Package.qryRunSQL.SQL.Add('PCODE = :PCODE,IDATE = :IDATE,ITIME = :ITIME,');
DM_Package.qryRunSQL.SQL.Add('CARNO = :CARNO,CDKIND = :CDKIND,SPDLMT = :SPDLMT,');
DM_Package.qryRunSQL.SQL.Add('SPD = :SPD,IRCODE = :IRCODE,IRNAME = :IRNAME,RULEF1 = :RULEF1,');
DM_Package.qryRunSQL.SQL.Add('RULEF2 = :RULEF2,RULEG1 = :RULEG1,RULEG2 = :RULEG2,');
DM_Package.qryRunSQL.SQL.Add('FNAME=:FNAME,RULEG1NAME = :RULEG1NAME,RULEG2NAME = :RULEG2NAME,');
DM_Package.qryRunSQL.SQL.Add('RULEI = :RULEI,PROJCODE = :PROJCODE,OPCODE = :OPCODE,');
DM_Package.qryRunSQL.SQL.Add('OPDATE = :OPDATE,FSEQ = :FSEQ,RBDATE = :RBDATE,');
DM_Package.qryRunSQL.SQL.Add('ARVDATE = :ARVDATE,Q_SPRVSNNO = :Q_SPRVSNNO,Q_OIDNO = :Q_OIDNO,');
DM_Package.qryRunSQL.SQL.Add('Q_ONAME = :Q_ONAME,Q_OADDR = :Q_OADDR,Q_AOWNERNO = :Q_AOWNERNO,');
DM_Package.qryRunSQL.SQL.Add('Q_CARKIND = :Q_CARKIND,Q_COLOR = :Q_COLOR,Q_STATUS = :Q_STATUS');
//DM_Package.qryRunSQL.SQL.Add('where CARNO =: CARNO');
DM_Package.qryRunSQL.SQL.Add('where KEYINSEQ =: KEYINSEQ');
DM_Package.qryRunSQL.SQL.Add('AND PBCODE =: PBCODE');
DM_Package.qryRunSQL.SQL.Add('AND OPCODE =: OPCODE');
//DM_Package.qryRunSQL.ParamByName('CARNO').AsString:= DBEdit_CARNO.Text;
DM_Package.qryRunSQL.ParamByName('KEYINSEQ').AsInteger:= qryOVRSPD.FieldByName('KEYINSEQ').AsInteger;
DM_Package.qryRunSQL.ParamByName('PBCODE').AsString:= Login_PBCODE;
DM_Package.qryRunSQL.ParamByName('OPCODE').AsString:= Login_OPCODE;
DM_Package.qryRunSQL.Prepare;
DM_Package.qryRunSQL.ExecSQL;
end;
old_idate := qryOVRSPD.FieldByName('IDATE').ASString ;
old_itime := qryOVRSPD.FieldByName('ITIME').ASString ;
old_cdkind := qryOVRSPD.FieldByName('CDKIND').ASString ;
old_spdlmt := qryOVRSPD.FieldByName('SPDLMT').ASString ;
old_pcode := qryOVRSPD.FieldByName('PCODE').ASString ;
old_pcodename := qryOVRSPD.FieldByName('PCODENAME').ASString ;
old_ircode := qryOVRSPD.FieldByName('IRCODe').ASString ;
old_irname := qryOVRSPD.FieldByName('IRNAME').ASString ;
old_rulef1 := qryOVRSPD.FieldByName('RULEF1').ASString ;
old_ruleg1 := qryOVRSPD.FieldByName('RULEG1').ASString ;
old_ruleg1name := qryOVRSPD.FieldByName('RULEG1NAME').ASString ;
old_rulef2 := qryOVRSPD.FieldByName('RULEF2').ASString ;
old_ruleg2 := qryOVRSPD.FieldByName('RULEG2').ASString ;
old_ruleg2name := qryOVRSPD.FieldByName('RULEG2NAME').ASString ;
old_projcode := qryOVRSPD.FieldByName('PROJCODE').ASString ;
old_rulei := qryOVRSPD.FieldByName('RULEI').ASString ;
old_ruleiname := qryOVRSPD.FieldByName('RULEINAME').ASString ; except
ShowMessage('OVRSPD更新檔案失敗, 請通知系統管理人員!!') ;
DM_Package.DB_Package.Rollback ;
Exit ;
end ;
insert方面沒問題,但是update方面key值keyinseq或carno都接不到值,在form show有qryOVRSPD, open出資料來,到這兒為什麼接不到值呢,可麻煩大大幫忙
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |