カッコの外し方について教えてください

投稿者:うなぎいぬ 投稿日:2018/01/26(Fri) 21:39:17 No.1972

郵便番号をSQLiteにセットして読み込んだ場合、得られたデータに{[]}が付いてきます。
そのカッコを文字列置換等を使用して外そうかと思ったのですが、うまく外すことが出来ません。
どのような方法で外せばよいのでしょうか?

------------------------------ ここから
//
// 郵便番号SQLで検索・画面
//
// プロデルからSQLiteデータベースを操作する例 //
//SQLiteを利用するには、System.Data.SQLite.dllが必要です

/*  登録したテーブルの中身を確認するサンプルプログラムなので↓に書いておきます。
     SQLiteで「CREATE TABLE yubin (
          ycode1 TEXT,
          ken TEXT,
          city TEXT,
          machi TEXT);」を実行する
*/     

「Produire.Data.Base.dll」を利用する
「Produire.Data.SQLite.dll」を利用する
「Produire.Data.Grid.dll」を利用する

SQLiteというSQLiteデータベースを作る
SQLiteのデータソースを、「test01.db」に変える
ws01=「」 // 検索文字列1
ws02=「」 // 検索文字列2

メイン画面を表示する

待機する
  
メイン画面とは
     ウィンドウを継承する
     はじめの手順
          初期化する
          ーー貼り付けた部品に対する操作をここに書きます
          //郵便表部品1のデータ表をデータに変える
     終わり
  初期化する手順
  ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
  この内部領域大きさを{658,576}に変える
  この内容を「郵便番号検索」に変える
  ラベル1というラベルを作る
    その位置と大きさを{17,83,53,12}に変える
    その内容を「郵便番号」に変える
    その移動順を10に変える
  テキスト0というテキストを作る
    その位置と大きさを{76,83,60,19}に変える
    その移動順を9に変える
  郵便ラベル3というラベルを作る
    その位置と大きさを{290,332,324,12}に変える
    その内容を「左のテキストボックスに検索したい市町村名の一部を入力してください」に変える
    その移動順を7に変える
  郵便テキスト1というテキストを作る
    その位置と大きさを{76,329,126,19}に変える
    その移動順を5に変える
  郵便ラベル1というラベルを作る
    その位置と大きさを{17,329,53,12}に変える
    その内容を「市町村名」に変える
    その移動順を3に変える
  郵便表部品1という表部品を作る
  郵便表部品1を初期化開始する
    その位置と大きさを{17,360,600,204}に変える
    その列見出し高さを18に変える
    その移動順を2に変える
  郵便表部品1を初期化終了する
  ボタン1というボタンを作る
    その位置と大きさを{218,327,66,23}に変える
    その内容を「住所検索」に変える
    その移動順を1に変える
  ラベル2というラベルを作る
    その位置と大きさを{17,117,35,12}に変える
    その内容を「住所1」に変える
    その移動順を11に変える
  テキスト1というテキストを作る
    その位置と大きさを{76,114,384,19}に変える
    その移動順を12に変える
  テキスト2というテキストを作る
    その位置と大きさを{76,150,384,19}に変える
    その移動順を13に変える
  ラベル3というラベルを作る
    その位置と大きさを{17,157,35,12}に変える
    その内容を「住所2」に変える
    その移動順を14に変える
終わり

//検索するボタンが押された時の手順
ボタン1がクリックされた時の手順
ws01=郵便テキスト1の内容 //入力した内容を検索する変数にコピーします

データを、取得する
     終わり

データを、取得する時の手順
          ーーデータの取得
    SQLiteへ接続する         // データベースを占有しないようにここで接続する
    // 郵便番号テーブルからword_searchをAND条件で検索します。
    例外監視
   SQLiteから「SELECT * FROM zip where ken like "%[ws01]%" or city like "%[ws01]%" or machi like "%[ws01]%";」をデータ表として取得してデータとする
   発生した場合
   監視終わり
  SQLiteから切断する       // データベースを占有しないようにここで切断する
  
  データの名前は、「郵便番号」
  郵便表部品1のデータ表をデータに変える
  列一覧は、郵便表部品1の列一覧     //表部品の列名を変える為に取得する
    列一覧(1)の見出しは、「郵便番号」
    列一覧(1)の幅は、60
    列一覧(2)の見出しは、「都道府県」
    列一覧(2)の幅は、70
    列一覧(3)の見出しは、「市町村」
    列一覧(3)の幅は、120
    列一覧(4)の見出しは、「町域」
    列一覧(4)の幅は、290
  終わり

郵便表部品1のセルがクリックされた時の手順

テキスト0の内容は、郵便表部品1の選択セルの内容
ws01=テキスト0の内容

          ーーデータの取得
    SQLiteへ接続する         // データベースを占有しないようにここで接続する
    例外監視
    // 郵便番号テーブルからword_searchをAND条件で検索します。
   SQLiteから「SELECT ken,city,machi FROM zip where zip1= "[ws01]" ;」を取得して結果とする
   発生した場合
   監視終わり
  SQLiteから切断する       // データベースを占有しないようにここで切断する
  
  住所A=結果の内容
  テキスト1の内容を住所Aに変える

  終わり
終わり

------------------------------ ここまで

{ }は配列です

投稿者:ゆうと 投稿日:2018/01/27(Sat) 15:03:57 No.1973

こんにちは ゆうとです。

配列は文字列型への代入時に、自動的に文字列へ変換されます。
そのときに前後に{ }が付き、要素ごとに,が付きます。

SQLiteの「取得する」手順は、行と列を2次配列で返します。
画像を見ると、{{A,B,C}}のような形になっているのはそのためです。
今回のように、1行目の内容をすべて表示させたい場合は1行目(1要素目)を取得した上で
「,」を消すために配列の要素を「繋げる」手順を使うことで、きれいに文字列を取得できるかと思います。

-----------------
住所A=結果の内容(1)を繋げたもの
テキスト1の内容を住所A(1)を繋げたものに変える
-----------------

Re: { }は配列です----やってみましたがエラーが発生しました。

投稿者:うなぎいぬ 投稿日:2018/01/27(Sat) 20:05:09 No.1977

回答していただきありがとうございます。

この内容に書き換えたところ次のようなエラーが発生しました。

「指定した式が、配列または辞書ではないため、要素番号を指定することはできません。
[エラー番号124] [メイン画面.郵便表部品1のセルがクリックされた時:128行目]」

返してきた値が「配列でない」と判断されてしまったようです。この場合、どのような対処をすれば宜しいのでしょうか?




> こんにちは ゆうとです。
>
> 配列は文字列型への代入時に、自動的に文字列へ変換されます。
> そのときに前後に{ }が付き、要素ごとに,が付きます。
>
> SQLiteの「取得する」手順は、行と列を2次配列で返します。
> 画像を見ると、{{A,B,C}}のような形になっているのはそのためです。
> 今回のように、1行目の内容をすべて表示させたい場合は1行目(1要素目)を取得した上で
> 「,」を消すために配列の要素を「繋げる」手順を使うことで、きれいに文字列を取得できるかと思います。
>
> -----------------
> 住所A=結果の内容(1)を繋げたもの
> テキスト1の内容を住所A(1)を繋げたものに変える
> -----------------

Re: { }は配列です----解決しました、ありがとうございました。

投稿者:うなぎいぬ 投稿日:2018/01/29(Mon) 12:29:40 No.1979

ゆうとさま

いつもお世話になっております。
ご提案していただいた「繋げる」方法ではエラーが発生しましたが
下記の方法でうまく出すことが出来るようになりましたのでご報告いたします。

  
  //-------------------  
  //データの名前は、「住所B」
  住所A=結果(1,1)&結果(1,2)&結果(1,3)
  テキスト1の内容を,住所Aに変える
  //-------------------

ありがとうございました。
  


> こんにちは ゆうとです。
>
> 配列は文字列型への代入時に、自動的に文字列へ変換されます。
> そのときに前後に{ }が付き、要素ごとに,が付きます。
>
> SQLiteの「取得する」手順は、行と列を2次配列で返します。
> 画像を見ると、{{A,B,C}}のような形になっているのはそのためです。
> 今回のように、1行目の内容をすべて表示させたい場合は1行目(1要素目)を取得した上で
> 「,」を消すために配列の要素を「繋げる」手順を使うことで、きれいに文字列を取得できるかと思います。
>
> -----------------
> 住所A=結果の内容(1)を繋げたもの
> テキスト1の内容を住所A(1)を繋げたものに変える
> -----------------

▲ページの先頭へ

- WebForum -