全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:848
推到 Plurk!
推到 Facebook!

Query接值的問題

尚未結案
connection
一般會員


發表:5
回覆:8
積分:2
註冊:2005-07-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-24 16:47:41 IP:61.218.xxx.xxx 未訂閱
各位大大, 不才的小妹又來請教了, 我在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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-24 17:08:33 IP:202.62.xxx.xxx 未訂閱
您好﹗    從程式碼部分來看﹐應該是多了一個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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-25 13:45:43 IP:61.218.xxx.xxx 未訂閱
感謝版主的解答, 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出資料來,到這兒為什麼接不到值呢,可麻煩大大幫忙
系統時間:2024-06-25 13:55:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!