掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
開いているTIBQueryがEDatabaseErrorとなる原因は? (ID:46480)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Form1で受付ボタンを押すとそのフォームで表示されているIDの人をデータモジュールで定義されている待ちリストに追加するという処理があります。 追加する際に色々なif文で登録するデータが正しいかどうかをチェックしていて、そのチェックの一つにShowMessageDlgを使用して「はい」or「いいえ」を押す処理があるのですが、これを押した時に同じIDで同じif文の通り方をしているのに開いているTIBQueryがEDatabaseErrorとなってしまうことがあります。 何が原因と考えられるでしょうか、具体的には以下の通りです。 TForm1で受付ボタンを押すと >DM4.AppendWaitList(nedCode.AsInteger, DM4.InputDate); //nedCode=対象ID,InputDate=受付時の時間 が走ります。 AppendWaitListはデータモジュールのDataMod4.pasで定義されており、内容としては 1.引数のIDをibquePersonDataのParamに入れ、その値を元にibquePersonData:TIBQuery を開く(ibquePersonData.Open) 2.ibquePersonDataの様々なFieldの値を定数と比較し、if文から外れたらbError:BooleanをTrueにする 3.bError=FalseならibcdsWaitList:TIBClientDataSetにデータを追加する を行っています。 デバッグ実行をする際、ibquePersonDataのSQL文でselectしている一つのフィールドを ibquePersonData.FieldByName('SYUBETU').AsInteger…① を監視してデバッグ実行を行うと 1.の時点で①=1と値が入っています。 2.の段階でも値は入ったままですが >if ShowMessageDlg('項目1を確認してください。'#13'入力を続けますか?', mtConfirmation) <> mrYes th>en bError := True; このif文でメッセージダイアログを表示させ、「はい」「いいえ」どちらかをクリックした時、監視式の値が Delphiの例外:EDatabaseError($3BCF91D) //()内の値は毎回変わっています となることがあります。(他のibquePersonData.FieldByName('その他色々')も同様に読み取れなくなっています。) その数行後に >if ibquePersonData.FieldByName('SYUBETU').AsInteger = 2 then と比較している部分があるためここで 'ibquePersonData:項目'SYUBETU'が見つかりません' とエラーになってしまいます。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.