Q115:エクセルデータのSQL検索で開始日時>0が使えない。指定した文字をコンボボックスにセットしたい。
Q115-1:
サブルーチン 123 (終了時間のないデータは?)のところで、
select * from "データ$" where オーダー番号='BANGOU' and 担当者コード='担当者コードA' and 工程コード='工程コードA' and 開始日時>0 and 終了日時 is NULL
とするとエラーになります。
それと、コンボボックスのところで、読み込んだ「機械B」の文字をコンボボックスに表示セットしたいのですが、方法についてご指導お願いします。
A115-1:
こちらで簡単にエクセルデータを作り「Where 開始日時>0」を含むSelect文を実行してみましたが、エラーは発生しませんでした。
SQL文以外にもデータ型や列名などの要因も考えられます。
よろしければ、
・どんなエラーメッセージが発生するか
・エクセル側の「セルの書式設定」はどうなっているか
お教え下さい。
コンボボックスに予め含まれているデータを選択状態にする(例:データ[AA,BB,CC]がコンボボックスに入っている。「BB」を指定して選択状態にする)
場合には、お使いになっているメソッド「指定項目を選択する(Object)」で結構です。
新規にデータ「DD」を[コンボボックス]に追加したいという場合には、「指定された位置へ項目を追加する(String,int)」を使用します。
Q115-2:
SQLエラー内容は、エクセルファイルの通り(抽出条件でデータ型が一致しません。)です。データとしてエクセルファイルをお送り致します。開始日時 終了日時は、標準の設定でしております。メソッド「指定項目を選択する(Object)」で設定しましたが、うまく文字がセットされませんでした。
A115-2:
エクセルの「抽出条件でデータ型が一致しません」は、やはりデータ型(エクセルでのセル書式)に起因する問題かと思われます。
「開始日時」・「終了日時」のセルは日付が入っているので、自動的に日付書式になってしまうことも多いかと思います。「標準」設定になっているのは何か理由があるでしょうか。
特に差支えがないようでしたら、セルの書式を「日付」にして、一度お試し下さい。「日付」書式に変更するに当たって何か問題があるようでしたら、エクセルのバージョンと併せてお知らせ下さい。
「指定項目を選択する(Object)」の場合は、前回も書いたようにコンボボックスに予め含まれているデータを選択状態にする場合に使用するので、コンボボックスに入っていない項目を指定しても変化はしません。
お送り頂いたファイルの内容では、[テーブル(ID:24)]の一列のデータが[コンボボックス]に設定されていますが、このデータと「指定項目を選択する(Object)」の引数に設定する文字列は一致しているでしょうか。
例: [AA,BB,CC]がコンボボックスに入っている。
「BB」を指定して選択状態にする
「DD」を指定しても項目リストには無いので選択状態は変化しない
上記ご確認頂き、問題が改善されないようでしたら、再度ご連絡頂ければ幸いです。
Q115-3:
エクセルシート上の日付を設定したのですが。やはり 開始日時の部分はエラーが出ます。今回は、テストとしてエクセルを使用していますので今回はあきらめます。MySQLでは出ないみたいです。どうしても外せないのがコンボボックスで、[AA,BB,CC]がコンボボックスに入っている場合で「BB」を指定して選択状態にする、としたいのですが、お忙しい中ご指導宜しくお願い致します。
A115-3:
SQL文のWhere句 「開始日時>0」ですが、「開始日時 is not NULL」ではいけないでしょうか?目的に合っているかどうか不安ですが、「開始日時 >'0'」も通るようです。
[コンボボックス(ID:29 )]のデータは、お送り頂いた時点では[テーブル(ID:24)]のデータが入っています。
これは、お送り頂いたエクセルファイルのシート「データ」内の「機械名」列のデータと一部合致しないように思います。
特に「終了日時」がNULLになっているデータの機械名は『機械B』で[テーブル(ID:24)]内のデータには含まれていません。
これが原因かと推測しているのですが、いかがでしょうか。
備考:「コンボボックス」の「Q&A17」にも掲載。
ご連絡:
やはり 開始日時 >'0'のシングルコーテーションの問題でした。それを直したらうまく機能しました。それと、機械Bが間違っていたみたいで、リスト内の項目にしたらうまく機能致しました。