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

DBGrid第一次進入時,第一個儲存格無法編輯

尚未結案
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-19 09:26:59 IP:61.221.xxx.xxx 未訂閱
請教各位前輩: 小弟在DBGrid上做編輯,第一次進入時,第一個儲存格無法編輯,然而,移至第二格,在移回第一格,就可以了。請問有前輩遇過這中狀況ㄇ? ~~應無所住而生其心~~
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-19 09:44:02 IP:211.74.xxx.xxx 未訂閱
Hi terrychen 大大: 您試試 1. query.requestLive is true?? 2. datasource.autoedit is true??    ~悠遊法國號~ 發表人 - yachanga 於 2004/04/19 09:45:09
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-19 10:09:49 IP:61.221.xxx.xxx 未訂閱
yachanga感謝您的回應 小弟用的是ADO DATASET datasource.autoedit is true?? 已經TRUE 它不是完全不能編輯,只有第一格不能,移到其他地方在移回來就可以了,只是不能要USERS這樣做 ~~應無所住而生其心~~
aj0724
一般會員


發表:11
回覆:41
積分:10
註冊:2003-04-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-21 17:39:06 IP:203.70.xxx.xxx 未訂閱
會不會跟大大寫的程式碼有關? 可以提供給大家參考看看嗎?
liorex
初階會員


發表:19
回覆:60
積分:32
註冊:2002-08-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-21 20:27:45 IP:61.64.xxx.xxx 未訂閱
terrychen大大 要不要試試在進入(OnEnter) 時將 DataSet的Stat進入Edit的狀態看看 ex:DataSet.Edit ---------------------- 一切有為法 如夢幻泡影 如露亦如電 應做如是觀 ----------------------
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-22 09:35:39 IP:61.221.xxx.xxx 未訂閱
感謝各位回應  
procedure TEditForm.btinsertClick(Sender: TObject);
var
  SA: array[0..256] of Char;
  bl:boolean;
begin
  if (Length(Edit2.Text) = 0) then
    begin
      exit;
    end;      if (Length(Edit2.Text) = 9) then
    begin
      With DM.Query2 Do
        begin
          Close;
          SQL.Clear;
          SQL.Add('select * from Student where X_NO1=:X_NO1');
          Parameters.ParamByName('X_NO1').Value:= Edit2.Text;
          Open;
        end;
      if (DM.Query2.RecordCount > 0) then
        begin
          Application.MessageBox('資料庫已有該學生資料 !',' 錯 誤',MB_ICONERROR);
          DM.DataSet1.Locate('X_NO1', Edit2.Text, [loCaseInsensitive]);
          edit2.SetFocus;
          exit;
        end;          With DM.Query3 Do
        begin
          Close;
          SQL.Clear;
          SQL.Add('select * from data where x_no1=:x_no1');
          Parameters.ParamByName('x_no1').Value:= Edit2.Text;
          Open;
        end;          if (DM.Query3.RecordCount = 1) then
        begin
          StrPCopy(SA, '考生姓名為 " '   Trim(DM.Query3.FieldByName('s_name').AsString)   ' " ,身分證號為 " '   DM.Query3.FieldByName('id').AsString   ' " ,' #13 '出生日期為 " '   DM.Query3.FieldByName('b_year').AsString   '/'    DM.Query3.FieldByName('b_month').AsString   '/'    DM.Query3.FieldByName('b_day').AsString   ' ",是否正確?');
          if Application.MessageBox(SA, '資料確認', MB_YesNo   MB_DEFBUTTON1   MB_IconQuestion   MB_SystemModal) = IDYes then
            begin
              With DM.Query2 Do
                begin
                  Append;
                  FieldByName('EX_NO').Value:= DM.Query3.FieldByName('ex_no').AsString;
                  FieldByName('X_NO1').Value:= DM.Query3.FieldByName('x_no1').AsString;
                  FieldByName('GROUP_NO').Value:= MainForm.SCode;
                  FieldByName('s_serial').Value:= Copy(IntToStr(strtoint(edit1.Text) 100001), 2, 5);
                  FieldByName('s_class').Value:= '00';
                  FieldByName('s_number').Value:= '00';
                  FieldByName('s_name').Value:= Trim(DM.Query3.FieldByName('s_name').AsString);
                  FieldByName('id').Value:= DM.Query3.FieldByName('id').AsString;
                  FieldByName('s_sex').Value:= DM.Query3.FieldByName('s_sex').AsString;
                  FieldByName('b_year').Value:= DM.Query3.FieldByName('b_year').AsString;
                  FieldByName('b_month').Value:= DM.Query3.FieldByName('b_month').AsString;
                  FieldByName('b_day').Value:= DM.Query3.FieldByName('b_day').AsString;
                  FieldByName('r_schno').Value:= DM.Query3.FieldByName('r_schno').AsString;
                  FieldByName('g_year').Value:= DM.Query3.FieldByName('g_year').AsString;
                  FieldByName('g_state').Value:= DM.Query3.FieldByName('g_state').AsString;
                  FieldByName('s_kind1').Value:= DM.Query3.FieldByName('s_kind1').AsString;
                  FieldByName('s_kind2').Value:= DM.Query3.FieldByName('s_kind2').AsString;
                  FieldByName('parent').Value:= DM.Query3.FieldByName('parent').AsString;
                  FieldByName('remark_1').Value:= DM.Query3.FieldByName('remark_1').AsString;
                  FieldByName('tel').Value:= DM.Query3.FieldByName('tel').AsString;
                  FieldByName('post_no').Value:= DM.Query3.FieldByName('post_no').AsString;
                  FieldByName('address').Value:= DM.Query3.FieldByName('address').AsString;
                  FieldByName('PR1').Value:= DM.Query3.FieldByName('SumPr').AsString;
                  FieldByName('chi1').Value:= DM.Query3.FieldByName('ChineseReScore').AsString;
                  FieldByName('eng1').Value:= DM.Query3.FieldByName('EnglishReScore').AsString;
                  FieldByName('mat1').Value:= DM.Query3.FieldByName('MathReScore').AsString;
                  FieldByName('soc1').Value:= DM.Query3.FieldByName('SocialReScore').AsString;
                  FieldByName('nat1').Value:= DM.Query3.FieldByName('NatureReScore').AsString;
                  FieldByName('total1').Value:= DM.Query3.FieldByName('SumScore').AsString;
                  FieldByName('ODA').Value:= '0';
                  FieldByName('WISH1').Value:= '';
                  FieldByName('WISH2').Value:= '';
                  FieldByName('WISH3').Value:= '0';
                  FieldByName('WISH4').Value:= '';
                  FieldByName('ERROR').Value:= '';
                  Post;
                  FunctionInitial;
                  SelectData;
                  edit2.SetFocus;
                end;   // With DM.Query2 Do
            end;
        end   // if (DM.Query3.RecordCount = 1) then
      else
        begin
          messagebeep(1);
          if Application.MessageBox('查無此學生資料 , 是否手動輸入 !', ' 錯誤', MB_YesNo   MB_DEFBUTTON1   MB_IconQuestion   MB_SystemModal) = IDYes then
          begin                GroupBox3.Enabled :=true;
            DM.DataSet1.Insert;
            DBEdit1.SetFocus;游標有在DBEdit1的第一格,但是在OnEnter下斷點卻攔截不到 
            DBGrid1.ReadOnly := false;         
            With DM.DataSet1 Do
            begin
              FieldByName('x_no1').Value:= Edit2.Text;
              FieldByName('GROUP_NO').Value:= MainForm.SCode;
              FieldByName('s_SERIAL').Value:= Copy(IntToStr(StrToInt(Edit1.Text) 100001), 2, 5);
              FieldByName('G_YEAR').Value:= '93';
              FieldByName('G_STATE').Value:= '1';
              FieldByName('s_sex').Value:= '1';
              FieldByName('income').Value:= '0';
              FieldByName('pay').Value:= '0';
            end;
          end;
        end;
      Edit2.Text:= '';
    end;
end; 
~~應無所住而生其心~~
James
高階會員


發表:10
回覆:290
積分:220
註冊:2002-07-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-22 10:29:37 IP:61.218.xxx.xxx 未訂閱
或許試試看 , 把 Focus 和 Insert 的處理對調看看 , 類似以下的方式 DBEdit1.SetFocus; DM.DataSet1.Insert;
aj0724
一般會員


發表:11
回覆:41
積分:10
註冊:2003-04-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-22 11:06:09 IP:211.23.xxx.xxx 未訂閱
恩..同意James大大的想法... 我也認為應該是把INSERT放到 With DM.DataSet1 Do  前面比較好...                DBEdit1.SetFocus;             DBGrid1.ReadOnly := false;                DM.DataSet1.Insert; With DM.DataSet1 Do begin FieldByName('x_no1').Value:= Edit2.Text; FieldByName('GROUP_NO').Value:= MainForm.SCode; FieldByName('s_SERIAL').Value:= Copy(IntToStr(StrToInt(Edit1.Text) 100001), 2, 5); FieldByName('G_YEAR').Value:= '93'; FieldByName('G_STATE').Value:= '1'; FieldByName('s_sex').Value:= '1'; FieldByName('income').Value:= '0'; FieldByName('pay').Value:= '0'; end;
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-22 11:45:05 IP:61.221.xxx.xxx 未訂閱
引言: 或許試試看 , 把 Focus 和 Insert 的處理對調看看 , 類似以下的方式 DBEdit1.SetFocus; DM.DataSet1.Insert;
報告兩位大大 小弟試過了,問題還是存在 ~~應無所住而生其心~~
aj0724
一般會員


發表:11
回覆:41
積分:10
註冊:2003-04-18

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-22 14:27:10 IP:61.59.xxx.xxx 未訂閱
報告terrychen大大: 雖然我的能力有限,但是我真的想幫忙,可是怎麼試都沒錯,可能是無法做到完全與terrychen大大一樣的環境,想來想去,只有懷疑一點,就是會不會terrychen大大忘了更新ADO的修正檔,雖然這種懷疑有點侮辱到大大的能力,可是在下我就是有這樣的經驗發生過,經過前輩的提醒才恍然大悟! 如果不是這個問題的話,我想唯有提供部分程式碼給其他大大測試,也許比較容易找出BUG! 謝謝!
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-04-22 14:51:02 IP:61.221.xxx.xxx 未訂閱
引言: 報告terrychen大大: 雖然我的能力有限,但是我真的想幫忙,可是怎麼試都沒錯,可能是無法做到完全與terrychen大大一樣的環境,想來想去,只有懷疑一點,就是會不會terrychen大大忘了更新ADO的修正檔,雖然這種懷疑有點侮辱到大大的能力,可是在下我就是有這樣的經驗發生過,經過前輩的提醒才恍然大悟! 如果不是這個問題的話,我想唯有提供部分程式碼給其他大大測試,也許比較容易找出BUG! 謝謝!
aj0724感謝您的回應及幫忙 小弟自己沒注意 其實您的答案正確 GroupBox3.Enabled :=true; DBGrid1.ReadOnly := false; DM.DataSet1.Insert; 小弟一直想把Focus放到insert前面,而忘了將DBGrid1.ReadOnly := false; 放到insert前面 ~~應無所住而生其心~~ 發表人 - Terrychen 於 2004/04/22 15:25:39
James
高階會員


發表:10
回覆:290
積分:220
註冊:2002-07-25

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-04-22 15:19:24 IP:61.218.xxx.xxx 未訂閱
類似您的程式 , 我用 ADODataset 連 MSSLQ 中 Pubs 資料庫下的 employees 的 table , 怎樣測試都沒有問題 ,當呼叫 setFocus 的時候也會觸發 onEnter 的事件 ,或許你先試試看把整個程式簡化一下 ,也許比較容易抓出問題
系統時間:2024-05-17 18:47:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!