初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2016-01-07 18:45:17

koko
Guest

ODBCを用いたデータのインポートの際の疑問

仕事で基幹データベースからodbcでデータをインポートする際の質問です。
グローバルフィールドに値を入れておきまして、
データインポート時に
SELECT*
FROM"XXXXX(テーブル)"
WHERE "YYY(フィールド)" = "ZZZ(値)"
と書きますが、このZZZの値をグローバルフィールドに入れた値となるように
変数的な扱いをする方法はあるでしょうか?

ご相談内容が分かりにくいかもしれませんが、ご存じの方は、
ご教授をお願いします

#2 2016-01-08 00:02:02

Hiro
Member

Re: ODBCを用いたデータのインポートの際の疑問

ExecuteSQL関数ならダイナミックパラメータの引数設定が用意されているのですが、
odbcクライアントのSQL文なら、計算式内でそのフィールドを埋め込んでSQL生成すれば良いのでは?

SELECT *
FROM \"XXXXX(テーブル)\"
WHERE \"YYY(フィールド)\" = \" "& テーブル::ZZZフィールド & "\""

Offline

#3 2016-01-08 08:30:45

おーでーぶーしー
Guest

Re: ODBCを用いたデータのインポートの際の疑問

グローバルフィールド以外が空データなら何がKeyなのか分からないので
無理でしょう、また、グローバルフィールドは照合にならないでしょう
SQLはFM側の都合のグローバルフィールドに合わせてはくれません
ODBC側、オラクルかMySQLかMSSQLサーバーかは分かりませんが、そちらで
一旦、GROUP BY 句、WHERE 句、HAVING 句などのサブクエリなどで、ほしいデータを
整理してからインポートか、一気にずどんとインポートしてFM側で整理するか
FM側であらかじめ設定されたKeyデータとSQLの列に合わせてインポートするかです


SQLにフィールドという概念はありません。テーブル、列、行です

#4 2016-01-08 09:22:17

calcer
Guest

Re: ODBCを用いたデータのインポートの際の疑問

文字列値の囲みはシングルクオートでは?(数値なら不要)

#5 2016-01-08 09:23:13

Moz
Member

Re: ODBCを用いたデータのインポートの際の疑問

Hiroさんがすでに答えて下さっていますが可能ですよ。
インポートするデータをユーザ側である程度コントロールしたいという要望ですよね?

[ファイル]メニューの[レコードのインポート]からはできませんが、
スクリプトで[レコードのインポート]を行う場合は[計算済みの SQL テキスト]が指定できます。

細かな書式についてはクエリービルダーで作成できる SQL 文を参考すればよいでしょう。

MySQL からインポートする場合の例文は下記です。
「TEST」テーブルから「単価」フィールドがグローバル格納のフィールド(テーブル::gn_数字)の値と一致するレコードをインポートする場合

"SELECT * FROM `TEST` WHERE `TEST`.`単価` = " & テーブル::gn_数字

Offline

#6 2016-01-08 09:29:51

Moz
Member

Re: ODBCを用いたデータのインポートの際の疑問

追記)テキストフィールドで検索する場合

"SELECT * FROM `TEST` WHERE `TEST`.`名前` = '" & テーブル::gt_テキスト & "'"

calcerさんの指摘通りですが、テーブル名やフィールド名の囲いが `というのがミソですね。
(重複しますがクエリービルダーで作った SQL 文をいじるのが良さそうです)

Last edited by Moz (2016-01-08 09:33:11)

Offline

#7 2016-01-08 14:32:43

koko
Guest

Re: ODBCを用いたデータのインポートの際の疑問

皆様
ありがとうございます。
moz様のコメントを参考に下記の通り、
"SELECT * FROM `KYURYOU` WHERE `KYURYOU`.`BUMON` = '" & test::test &"'"
計算済みの SQL テキストを利用してみましたが、odbcエラーとのダイアログが出てしまいました。
エラーの理由はなんでしょうか・・・・?

#8 2016-01-08 14:41:06

Moz
Member

Re: ODBCを用いたデータのインポートの際の疑問

エラーの理由は ODBC エラーのダイアログに書いてありますよ......

私の書いたのは MySQL に接続した際に使った SQL 文です。

クエリービルダーを利用して作った SQL 文をフィールドの値を利用できる様に変更しましょう。
私の書いた計算式を変更して使ってもデータソースによっては使えないでしょう。

Offline

#9 2016-01-08 15:28:11

qb_dp
Member

Re: ODBCを用いたデータのインポートの際の疑問

ダブルクオート「"」であるべきところが、
バッククオート「`」になっているのでは?
誤?

"SELECT * FROM `TEST` WHERE `TEST`.`名前` = '" & テーブル::gt_テキスト & "'"

"SELECT * FROM \"TEST\" WHERE \"TEST\".\"名前\" = '" & テーブル::gt_テキスト & "'"

なので、
以下で大丈夫では?

"SELECT * FROM \"KYURYOU\" WHERE \"KYURYOU\".\"BUMON\" = '" & test::test &"'"

Last edited by qb_dp (2016-01-08 15:28:45)

Offline

#10 2016-01-08 16:09:21

Moz
Member

Re: ODBCを用いたデータのインポートの際の疑問

qb_dpさん、その SQL 文はバッククォートが正です。
ダブルクォートやシングルクォートにするとエラーです。

クエリービルダーで作って間違いだと思って " やら ' にしたら逆にエラーで......
さすがに SQL 文を検証せずに書き込めないです。

Last edited by Moz (2016-01-08 16:13:35)

Offline

#11 2016-01-08 20:13:27

藤 稔
Guest

Re: ODBCを用いたデータのインポートの際の疑問

接続先のDBとドライバの設定次第です。質問者はダブルクオートで書いてますから、たぶんそれなんでしょう。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.016 seconds, 9 queries executed - Memory usage: 522.19 KiB (Peak: 526.73 KiB) ]