(現在 過去ログ35 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■5391 / inTopicNo.1)  外部dbで結合状態での入力
  
□投稿者/ 尾形 -(2009/11/23(Mon) 10:26:59)
    よろしくお願いします
    MySQLです

    多分基本的な事?だろうと思うのですが
    知識がないのでよろしくお願いします

    「得意先別商品単価表」というテーブルがあります
    得意先id、商品id、単価 の構成です

    外部db定義で、上記のテーブルに、得意先マスタと商品マスタ
    を結合指定して、得意先名と商品名を表示させるようにしました
    (実表更新可)

    このxvwを開いた状態で会話処理入力で
    得意先別商品単価の訂正はできるのですが
    新規に行追加をしようとするとできません

    「得意先id NULL エラー」のようなメッセージがでます
    想像するに、単価表に対してだけでなく
    得意先マスタや商品マスタに対しても、追加処理を
    しようとしているのではないかと想像します

    なにか上手い方法はありませんでしょうか?
    こういう場合はどう処理すればいいのでしょうか
    accessなんかも一緒じゃないかと思うのですが

引用返信 [メール受信/OFF] 削除キー/
■5397 / inTopicNo.2)  Re[1]: 外部dbで結合状態での入力
□投稿者/ うにん -(2009/11/23(Mon) 22:56:49)
    > 「得意先id NULL エラー」のようなメッセージがでます

    idは入れてるはずだから、得意先名とかでしょう。

    > 想像するに、単価表に対してだけでなく
    > 得意先マスタや商品マスタに対しても、追加処理を
    > しようとしているのではないかと想像します

    実際、既存のidを入力してるのにマスタには新規idで登録されました。
    単価表ではちゃんと入力した値になっている。

    > なにか上手い方法はありませんでしょうか?

    id以外を計算項目にしてみたが、やっぱり入力しないとnotNULL制約にひっかかる。
    idがシリアルだからってこともなさそうだし。
引用返信 [メール受信/OFF] 削除キー/
■5399 / inTopicNo.3)  Re[2]: 外部dbで結合状態での入力
□投稿者/ hidetake -(2009/11/24(Tue) 12:11:58)
    2009/11/24(Tue) 12:29:51 編集(投稿者)

    >>なにか上手い方法はありませんでしょうか?
    >
    > id以外を計算項目にしてみたが、やっぱり入力しないとnotNULL制約にひっかかる。
    > idがシリアルだからってこともなさそうだし。

    単に計算項目にして、その項目だけを計算式に入れてあげても
    桐は入力可能な状態になるようですね。
    (計算式に ["得意先マスタ".得意先名] のように記述した場合)
    なので、桐はマスターにもデータを追加しようとする。

    たとえば
    #cat(["得意先マスタ".得意先名],"")
    と言うように #cat をぶち込んであげると、編集時に
    編集可能でなくグレーの計算式項目になるようです。
    ( ["得意先マスタ".得意先名]+"" でも可)

    この状態だと(もちろん編集可能な内部結合の状態でですが)、
    追加も可能なようです。
    もちろん追加直後は [得意先名] が空欄のままですので再抽出
    が必要です。


引用返信 [メール受信/OFF] 削除キー/
■5400 / inTopicNo.4)  Re[3]: 外部dbで結合状態での入力
□投稿者/ うにん -(2009/11/24(Tue) 14:35:02)
    >>idがシリアルだからってこともなさそうだし。
    これはちょっと違ったけど関係あった。主キーの方のidを外部DBに入れてると
    桐で入力した値でなくシリアル値が入る。(pgsqlではそういうトリガを定義した)
    シリアルでなくすと既存の値だと重複エラーになる。
    尾形さんがやろうとしてるのは「複数テーブルの更新」じゃないから直接は関係ない。

    > #cat(["得意先マスタ".得意先名],"")
    > と言うように #cat をぶち込んであげると、編集時に
    > 編集可能でなくグレーの計算式項目になるようです。
    > ( ["得意先マスタ".得意先名]+"" でも可)
    >
    > この状態だと(もちろん編集可能な内部結合の状態でですが)、
    > 追加も可能なようです。

    これがうまくいった!
    けど数値系なら+0でいいけど日付はどうしよう。+""だと定義時には通るけど
    実際に追加したときエラーになった。

引用返信 [メール受信/OFF] 削除キー/
■5401 / inTopicNo.5)  Re[3]: 外部dbで結合状態での入力
□投稿者/ 尾形 -(2009/11/24(Tue) 16:10:04)
    どうも、ありがとうございます

    >["得意先マスタ".得意先名]+""
    これで解決しました m(__)m

    新規追加時も訂正入力時も再抽出しないと
    名称は反映しないですね
    桐仕様的には当然?な気もしますが


    # accessでもテストしてみたけど
    # 追加・訂正時もすぐに反映するのですね いいなぁ

解決済み!
引用返信 [メール受信/OFF] 削除キー/
■5404 / inTopicNo.6)  Re[4]: 外部dbで結合状態での入力
□投稿者/ hidetake -(2009/11/25(Wed) 11:29:07)
    > これがうまくいった!
    > けど数値系なら+0でいいけど日付はどうしよう。+""だと定義時には通るけど
    > 実際に追加したときエラーになった。

    日時型は上手い方法が見つかりません! (;_;)

    DBによっては使えない関数ばかりだし・・・ (PostgreSQL)
    どうしても、と言うのであれば、外部DB側で
    ビューでも作って事前に文字型に変換しておく
    ことでしょうか?


引用返信 [メール受信/OFF] 削除キー/
■5405 / inTopicNo.7)  Re[5]: 外部dbで結合状態での入力
□投稿者/ うにん -(2009/11/25(Wed) 12:08:39)
    > どうしても、と言うのであれば、外部DB側で
    > ビューでも作って事前に文字型に変換しておく

    なるほど、そんな手はありますか。参照するだけの項目だからビューでいいですね。

    FM10を触ってみたら、ODBCで直接外部テーブルを編集できるようになったけど
    pgsqlは対応してなかったのでがっくり。MySQLは使える。
    しかし桐と違って新規レコードで自動的に再抽出されているし、計算フィールドは
    Filemakerの全関数が使える。

    桐は、「現在行だけ再抽出」できればいいんだけどなあ。
引用返信 [メール受信/OFF] 削除キー/
■5406 / inTopicNo.8)  Re[6]: 外部dbで結合状態での入力
□投稿者/ hidetake -(2009/11/25(Wed) 14:19:44)
    >>どうしても、と言うのであれば、外部DB側で
    >>ビューでも作って事前に文字型に変換しておく
    >
    > なるほど、そんな手はありますか。参照するだけの項目だからビューでいいですね。

    CREATE VIEW "得意先ビュー" AS SELECT "得意先マスタ"."得意先id", "得意先マスタ"."得意先名", to_char("得意先マスタ"."更新日", 'YYYY-mm-dd HH24:MI:SS'::text) AS "更新日" FROM "得意先マスタ";

    と言った感じですね。
    MySQL では data_format関数を使うようですけど。


    # 桐の外部DBにもとめ出すとキリが無くなってしまいます。orz
    # バグさえ(外部DB以外でも)も直らないし。


引用返信 [メール受信/OFF] 削除キー/
■5417 / inTopicNo.9)  Re[1]: 外部dbで結合状態での入力
□投稿者/ 通りすがり -(2009/11/28(Sat) 14:58:43)
    解決済みだけど、久しぶりに覗きに来たので戯言書いてみる

    > こういう場合はどう処理すればいいのでしょうか
    キーの転記と表示だけでしょ、結合使わない
    マスタ更新用フォームは別に持つのが、けっこう普通かと、安全だし

    > accessなんかも一緒じゃないかと思うのですが
    Accessだとコンボボックスのソースにマスタテーブルを指定して表示列と転記列を設定、楽チン♪
    桐の自作表引きでしょ、端末にマスタ書き出しとくとか、配列に読み込むとか

    あと、1対多ならリンクでOK(ジョインじゃないよ)
    この場合は、単価違う同一商品は別商品IDにして得意先IDでグループ化してサブフォーム

    ただの戯言なんだからね!
引用返信 [メール受信/OFF] 削除キー/
■5423 / inTopicNo.10)  Re[2]: 外部dbで結合状態での入力
□投稿者/ 尾形 -(2009/11/29(Sun) 09:27:33)
    どうも、こんにちは

    > マスタ更新用フォームは別に持つのが、けっこう普通かと、安全だし
    当然そのつもりです

    > 桐の自作表引きでしょ、端末にマスタ書き出しとくとか、配列に読み込むとか
    表引き 入力の代替は自作で解決できるけど
    #表引き 関数の代替が自作できずに困った状況です

    端末側に確保すればいいですけど
    vpnでもほぼ同じように動かしたいので
    数万件のマスタを都度確保するのは厳しいかも


    ちょっと思いついたのが
    結合と端末確保による、#表引き 関数の合わせ技
    xvwレベルで結合で、マスタから名称を確保しておく
    行訂正・行追加イベントで、入力されたマスタ値だけを
    ローカル側に確保していく

    フォームのソースには
    #条件選択(
     #表引き([得意先id],=,"c:\得意先マスタ.tbl",[id],[名称],"id",1)<>"",
      #表引き([得意先id],=,"c:\得意先マスタ.tbl",[id],[名称],"id",1),1,
     [得意先名])

    こうすれば、再抽出しなくてもすぐに反映するし
    最新マスタにも対応できるかな
    (まだ動作未検証)

引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -