(現在 過去ログ33 を表示中)
HOME
HELP
新規作成
新着記事
トピック表示
ファイル一覧
検索
過去ログ
[
親記事をトピックトップへ
]
このトピックに書きこむ
過去ログには書き込み不可
[ トピック内全43記事(21-40 表示) ]
<<
0
|
1
|
2
>>
■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
-