ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

P.SQL→SQLServer移行時の日付項目の扱い

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2013-8-29 20:11
ara  一人前   投稿数: 122
お世話になります。
ただ今、MAGICシステム(v8)のマイグレーション作業にあたっており、DBもPervasiveからSQLServer2012に移行しております。
そこで、日付項目についてお尋ねしたいことがあります。

日付項目については、datetime型に移行をしています。Pervasiveの時は、日付項目をクリアするのに項目更新で「0」をセットしていました。しかし、SQLServerのdatetime型に「0」はセットできないかと思います。一般的にはnull許可にして、クリアする時はnullをセットするものでしょうか?そうなるとすべてPGを見直し、日付項目のクリア箇所を修正する必要がありますが、できるだけ工数をかけずに作業を運びたい考えです。

SQLServerの知識もまだまだですので、ご教授いただければと思います。よろしくお願い致します。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013-8-29 20:57
Tanda  長老   投稿数: 2151
SQLServer側の設定は触らずに、Magicの自動変換に一切を
任せたほうが楽ですよ。そうすれば、DBがPervasiveであるか
SQLServerであるかを意識せずに、日付型の項目もハンドリング
できます。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-8-30 7:55
HAYATO  一人前 居住地: 大阪市淀川区西中島5-9-2  投稿数: 90
araさん、こんにちは

日付型の項目でも記憶形式をStringDateにし、タイプ欄にCHAR(8)を記述することで、ご希望の内容に沿う事が出来ます。

SQLデータベース上の格納は文字列ですが、MAGIC上は日付型ですので、Pervasive用に作られたプログラムに何も手を加える必要はなく、日付に0をセットすることも出来ます。

注意点としてはデフォルト値とデータベースデフォルト値に '00000000'を設定するのを忘れずに行うことです。

そうでないとMAGICは 1901/1/1を 0日付の代わりに初期値としてしまいますので...


HAYATO@アインシュタイン設計社
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-8-30 10:17
ara  一人前   投稿数: 122
Tanda様、HAYATO様、レスありがとうございます。

Tandaさんのおっしゃっている「Magicの自動変換に一切を任せたほうが楽」の具体的な設定方法がHAYATOさんの内容になるのですね。

今試しにやってみたのですが、デフォルト値に'00000000'が設定できないのです‥('00000000'を入力してロストフォーカスすると入力内容が消えてしまう‥)
データベースデフォルト値には設定できました。

SQLServer側は何も変更していませんが、何かMAGIC側の設定を誤っているでしょうか?
ちなみに現在NULL値可は「Yes」、NULLデフォルトは「No」としています。

お忙しいところ恐縮ですが、アドバイスいただけましたら助かります。よろしくお願い致します。
投票数:0 平均点:0.00
depth:
3
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-8-30 10:59
Tanda  長老   投稿数: 2151
> Tandaさんのおっしゃっている「Magicの自動変換に一切を任せ
> たほうが楽」の具体的な設定方法がHAYATOさんの内容にな
> るのですね。

いえ、違います。この場合、SQLServer側の設定は「一切」触る必要
はありません。すべてMagic側で設定可能です。使用するデータベース
をPervasiveからSQLServerに変更するだけです。感動しますから、
やってみてください。
投票数:0 平均点:0.00
depth:
4
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-8-30 11:26
ara  一人前   投稿数: 122
Tanda様

データリポジトリのデータベースの設定だけを「SQLServer」に変更しているのですが、すでに登録済みのデータまで移行してくれたのにはホントに感動いたしました。
ただ今回、日付項目を扱っているテーブルの場合、Pervasive側で「0」としているレコードがあると、「キャストした文字コードが正しくありません」というエラーが表示され、MAGICからの自動移行はできないと思っているのですが…

データリポジトリのデータベース設定を変更したのち、HAYATOさんが言われたようなテーブル項目特性を調整してコンバート用のPG作成が必要かなと思っているのですが、私の認識が誤っているでしょうか?

日付項目も自動コンバートされたら、まさにマジックです。
投票数:0 平均点:0.00
depth:
5
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-8-30 11:43
Tanda  長老   投稿数: 2151
データリポジトリのカラム定義で、日付項目の「カラム特性」→
「デフォルト値」の欄を、「1901/01/01」から「0000/00/00」に変更
してやるだけです。この変更はバックエンドのDBが何であろうと関係
ありません。SQLServerの知識はまったく不要です。
投票数:0 平均点:0.00
depth:
6
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-8-30 13:42
ara  一人前   投稿数: 122

Pervasiveテーブルのカラム定義で、日付項目の「デフォルト
値」を「0000/00/00」にしておいて、データベースをSQLServer
に変更して自動コンバートするということですよね?

デフォルト値を見てみると、現在は何も指定しておらず(初期
表示の1901/01/01を消したのだと思います。)、そこに「0000
/00/00」を入力してみたのですが、ロストフォーカスすると
入力した内容が消えてしまいます。

記憶形式は「Integer Date」にしています。
MAGICv8から、移行ツールにて移行させたテーブルです。
モデルリポジトリで登録している内容を使用しています。

ちなみに新たにPervasiveテーブルを作成してみたところ、
日付項目のデフォルト値に「0000/00/00」が指定できました。
この項目にはモデルリポジトリを使用しませんでした。
また、「NULL計算値」という値を比較してみたところ、モデル
を使用している元からあるテーブルには何も表示されていませ
んが、新たに作成したモデル未使用の方には「1901/01/01」が
表示されています。

デフォルト値を指定できないのはモデルの設定が原因なので
しょうか‥
投票数:0 平均点:0.00
depth:
7
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013-8-30 15:24
Tanda  長老   投稿数: 2151
モデルを継承させて試してみましたが、問題なく1901/01/01から
0000/00/00に変更することができましたよ。

記憶形式がIntegerDateになっているのは何か変ですね。どこか、
触りましたか?何も触っていなければ、デフォルトのStringDateのまま
のはずですが。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-8-30 17:03
ara  一人前   投稿数: 122
v8からxpaへマイグレーションしているシステムなのですが、今確認したところ、v8の頃からIntegerDateとなっていました。10年以上前のシステムなので、今となってはなぜそうなっているのかもわかりません‥

いろいろ試してみたのですが、HAYATOさんにレスいただいた、タイプ欄にCHAR(8)を設定して自動コンバートしてみました。MS-SQL側は文字となりますが、MAGICから見ると今まで通り日付として見えますし、PG改修も必要なさそうなので、今回はこのやり方をと思っています。

Tandaさんよりご指導いただいたやり方がもしできたとしたら、MS-SQL側はdatetime型として自動コンバートされるのでしょうか?

いろいろとお尋ねして恐縮ですが、よろしくお願いします。
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-8-30 17:22
Tanda  長老   投稿数: 2151
私の場合は特別な必要がない限り、SQLServer側の設定はすべて
Magicのゲートウェイに任せるようにしています(つまり、全自動)。

今、日付型のカラムの設定を確認してみましたら、Magic側の特性
シートは「記憶形式」が「String Date」で、SQLServerのManagement
Studio側の設定は「datetime」になっていました。
投票数:0 平均点:0.00
depth:
3
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-9-2 9:40
ara  一人前   投稿数: 122
そうですか‥
MAGIC+MS-SQLというのが初めてで、しかもPervasiveからの移行なので、いろいろと戸惑う部分があります。
自分なりに学習して理解を深めたいと思います。
またお尋ねすることあると思いますので、どうぞよろしくお願い致します。
投票数:0 平均点:0.00
depth:
4
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013-9-2 10:13
Tanda  長老   投稿数: 2151
Magicは基本的にはバックエンドがPervasiveであるかSQLServer
であるかを意識しないでアプリが作れるようになっていますので、
心配はいらないと思います。
投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約