トップページ > プログラム > 2016年02月20日 > Rukm7JjZ

書き込み順位&時間帯一覧

23 位/236 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000001000000000000203



使用した名前一覧書き込んだスレッド一覧
682
くだすれDelphi(超初心者用)その56

書き込みレス一覧

くだすれDelphi(超初心者用)その56
695 :682[sage]:2016/02/20(土) 09:10:45.00 ID:Rukm7JjZ
スレチかもですがSQLiteでの検索について教えて下さい。
SQLite3SDWという郵便番号を検索するサンプルプログラムを参考に勉強して
います。
例えば「北海道札幌市中央区」内の郵便番号を検索するために
「北海道札幌市中央」を検索すると検索結果が出てくるのですが、
「北海道札幌市中央区」を検索すると検索結果が0になってしまいます。
サンプルに付いていたexeファイルでは検索は正常に行われるみたいです。

私はXE2を使っているのですが、サンプルはDel7で作成されたと言う事が
原因なのか、検索文字列を作成するプログラムが以下のようになっているのですが、
procedure TForm1.LabeledEdit1Change(Sender: TObject);
begin
//WHERE区以降を引数にクエリする
Query('[ADDRESS] LIKE ' + AnsiQuotedStr(
'%' + UTF8Encode(LabeledEdit1.Text) + '%', ''''));
end;
文字化けするので
//WHERE区以降を引数にクエリする
Query('[ADDRESS] LIKE ' + '"%' + LabeledEdit1.Text + '%"');
と変更しました。

わかりにくい文章ですが、よろしくお願いします。
くだすれDelphi(超初心者用)その56
699 :682[sage]:2016/02/20(土) 22:02:59.83 ID:Rukm7JjZ
682です。
>>696,697,698さん、レスありがとうございます。
一応、検出する部分のプログラムを載せます。

郵便番号のデータファイルはCVS形式になっていて、データベースに読む込む時は各行の
郵便番号と住所の部分をそれぞれUTF8Encodeで文字コードを変換してからデータベースに
登録しています。

サンプルの作者さんはDel7で作成していて、サンプルに付属しているexeファイルの実行では
きちんと検出しているようなので、SQLiteの文字コードとXE2で扱っている文字コードの違い
かとも思ったのですが、私にその辺の知識が乏しいのでよく分からない現状です。
後、サンプルに元々付いていたSQLite3.dllとかSQLite3.pasとかは新しいものに
入れ替えてもやってみました。

検出する部分を貼り付けたら改行が多いと言われたので、次のレスに貼り付けます。
くだすれDelphi(超初心者用)その56
700 :682[sage]:2016/02/20(土) 22:04:05.15 ID:Rukm7JjZ
データを検出する部分のプログラムです。

procedure TForm1.Query(Filter: string);
var
SQLIteTable: TSQLIteTable; p: PPostRec; sql: string; StartTime: Cardinal;
begin
sql := 'SELECT * FROM POST_TABLE';
//引数Filterが空文字以外の場合はWHERE句を追加
if Filter <> '' then sql := sql + ' WHERE ' + Filter;
SQLIteTable := SQLiteDB.GetTable(sql);
with SQLIteTable do begin
MoveFirst;
while not EOF do begin
New(p);

//カラム名からデータを取得(どちらの方法でも可)
p^.PostCode := FieldByName['POST_CODE'];
p^.Address := FieldByName['ADDRESS'];

VirtualList.Add(p);
Next;
end;
end;
SQLIteTable.Free;
Memo1.Lines.Add('クエリ時間 = ' +
IntToStr(GetTickCount - StartTime) + 'ms');
ListView1.Refresh;
end;

よろしくお願いします。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。