みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
環境:WIN7 FM14AD ODBC接続SQLSever
会社の基幹システムがSQLSeverを構築されています。
そのSQLSeverにFMからODBC接続をして、FM側のテーブルオカレンスとして表示させています。
たとえば見積書をFM側からSQLSever側に作成する場合、見積NOの最大値+1を付けてあげる必要がありますが、
SQLSever側に集計フィールドを作成してMAX値を求めたり、計算フィールドを設けてデカルト積でMAX値を求めたりするのですが、
どちらも集計の時間がかかってしまいます。
フロントのシステムがFMだけならMAX値を取っておけば早く表示させられるのですが、SQLSever側を直接操作する事も可能なため取っておくこともできません。
そこで質問ですが、ExecuteSQLで直接見積NOのMAX値を求める事は出来ないでしょうか?
SQLに関しては無知ですので宜しくお願い致します。
FileMaker の ExecuteSQL 関数で、なんの条件もなく(WHERE句なし)単純に Max を求めるだけなら、
ExecuteSQL ( "SELECT Max ( \"見積NO\" ) FROM \"テーブル名\"" ; "" ; "" )
こんな感じの簡単な SQLQueryでいいですが、多分無茶苦茶遅いですよ。
単純なシリアルだったら、SQLServer 側でそのフィールドの IDENTITY を ID にして、SQLServer 側で自動採番させるのが一番早いと思いますよ。
とおりすがり様
ありがとうございます。
ExecuteSQL ( "SELECT Max ( \"見積NO\" ) FROM \"テーブル名\"" ; "" ; "" )
でやってみましたが、? になります。
時間切れなのでしょうか?
名前が間違ってませんか?
取得したんでは遅いし排他処理もできないので、見積作成時のINSERT文でサーバ側で設定させるほうがいいのでは。
名前が間違っていたようでした。
コピペしてみたら動いたのですが、表示しているレイアウトに行こうとしたら、計算や集計フィールドの場合以上に時間がかかってしまいました。
そこでSQLSever側に最大値を求める項目を作成してもらいそこを参照するようにしました。
みなさんありがとうございました。
Pages: 1
[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 505.19 KiB (Peak: 516 KiB) ]