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

パスワード:


パスワード紛失

Excelに取り込んだデータの日付について

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2013-10-11 8:11 | 最終変更
Noriten  新米   投稿数: 4
初めての投稿です。よろしくお願いします。

Excelの外部データの取り込みを使って
Magicで作成したデータを読み込みましたが
日付が正しく出ていません。(DBはPervasiveです)

2013/10/11が3912/10/10となってしまっています。

どのように対処したらいいでしょうか。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-10-11 8:25
Tanda  長老   投稿数: 2151
Noritenさん、こんにちは。

年数の差がちょうど、1,899年の差になっていますので、
原因が明らかなようですね。

Magicは、日付データは内部的には西暦1年1月1日からの
経過日数(数値データ)で記憶されています。

これに対して、Excel側では日付データは内部的に西暦
1900年1月1日を基点として保存されます。

したがいまして、Magicから数値データとして吐き出した
値を直接Excel側に読み込みますと、その差である1899年
分の値が加算された結果として取り込まれてしまいます。

これを回避するには、Magic側かもしくはExcel側のいずれか
で、その差を吸収する手立てを加えてやる必要があります。

取り込みの手段は何を使っておられますか?ODBCですか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-10-11 8:38
Noriten  新米   投稿数: 4
Tandaさま 返信ありがとうございます。

ODBC接続です。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-10-11 11:40
Tanda  長老   投稿数: 2151
ひとつの方法として、Excel側で式を立ててやる方法があります。
これですと、Magic側を何も触らなくてできますので簡単です。

やり方は次の通りです。

「3912/10/10」から「2013/10/11」を単純に引くと、「693594」
という数値が返ってきます。したがって、日付日数の差は
「693594日」であることが分かります。

そして、もしExcelのセルの「A1」に「3912/10/10」という値が
入っているとしたら、別のセルに代入式として、「=A1-693594」
という式を立ててやります。これでOKです。

ODBCの環境が今手近にありませんので、ひょっとしたらODBC
側の設定で変換することもできるかもしれませんが、とりあえず
これでいけると思います。

P.S. SQL Serverを使えば、ExcelもSQL ServerもMicrosoftの
製品ですから、何もしなくても直接データが取り込めて便利ですよ。
機会があれば、SQL Serverもぜひ導入して試してみてください。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-10-11 13:19
Noriten  新米   投稿数: 4
Tandaさま

ありがとうございます。
早速、Excelに式を入れて作ってみます。


ちなみに、Magic側ではどのような方法があるのでしょうか。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-10-11 14:20
nkmt  長老   投稿数: 1668
Magicに取り込むと日付が 3912/10/10 になっているんですよね?
(状況はよくわかりませんが・・・)

Tandaさんの言葉を拝借すれば、
Magic側で

項目更新 日付項目 代入式(日付項目−693594)
とするのもいいと思います。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013-10-11 15:31
Noriten  新米   投稿数: 4
nkmtさま 返信ありがとうございます。

説明が下手ですみません。
Excelに取り込むと日付が3912/10/10になってしまい、困っておりました。

項目更新で代入式、試してみたいと思います。

ありがとうございました。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-10-11 19:05
Tanda  長老   投稿数: 2151
ODBCはやはり直接、データソースの値を見に行きますので、
途中で変換プログラムを組み込ませるのはちょっと厄介ですね。

ひとつの方法としては、Magic側に新しい「数値型」のカラムを
設けて、そこに「日付項目 - 693594」という代入式を入れて、
Excel側ではその値を取り込むっていう方法になるでしょうか。

ちなみに、Magic側で日付項目のデフォルト特性を西暦1年1月1日
以外に変更しても、内部のシリアル値(経過日数値)は変りませ
んでした。

プログラムするなら、nkmtさんのアドバイスでもいいですよ。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013-10-11 19:09
Tanda  長老   投稿数: 2151
訂正

「数値型」のカラムでなくても、「日付型」のカラムでもいいです。
式は成り立ちますから。
投票数:0 平均点:0.00

  条件検索へ


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