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

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

[ 親記事をトピックトップへ ]

このトピックに書きこむ

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

■5174 / inTopicNo.21)  Re[2]: 外部DBでオートナンバーキーの取得
  
□投稿者/ うにん -(2009/09/28(Mon) 19:55:05)
    > 私はmysqlでなくpostgresqlで外部DBのautoをやろうとしましたが、
    > 桐で行追加可能にするには主キーがないといけない
    > 主キーの項目にも桐から値を設定しないと桐がNULLを入れようとする
    > のでうまく行きませんでした。
    > トリガを定義して何とかなりましたが、mysqlだと簡単ですか?

    簡単でしたねえ。桐にはmySQLの方が相性がよさそう?
    pgsqlではNULL違反になってしまうのに、mysqlではならないでauto値が入ってくれる。
    未定義でなく適当な値を入れてもauto値が上書きしてくれるけど、既存の値を入れるとunique違反でエラーになる。
引用返信 [メール受信/OFF] 削除キー/
■5167 / inTopicNo.22)  Re[2]: 外部DBでオートナンバーキーの取得
□投稿者/ うにん -(2009/09/28(Mon) 13:49:35)
    >>再抽出しないといけないのだろうというのは分かるのですが
    >>最後の番号を取得する#DSQLの書き方?
    >>良い方法が分かりません
    >
    > 主キー=mysql_insert_id()

    それはCの関数だった。SQLのは違う名前。
    #DSQL("id=LAST_INSERT_ID()")
    で最後に挿入した行が再抽出される。
引用返信 [メール受信/OFF] 削除キー/
■5145 / inTopicNo.23)  Re[3]: 外部DBでオートナンバーキーの取得
□投稿者/ 通りすがり -(2009/09/26(Sat) 19:43:42)
    検証アリガト


引用返信 [メール受信/OFF] 削除キー/
■5143 / inTopicNo.24)  Re[11]: 式サンプルです
□投稿者/ 通りすがり -(2009/09/26(Sat) 19:38:39)
    解決オメデト(^.^)

    > 要領を得ない質問で失礼しました
    全然んなこたぁない

    何故、サブフォーム使わないのか、きっと何か高度な状況で特殊事情がありそう、
    気軽に回答書いても後から難しい追加情報が出てきそう、って感じはしてた

    ツイデの時にでも教えて
引用返信 [メール受信/OFF] 削除キー/
■5138 / inTopicNo.25)  Re[2]: 外部DBでオートナンバーキーの取得
□投稿者/ 桐々舞 -(2009/09/26(Sat) 16:34:19)
    サブクエリの方は通りますね

引用返信 [メール受信/OFF] 削除キー/
■5135 / inTopicNo.26)  Re[9]: 式サンプルです
□投稿者/ hidetake -(2009/09/26(Sat) 07:42:54)
    > >>この場合たまたま最後が計算式だから
    > >>#DSQL("ID>0) ORDER BY ID DESC LIMIT (1")
    > >>でもいけるかな。
    >>
    >>PostgreSQL 7.2 だけの問題なのかわからないですけど
    >>コレでは通らないのですよね。
    >
    > 色々難しいですね。8.4+桐9-2009では
    > #DSQL("[日付]='2009-09-01'::timestamp) limit (1")
    > で大丈夫でしたが、項目名を元表から選択すると先頭の""が合わなくなってました。
    >
    > と書いてから上を見たら、#DSQLだから[]いらないんですね。
    > #DSQL("""tablename"".""日付""='2009-09-01'::timestamp) limit (1")
    > でもOKだった。

    PostgreSQL 8.1 でも大丈夫でした。

引用返信 [メール受信/OFF] 削除キー/
■5133 / inTopicNo.27)  Re[8]: 式サンプルです
□投稿者/ うにん -(2009/09/25(Fri) 16:53:04)
    No5132に返信(hidetakeさんの記事)
    >>この場合たまたま最後が計算式だから
    >>#DSQL("ID>0) ORDER BY ID DESC LIMIT (1")
    >>でもいけるかな。
    >
    > PostgreSQL 7.2 だけの問題なのかわからないですけど
    > コレでは通らないのですよね。

    色々難しいですね。8.4+桐9-2009では
    #DSQL("[日付]='2009-09-01'::timestamp) limit (1")
    で大丈夫でしたが、項目名を元表から選択すると先頭の""が合わなくなってました。

    と書いてから上を見たら、#DSQLだから[]いらないんですね。
    #DSQL("""tablename"".""日付""='2009-09-01'::timestamp) limit (1")
    でもOKだった。
引用返信 [メール受信/OFF] 削除キー/
■5132 / inTopicNo.28)  Re[7]: 式サンプルです
□投稿者/ hidetake -(2009/09/25(Fri) 08:22:58)
    > この場合たまたま最後が計算式だから
    > #DSQL("ID>0) ORDER BY ID DESC LIMIT (1")
    > でもいけるかな。

    PostgreSQL 7.2 だけの問題なのかわからないですけど
    コレでは通らないのですよね。

引用返信 [メール受信/OFF] 削除キー/
■5130 / inTopicNo.29)  Re[10]: 式サンプルです
□投稿者/ 尾形 -(2009/09/25(Fri) 07:38:34)
    どうも、ありがとうございました

    書き込む時に #乱数とPC名 あたりを書き込みして
    それを指定して再抽出して取得してみます

    要領を得ない質問で失礼しました

解決済み!
引用返信 [メール受信/OFF] 削除キー/
■5126 / inTopicNo.30)  Re[6]: 式サンプルです
□投稿者/ うにん -(2009/09/24(Thu) 19:51:45)
    > だから
    > #DSQL("ID>0) ORDER BY ID DESC LIMIT 1;SELECT (true")
    > とでもしないと通りません。

    いいね〜

    この場合たまたま最後が計算式だから
    #DSQL("ID>0) ORDER BY ID DESC LIMIT (1")
    でもいけるかな。
引用返信 [メール受信/OFF] 削除キー/
■5125 / inTopicNo.31)  Re[10]: 式サンプルです
□投稿者/ 通りすがり -(2009/09/24(Thu) 18:21:19)
    どうもアリガト
    これは良い事を教わった(^^)
引用返信 [メール受信/OFF] 削除キー/
■5124 / inTopicNo.32)  Re[9]: 式サンプルです
□投稿者/ hidetake -(2009/09/24(Thu) 18:15:38)
    2009/09/24(Thu) 18:23:37 編集(投稿者)

    > SQL UPDATE は、工夫したらなんとか出来る?

    さきの例だったら

    #DSQL("ID>0) ORDER BY ID DESC LIMIT 1;SELECT (true")

    の ; のあとに割り込ませるだけ。

    #DSQL("ID>0) ORDER BY ID DESC LIMIT 1;UPDATE ・・・・;SELECT (true")
    あとは必要に応じて ; で区切って複数の文も・・・

    ただ、桐に帰ってくるのは最初の SQL文の結果のみ!
    あとの結果は、巧くいかなかった場合はエラー表示
    されるかも知れないけど、巧くいった言う結果(返値)
    は得られない?

    あとは
    http://www.fuku3.com/habata/kbbs/kakov8/21104.htm
    などを参考に!

    PostgreSQL の場合は EXECUTE コマンドがあるので
    トリガを使えば、データとして、テーブルにSQL文を
    入力すれば、それを SQLとして実行させることも一応
    可能だったりします。

引用返信 [メール受信/OFF] 削除キー/
■5123 / inTopicNo.33)  Re[8]: 式サンプルです
□投稿者/ 通りすがり -(2009/09/24(Thu) 18:07:44)
    うん、
    ついでに教えて頂けたら嬉しいんだけど、<m(__)m>
    SQL UPDATE は、工夫したらなんとか出来る?
引用返信 [メール受信/OFF] 削除キー/
■5122 / inTopicNo.34)  Re[7]: 式サンプルです
□投稿者/ hidetake -(2009/09/24(Thu) 17:14:20)
    > 成る程、通らないんだね

    そのままでは通らない。

    無理矢理通すには、SQLコマンドインジェクション攻撃に
    使われる手法を用いて、一ひねりする必要がある。
    そうすれば通せる。また、この手法を用いれば、通常は
    桐から任意のSQL文は投げかけられないけど、それも通す
    ことも可能。ただし、返り値の取得には当然制限があるの
    だけれど。

引用返信 [メール受信/OFF] 削除キー/
■5121 / inTopicNo.35)  Re[6]: 式サンプルです
□投稿者/ 通りすがり -(2009/09/24(Thu) 16:59:14)
    > #DSQL を使う場合には、桐は #DSQLで渡す文字列全体を
    > () で括るので

    成る程、通らないんだね
引用返信 [メール受信/OFF] 削除キー/
■5120 / inTopicNo.36)  Re[5]: 式サンプルです
□投稿者/ hidetake -(2009/09/24(Thu) 15:37:20)
    2009/09/24(Thu) 15:54:57 編集(投稿者)

    > サブクエリもLIMITも通らないの??

    id の最大値を求めるには、
    表示項目名に "id" とでもし
    所属対象表は table だとして
    項目/計算式 に #max(["table".id])
    ともすれば良し!


    #DSQL を使う場合には、桐は #DSQLで渡す文字列全体を
    () で括るので
    #DSQL("ID>0 ORDER BY ID DESC LIMIT 1")
    では
    SELECT * FROM table WHERE(ID>0 ORDER BY ID DESC LIMIT 1);
    を実行してしまうことになります。

    だから
    #DSQL("ID>0) ORDER BY ID DESC LIMIT 1;SELECT (true")
    とでもしないと通りません。

引用返信 [メール受信/OFF] 削除キー/
■5119 / inTopicNo.37)  Re[4]: 式サンプルです
□投稿者/ 通りすがり -(2009/09/24(Thu) 14:51:29)
    ゴメン、まだ質問の意味が解らないorz
    しばらく検証してあげれる環境に居ないんだけど、サブクエリもLIMITも通らないの?? なんでやろ

    普通に、[ID]には桐で最大値+1を入れたらダメ?
    もちろん、#DSQL で3日以内のレコードとかに絞って入力、[ID]はイベントで良いし
引用返信 [メール受信/OFF] 削除キー/
■5118 / inTopicNo.38)  Re[3]: 式サンプルです
□投稿者/ 尾形 -(2009/09/24(Thu) 07:26:43)
    代入 &DSQL="id < 0"
    結合 "伝票ヘッダ.xvw",,表番号=1
    読み込み 表,"c:\tmp\伝票ヘッダ.tbl",*
    代入 &id= ←この段階で取得したい
    編集表 "c:\tmp\伝票明細.tbl"
    置換  [伝票id]=&id
    代入 &DSQL="id < 0"
    結合 "伝票明細.xvw",,表番号=2
    読み込み 表,"c:\tmp\伝票明細.tbl",*


    このような流れで考えているのですが
    4行目の効果的な処理が分かりません
    よろしくお願いします

引用返信 [メール受信/OFF] 削除キー/
■5116 / inTopicNo.39)  Re[2]: 外部DBでオートナンバーキーの取得
□投稿者/ 尾形 -(2009/09/23(Wed) 22:48:10)
    皆様どうもありがとうございます

    ローカル側のワーク表に入力して
    DBサーバに転送しようかと思っています

    ローカル入力→伝票ヘッダの外部DB読み込み(#DSQL(id < 0)で絞込状態)
    →伝票明細に外部キー書込→伝票明細のDB転送
    といった流れを考えています

    外部DBを触り始めたばかりです
    通常こういった処理はしないのでしょうか

    >桐側で取得したらダメなのですか?
    それでもいいのですが
    桐側にもってくる前段階の絞込条件の
    効果的なものが分からないのです

    >mysqlだと簡単ですか?
    いまのところ表画面形式で入力しています(テストのため)
    そういった事はありません
    id(主キー)は未定義でとばしていけてます
    そのため新規行追加のときはidが未定義の行が
    つづきます。再抽出しないと確認できません

    >#DSQL("ID>0 ORDER BY ID DESC LIMIT 1")
    これをしたいのですが
    LIMIT句って桐がダメじゃないですか?


    自分の基本的な考え方がダメな気がしてきました
    外部DBでの入力って普通どうするのでしょうか


引用返信 [メール受信/OFF] 削除キー/
■5104 / inTopicNo.40)  Re[1]: 外部DBでオートナンバーキーの取得
□投稿者/ 通りすがり -(2009/09/23(Wed) 12:27:24)
    通常は主キーと外部キーは同時に書き込む訳で、何をしたいのか読めないけど、
    桐で最大値を求めれば良いんでないの

    事情でサーバーに出させたいなら、こんな感じ?
    #DSQL("ID=(SELECT MAX(ID) FROM tbl)")
    もしくは #DSQL("ID>0 ORDER BY ID DESC LIMIT 1")
引用返信 [メール受信/OFF] 削除キー/

<前の20件 | 次の20件>

トピック内ページ移動 / << 0 | 1 | 2 >>
Mode/  Pass/

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

- Child Tree -
- Antispam Version -