掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ちょっとややこしい?SQL (ID:33071)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
返答が遅れてすみません。 with query1 do begin sql.clear; sql.add('select * from tbl_a '); open; for i := 0 to FieldCount-1 do begin Listbox1.items.add(Fields[i].FieldName); end; end; そちらの環境で、この手順でフィールド名が取得できますか? よければ、たとえば以下のやり方が考えられます。 const iStartField = 1; var tbl_aFNArray, tbl_bFNArray : array of string; tbl_aFC, tbl_bFC: Integer; SQLText, wkaText, wkbText : string; //tbl_aのフィールド名を取得 with query1 do begin sql.clear; sql.add('select * from tbl_a '); open; tbl_aFC := FieldCount-1; SetLength(tbl_aFNArray, tbl_aFC); for i := 0 to tbl_aFC do begin tbl_aFNArray[i] := Fields[i].FieldName; end; close; end; //tbl_bのフィールド名を取得 with query1 do begin sql.clear; sql.add('select * from tbl_b '); open; tbl_bFC := FieldCount-1; SetLength(tbl_bFNArray, tbl_bFC); for i := 0 to tbl_bFC do begin tbl_bFNArray[i] := Fields[i].FieldName; end; close; end; //sql文を動的作成 SQLText := ''; for i := iStartField to tbl_aFC do //ゼロからじゃない begin wkaText := 'tbl_a.' + tbl_aFNArray[i]; for x := iStartField to tbl_bFC do //ゼロからじゃない begin wkbText ;= 'tbl_b.' + tbl_bFNArray[x]; SQLText := SQLText + wkaText + '<>' + wkbText ; if (i <> tbl_aFC) or (x <> tbl_bFC) then begin SQLText := SQLText + 'and';//最後の最後以外は’AND’を付ける。 end; end; end; Memo1.Text := SQLText;//確認 そのままコピペで動くコードを提示したかったのですが、Delphi環境がないので、 タイプミス等あったらすみません。 ※ ループの開始(ゼロか1か)と終了(FieldCountかFieldCount-1か)が正しく ないかもしれません。お仕事だと思うので、十分な確認をお願いします。 この投稿がお役に立てば幸いです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.