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

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

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

■10387 / inTopicNo.1)  ODBC接続でIDENTITIY_INSERTエラーで行追加できない。
  
□投稿者/ 広田 -(2017/03/07(Tue) 15:47:31)
    いつも大変お世話になっております。

    Win7、桐Ver9からMicrosoftSQLserver2012へODBCを使って外部DB接続しました。テーブルの参照は出来るのですが、行追加など更新しようとすると
    「IDENTITIY_INSERTがOFFに設定されているときは明示できな値を挿入できません」とエラーになります。
    Manegement_Studio2012でIDENTITIYをtrueに変更したのですが改善されません。(添付)

    桐からの更新は無理なのでしょうか?ACCESSのリンクテーブルからは可能でした。
956×536 => 250×140

1488869251.jpg
/69KB
引用返信 [メール受信/ON] 削除キー/
■10388 / inTopicNo.2)  Re[1]: ODBC接続でIDENTITIY_INSERTエラーで行追加できない。
□投稿者/ hidetake -(2017/03/07(Tue) 17:06:36)
    > 「IDENTITIY_INSERTがOFFに設定されているときは明示できな値を挿入できません」とエラーになります。

    この辺の話をし出すと、大変面倒な内容になってしまいますが…

    IDENTITY が設定されている列に INSERT を行う
    http://sorceryforce.net/ja/tsql/identitycolumninsert

    【SQL SERVER】 IDENTITY INSERTがOFFだ。ONにしよう。
    http://d.hatena.ne.jp/tetsu831/20110208/1297145850

    要は明示的に、カウンタ型の ID を指定して追加する場合は
    SET IDENTITY_INSERT TABLE名 ON;
    しろと言うことですが、桐ではこれを制御できません。

    終わったら
    SET IDENTITY_INSERT TABLE名 OFF;
    に戻す。

    桐は ID が無いと更新できないし、ID があると、桐で
    ID を指定しないと追加できない(NULLは許されない)ので、
    SET IDENTITY_INSERT TABLE名 ON;
    するしかない。悩ましいジレンマに陥ります。

    自分の場合はカウンタをトリガで自作して対応しました。
    で、1件1件の場合は良いけど、複数行を一挙に扱う場合は
    トリガを無効にして、桐で値を明示的に指定して追加・修正
    するようにしました。

    MySQL だと、この辺を勝手にやってくれるようです。


引用返信 [メール受信/OFF] 削除キー/
■10389 / inTopicNo.3)  Re[2]: ODBC接続でIDENTITIY_INSERTエラーで行追加できない。
□投稿者/ hidetake -(2017/03/07(Tue) 17:33:46)
    > SET IDENTITY_INSERT TABLE名 ON;
    > SET IDENTITY_INSERT TABLE名 OFF;

    桐では、この制御ができないので、無理矢理?簡単?にやろうとするならば
    ワークファイルを用意しデータを作成する。

    そして、書き出しで SQL Server に書き出す。その際に [ID] は指定しない。

    と、言う方法でも一応は可能です。



    昔、トリガでやっておいて、その後に、次のような事を
    書いていたのを忘れていました。
    〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
    SQL Server の IDENTITY項目は
    外部DBの結合表の中から追加しなくても
    テーブルにデータ移しといて
    書き出しで「外部DB」でも良いのですね!! (^^;)

    ※当然、IDENTITY項目は書き出し項目から外す。

    PostgreSQL では、書き出し「追加」でも
    追加されずに「上書き」になってしまうので
    この方法は最初から脳内で選択から外して
    いました。

    これだと、SQL側で プライマリキーが設定
    されて無く桐の外部DBでは更新はできない
    テーブルでも、行の追加だけは可能だ。

    編集も追加もワークテーブル使った方が安全
    だから、わざわざトリガー作って、IDENTITY
    を外さなくても SQL Server の場合は良かっ
    たかな?
    でも、メンテナンス用の会話処理などあるから
    もう、このままでいこう!!
    〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
引用返信 [メール受信/OFF] 削除キー/
■10390 / inTopicNo.4)  Re[3]: ODBC接続でIDENTITIY_INSERTエラーで行追加できない。
□投稿者/ 広田 -(2017/03/08(Wed) 10:15:10)
    hidetakeさん、いつも大変お世話になっております。早々にレスありがとうございます。

    > 桐では、この制御ができないので、無理矢理?簡単?にやろうとするならば
    > ワークファイルを用意しデータを作成する。
    これは、同様の構成のTBLを作るって意味?

    > そして、書き出しで SQL Server に書き出す。その際に [ID] は指定しない。
    SQL Server側にはIDを主キーとしてIDENTITYをONとした上で持っいて、外部DB接続して書き出す際に[ID]を書き出し項目に含めないって意味?

    もしそうだとすれば、この時書き出し表の名前は何と書けばよいのでしょう?
    更新できない外部DB接続で作成したxvw?(画像)

    試しに外部DBで接続し実行してみましたが、ステイタスバーで書出中と出て実施されたように見えたのですが、反映されていません。特にエラーもありませんでした。

    的外れな回答をしていましたら誠に申し訳ありません。ご教授頂けますと幸いです。何卒よろしくお願いします。
495×360 => 250×181

20170308.JPG
/36KB
引用返信 [メール受信/OFF] 削除キー/
■10391 / inTopicNo.5)  Re[4]: ODBC接続でIDENTITIY_INSERTエラーで行追加できない。
□投稿者/ 広田 -(2017/03/08(Wed) 10:32:49)
    No10390に返信(広田さんの記事)
    自己レスです。

    > もしそうだとすれば、この時書き出し表の名前は何と書けばよいのでしょう?
    SQL Server側のテーブルファイル名で良さそうですね。
    上書きにするとテーブルファイルごとそっくり書き換わるみたいですね。
    一応成功しました。

    運用としては
    1.参照用の外部DB接続を作って
    2.編集用のワークシートファイルで更新して
    3.外部DB接続でファイルごと上書きって感じですかね?(追加できない?)

    取り急ぎの試運転報告まで
引用返信 [メール受信/OFF] 削除キー/
■10393 / inTopicNo.6)  Re[5]: ODBC接続でIDENTITIY_INSERTエラーで行追加できない。
□投稿者/ hidetake -(2017/03/08(Wed) 18:51:56)
    > 3.外部DB接続でファイルごと上書きって感じですかね?(追加できない?)

    書き出し条件登録  外部DB,\
    条件名 = <文字列>,\
    <表名>,\
    追加|中止,\
    ファイル名変更 = しない|する,\
    { <項目名>,… }|* |

    Microsoft SQL Server の場合は「追加」で、
    追加されませんか!?


引用返信 [メール受信/OFF] 削除キー/
■10394 / inTopicNo.7)  Re[6]: ODBC接続でIDENTITIY_INSERTエラーで行追加できない。
□投稿者/ 尾形 -(2017/03/09(Thu) 05:52:07)
    どうも、こんにちは

    MSSQLは全く分からないのですが

    編集表 "willnet.xvw"
    読み込み 表,"work.tbl",編集表=する,{[namae],[age]}

    こんな感じで[id]以外の読み込みではどんなですか?


    書き出しがいけるなら、読み込みもいけるんじゃ?
    という勝手な想像です


    本格的に外部DB処理するのであれば
    連番管理処理をライブラリ化して桐で管理した方が
    幸せになれるかと思います


引用返信 [メール受信/OFF] 削除キー/
■10395 / inTopicNo.8)  Re[7]: ODBC接続でIDENTITIY_INSERTエラーで行追加できない。
□投稿者/ hidetake -(2017/03/09(Thu) 07:35:52)
    2017/03/09(Thu) 07:37:02 編集(投稿者)

    > 書き出しがいけるなら、読み込みもいけるんじゃ?
    > という勝手な想像です

    無理みたい。

    書き出しは SQL Server側で SQL のテーブルに INSERT するけど
    読み込みだと、どうしても桐を介しての INSERT になってしまいます。
    なので、桐の制限に大きく左右されるみたいです・

    XVX に ID を含めても、含めなくとも IDENTITIY_INSERT の制限で
    読み込めないようです。


引用返信 [メール受信/OFF] 削除キー/
■10396 / inTopicNo.9)  Re[8]: ODBC接続でIDENTITIY_INSERTエラーで行追加できない。
□投稿者/ 広田 -(2017/03/09(Thu) 11:32:02)
    >>書き出しがいけるなら、読み込みもいけるんじゃ?
    >>という勝手な想像です
    編集表 "work.tbl"
    読み込み 表,"willnet.xvw",編集表=する,{[namae],[age]}
    なら、いけました!(^^)!

    >Microsoft SQL Server の場合は「追加」で、
    >追加されませんか!?
    すみません、追加も上書きもいけました。勘違いでした。(汗)

    ワークシートの発想はここで聞かなかったら思いつきませんでした。感激です!
    なんか工夫すればうまくやっていけそうです。

    >本格的に外部DB処理するのであれば
    >連番管理処理をライブラリ化して桐で管理した方が
    >幸せになれるかと思います
    使い慣れた桐を使って作業できるなんて本当に幸せです。ありがとうございました!
解決済み!
578×337 => 250×145

20170309.JPG
/39KB
引用返信 [メール受信/OFF] 削除キー/
■10397 / inTopicNo.10)  Re[9]: ODBC接続でIDENTITIY_INSERTエラーで行追加できない。
□投稿者/ 尾形 -(2017/03/09(Thu) 12:55:24)
    どうも、こんにちは

    > 編集表 "work.tbl"
    > 読み込み 表,"willnet.xvw",編集表=する,{[namae],[age]}
    > なら、いけました!(^^)!

    ん?

    多分、こんな感じにあるのかな?

    結合 "willnet.xvw",・・・
    書き出し 表,"willnet.tbl",*
    編集表 "willnet.xvw"
    終了 表 編集対象表

    表 "willnet.tbl"
    項目属性変更2 削除,[id]
    ココで入力処理

    編集表 "willnet.tbl"
    書き出し条件登録  外部DB,条件名="willnet",追加,ファイル名変更=しない,*


    [id]項目はローカルtbl時に項目削除しておくと
    書き出し時に全項目指定でいいので、簡単になるかと


引用返信 [メール受信/OFF] 削除キー/
■10398 / inTopicNo.11)  Re[9]: ODBC接続でIDENTITIY_INSERTエラーで行追加できない。
□投稿者/ hidetake -(2017/03/09(Thu) 12:56:27)
    > >>書き出しがいけるなら、読み込みもいけるんじゃ?
    > >>という勝手な想像です
    > 編集表 "work.tbl"
    > 読み込み 表,"willnet.xvw",編集表=する,{[namae],[age]}
    > なら、いけました!(^^)!

    これって、willnet.xvw にデータを読み込んでいるのでは無く
    work.tbl にデータを読み込んでいるのですよね。

    もちろん、これなら可能です。

    でも、逆はできないはずです。

引用返信 [メール受信/OFF] 削除キー/
■10399 / inTopicNo.12)  Re[10]: ODBC接続でIDENTITIY_INSERTエラーで行追加できない。
□投稿者/ 広田 -(2017/03/09(Thu) 13:42:39)
    尾形さん、こんにちわ

    > 結合 "willnet.xvw",・・・
    > 書き出し 表,"willnet.tbl",*
    > 編集表 "willnet.xvw"
    > 終了 表 編集対象表
    > 表 "willnet.tbl"
    これって
    >>編集表 "willnet.tbl"
    >>読み込み 表,"willnet.xvw",編集表=する,{[namae],[age]}
    ではまずいのでしょうか?


    > [id]項目はローカルtbl時に項目削除しておくと
    > 書き出し時に全項目指定でいいので、簡単になるかと
    もともと "willnet.tbl"には[namae],[age]だけ持っている状態で
    >>読み込み 表,"willnet.xvw",編集表=する,{[namae],[age]}
    にしようと思っています。

    > 編集表 "willnet.tbl"
    > 書き出し条件登録  外部DB,条件名="willnet",追加,ファイル名変更=しない,*
    追加はもちろんできたのですが、元表(SQLServer)にはレコードが存在しているので、
    結局編集表からテーブルごと(全レコード)上書きするイメージで捉えているのですが間違ってますか?


    >
引用返信 [メール受信/OFF] 削除キー/
■10400 / inTopicNo.13)  Re[11]: ODBC接続でIDENTITIY_INSERTエラーで行追加できない。
□投稿者/ 尾形 -(2017/03/09(Thu) 16:04:55)
    どうも、こんにちは

    お書きになった処理で支障が無いのであれば
    どんな方法でもいいのではないでしょうか ^^

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



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

このトピックに書きこむ

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

Mode/  Pass/

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

- Child Tree -
- Antispam Version -