Access2000でマクロを使って簡単にデータ取り込み等を実現しようとしています。
しかし、インポート元のCSVに、日付を表わす8桁の数字(2000年12月1日なら20011201)があり、これを日付型のフィールドにインポートしようとすると、データが削除されてしまいます。
どなたか、簡単にデータを変換、取り込む方法をご存知の方がおりましたら、お教えください。お願いします!!!

このQ&Aに関連する最新のQ&A

A 回答 (2件)

横から失礼します。


オフコン系のシステムを使っているところではよくある話です。
まずは、インポートする前にCSVファイルをリンクします。
日付フィールドは文字型とします。
リンクしたテーブルを使って、アクションクエリでテーブルを更新・作成する手順がいいと思います。

日付の変換方法は以下の式で実現できます。
CDate(Left(RS!日付, 4) & "/" & Mid(RS!日付, 5, 2) & "/" & Mid(RS!日付, 7, 2)")
    • good
    • 0
この回答へのお礼

遅くなりましたが、やり方わかりました!ありがとうございました!

お礼日時:2002/03/17 15:53

アクセスにそのまま取り込み(数字列)必要な時に


Mid関数やLeft関数Right関数で細切れにして使用しましょう。
この3つの関数はよく使うので覚えて損は有りません。
    • good
    • 0
この回答へのお礼

さっ、さすがです。
かなり核心をついておられるとみた。
しかし私は初心者でして、具体的にデザインビューのここにこれを入れたらよい、というようなご意見をいただければありがたいです。
お手数ですがよろしくお願いします。

早速のご対応をありがとうございました。

お礼日時:2002/02/05 01:28

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCELにて、同一日付であれば空白にしたい

EXCELにて、同一日付であれば空白にしたい
EXCELにて、同一日付であれば空白にしたいのですが、できればVBAを使用せず実現したい。
ヒントをお願いします

Aベストアンサー

回答No2です。ダブった日付を白文字にするときにページが変わったところで空白になるのは避けたいとのことでしたらページの区切りを求める関数はありませんので、例えば1ページが49行で50行のところが次のページになるなどのことが判っていればA2セルから下方を選択してからの条件付き書式の設定で入力する式は次のようにすることでよいでしょう。

=AND(MOD(ROW(),50)<>0,A2=A1)

QACCESS2000でEXCELデータのインポート

IBM AS/400のデータ転送でファイルタイプBIFFでEXCELファイルに落としたものをACCESS2000でインポートすると外部フォーマットが正しくないとなります。以前はACCESS VER.2.0では出来たのですが。どなたかご存知の方、お教えねがえないでしょうか

Aベストアンサー

エクセルのバージョンはどれをお使いになっていますか?
エクセルのバージョンが古いとひょっとしてAccess2000では読めない可能性があります。

また、一手間かかりますが、エクセルからCSV形式に出力して、Accessで取り込む回避策も考えられます。

QWORD差し込み印刷:日付の処理 - EXCELが空欄だと今日の日付が差し込まれてしまう

WORDの差し込み印刷について質問させてください。

EXCELのデータで日付を入れている列があります。この列に空欄がある(つまり日付が入力されていない)と、差し込み先のWORDのほうで、今日の日付が出てしまいます。

EXCELのデータが空欄の場合には、WORDの方に今日の日付を出さない(空欄のままにしておく)方法はありますか?

OSはWinXP, WORDとEXCELは2003を使っています。

よろしくお願いします。

Aベストアンサー

Word2002で確認したところ、質問と同じようになりました。
フィールドコードについては詳しくありませんが、消すことができました。
日付が空欄のところの差し込みフィールドでマウス右クリックしてフィールドコードの表示/非表示をクリックして表示させると
{MERGEFIELD"フィールド名"}となっていると思います。
1方法はココの”フィールド名"を削除すれば日付は表示されません。
もう一つの方法はフィールドを右クリックしてフィールドの編集を選択します。「フィールド」ダイアログボックスが現れます。
フィールドの種類から「差し込み印刷」を選択し、フィールドの名前から「If」を選択して条件式を入力する。
フィールドコードは
「If 式1 演算子 式2 Trueの場合の文字列 Falseの場合の文字列」
ここに
「If 日付のフィールド名<>"" "yyyy/mm/dd" ""」
というのを入力したところ表示されないようになりました。
日付のフィールドがブランクでない場合はyyyy/mm/dd、そうでなければブランクという条件式です
差し込みの1枚目のフィールドで条件式を入れておけば、日付空欄のところはすべて空欄にできると思います。
試しにチャレンジしてみて下さい。

Word2002で確認したところ、質問と同じようになりました。
フィールドコードについては詳しくありませんが、消すことができました。
日付が空欄のところの差し込みフィールドでマウス右クリックしてフィールドコードの表示/非表示をクリックして表示させると
{MERGEFIELD"フィールド名"}となっていると思います。
1方法はココの”フィールド名"を削除すれば日付は表示されません。
もう一つの方法はフィールドを右クリックしてフィールドの編集を選択します。「フィールド」ダイアログボックスが現れます。
...続きを読む

QACCESS2000 フォームからデータのインポートを起動するには

お世話になります。
フォーム内にコマンドボタンを配置し、そのボタンをクリックしたら、ファイルからテーブルへデータのインポートを起動するようにしたいのですが、イベントプロシージャで、どのように記述すればよいでしょうか。
あるいは、そんなことはできないのでしょうか。

Aベストアンサー

>ファイルからテーブルへデータのインポートを起動するようにしたいのですが、
とのことですが、
「インポート画面を起動」させる方法は、わかりません。

しかし、
TransferSpreadsheet
を使えば、excelファイルをaccessのテーブルへインポートできます。

VBのヘルプのキーワードに、「TransferSpreadsheet」と入力すると、
詳細が書いてあります。

以下URLをご参照ください。。。

参考URL:http://www.accessclub.org/samplefile/samplefile_127.htm

QExcelで日付を入力したら締日を表示させる

Excelで経費の支払いの表を作ろうとしています。

A列のセルに日付を入力し、
A列に入力した日付が1日~15日までなら
B列のセルにその月の最終日の日付を
16日~31日までなら
B列に翌月の15日と自動で表示されるようにするには
どうすればいいのでしょうか?


詳しい方、教えてください。
ちなみに使用しているExcel2010です。

Aベストアンサー

ごめ。よく読んだら半月ずれてましたな。

=IF(DAY(A1)<15,DATE(YEAR(A1),MONTH(A1)+1,1)-1,DATE(YEAR(A1),MONTH(A1)+1,15))

MONTH(A1)+1で「13月」とか出てきちゃいそうですが、Excelはちゃんと「翌年1月」と計算しなおしてくれますから大丈夫です。

QTXTデータを既存の、Access2000のテーブルへインポートしたいのですが・・・

OSはWindows98SE
SoftはAccess2000です。

現在Accessに、約5000件くらいの既存データがあります。(主キー:主索引)
-----------------------------------------------------------------
 主索引| 発注番号| 発注日 |担当者|販売先|商品番号|商品名・・・  
-----------------------------------------------------------------
00000001|0000000111|20011001| 03 |1001| A001 |ボイド
00000002|0000000222|20011005| 05 |1003| B004 |塩ビパイプ
  ・     ・     ・     ・   ・    ・    ・
  ・     ・     ・     ・   ・    ・    ・

そこへ約50件くらいのTXTデータを新しく追加及び、既存データに対して追加変更があったデータに修正(上書き)をしたいのですがどなたか教えていただけないでしょうか。
自分なりに、更新クエリを使ってみたり、VBの本を読んだりしたのですがよくわからず悩んでいます。。
何かヒントとなるものでも結構です。
説明が下手で申し訳ありませんがどうぞよろしくお願い致します。

OSはWindows98SE
SoftはAccess2000です。

現在Accessに、約5000件くらいの既存データがあります。(主キー:主索引)
-----------------------------------------------------------------
 主索引| 発注番号| 発注日 |担当者|販売先|商品番号|商品名・・・  
-----------------------------------------------------------------
00000001|0000000111|20011001| 03 |1001| A001 |ボイド
00000002|0000000222|20011005| 05 |1003| B004 |塩ビパイプ
  ・     ・...続きを読む

Aベストアンサー

まず、どこまで解かってて、どこから解かっていらっしゃらないのか解かりませんが(^^;、一から説明してみたいと思います。

現在AccessにあるテーブルをA、約五十件というデータをBというテーブルにインポートしたとします。

Aに無いデータを追加する方法・・・フィールド名・数共に同一であると仮定してあります。
この場合、不一致クエリを使用してAに含まれていないデータを抽出後、そのデータをテーブルに追加クエリを用いて追加します。
具体的には(今後のためにウィザードは使用しません)、
1)新規クエリをデザインビューで開く。
2)A、Bを「テーブルの表示」より追加する。
3)Aの「主索引」にBの「主索引」をドラッグする。
4)結合線が表示されるのでダブルクリックし、「結合のプロパティー」を表示する。
5)「Bの全レコードとAの同じ結合フィールドのレコードだけを含める」を選択。
6)Aの「主索引」をダブルクリックしてクエリにフィールドを追加。
7)フィールドの「表示」チェックをはずし、「抽出条件」に「Is Null」と記述。
8)Bの「*」をダブルクリックして全てのフィールドをクエリに追加。

ここまでで不一致クエリ(Aに無いデータの抽出)は終了です。適当なクエリ名(仮にIQ_Cとします)をつけて保存します。
このクエリを追加クエリに変更します。

9)IQ_Cをデザインモードで開く。
10)メニューバーより「クエリ」→「追加」を選択。
11)追加先を要求されるのでAを選択。
12)抽出条件に「Is Null」が入力されている列の「レコードの追加」(主索引となっていると思いますが)を削除(Delete)

これで完成です。
デザインモードで一度開いた後にビューに切り替えると追加されるレコードが表示されます。また、クエリをダブルクリックすれば追加クエリが実行されます。

長くなりましたが、お役に立てれば幸いです。

まず、どこまで解かってて、どこから解かっていらっしゃらないのか解かりませんが(^^;、一から説明してみたいと思います。

現在AccessにあるテーブルをA、約五十件というデータをBというテーブルにインポートしたとします。

Aに無いデータを追加する方法・・・フィールド名・数共に同一であると仮定してあります。
この場合、不一致クエリを使用してAに含まれていないデータを抽出後、そのデータをテーブルに追加クエリを用いて追加します。
具体的には(今後のためにウィザードは使用しません)、
1)新...続きを読む

QEXCELの日付データの比較

EXCELの日付データについての質問です。

たとえば、あるテキストデータでH20.7.19とあったとします。
それとEXCELの日付データにもH20.7.19があったとします。

テキストデータのH20.7.19をEXCEL側に貼り付け、EXCELの日付データH20.7.19と比較させ、答え0(誤差0)を返してもらう方法はありますでしょうか?

宜しくお願いいたします。

Aベストアンサー

こんにちは
DAYS360(開始日,終了日,方式)という関数で日数の差異を
求められます。

A1にテキストデータ H20.7.19
A2にエクセルデータ H20.7.19

があったとします。
=DAYS360(A1,A2)
で差異が0で返ってきます。 0じゃ無かったら別のものですね。

方式はヨーロッパ方式(TRUE)、アメリカNASD方式(FALSE)とか
書いてありましたが、違いはようわかりませんww
付けなくてもいいかとw

適当ですが、ご参考まで^^;

QEXCEL2000のVBAで*.dbf形式データからデータを抽出するには(ODBCとの連携について)

こんにちは

「データベースなら任せて!!」
という方におたずねします。

最近、EXCEL2000のVBA講習をやることになりました。
VBAの基本的な説明はできるのですが、困ったことに外部データとのやり取りについては
うまく説明できません。

いろいろ調べてますが、よくわかりません。

やりたいことは、

複数のデータベースファイル(*.dbf)があります、
それをEXCEL上でフォームパネルを用意しデータを抽出・検索などできるように
制御したいのですが、

まず、
疑問(1)ODBCやSQLをVBAを使って制御しデータベースファイル(*.dbf)を扱うには。
疑問(2)データベースファイル(*.dbf)を扱えたとしてその後、どのように抽出や検索をさせるのか。

おたすけください。

Aベストアンサー

私はdBASEを使用したことがないので(dbfってdBASEですよね?)、
一般的にODBCを使用する方法を書きます。
参考にできるところがあれば幸いです。
ただし、ご質問の内容に回答しようと思うと本が書けますので・・・^^;
全体の流れでご勘弁を・・
>(1)ODBCやSQLをVBAを使って制御しデータベースファイル(*.dbf)
>を扱うには。
まず、Excelからデータベースまでの経路を簡単に書きます。
Excelシート
 ↓↑
ExcelVBA
 ↓↑
ADOもしくはDAO
 ↓↑
ODBC
 ↓↑
データベース

まず、この経路を確保する必要があります。
ここで要求されること。
1・ODBCドライバの設定
2・ExcelVBAがADOかDAOを使えるようにする設定
3・VBAからADOかDAOを使用して、ODBC経由でdBASEデータベースを開く方法
(1、2は設定、3はVBAで記述)
なぜADOやDAOというものを使うのかというと、Excel単体のVBAの機能では、外部データベースとやり取りする能力がないからです。
ない機能なら、借りちゃえってことです。
1から3までがすべてうまくいけば、Excelからデータベースまでの1本の道ができたことになりますので、その道を使って、データのやり取りが可能になります。

>(2)データベースファイル(*.dbf)を扱えたとしてその後、どのように抽出
>や検索をさせるのか。
(1)の結果、経路は確保できていますから、要求を出して、結果を受け取ることをやればいいことになります。
要求を出すには?→SQL文を使いましょう。
結果をもらうには?→レコードセット(RecordSet)変数を使いましょう。

基本的なSQL文はSQL文が使用できるデータベースなら同じなので、問題ないと思います。
レコードセット変数というのは、SQL文で要求した結果のデータというのも、縦横のテーブル構造になってますので、それを受け取るためのものです。
これは、ExcelVBAにはなく、ADOやDAOの機能になります。
レコードセットにデータが入ったら、あとはエクセルのシートにぺったんぺったん張ってください。
実際のレコードセット変数にデータを受け取るまでのコードは、一番単純なモデルにすると3~4行ぐらいですみます。
(これだけ書いておいて・・・・^^;)

ほかの設定ができているとして、
DAOの場合
Dim DB As Database
Dim Rec as Recordset

Set DB = DBEngine.WorkSpace(0).OpenDataBase('ここに接続する設定を入れます')
Set Rec = DB.OpenRecordSet('ここにSQL文が入ります')
あとは、Recからデータを貼り付けるだけ。
ADOはちょっと手元に資料がないので・・・
あまりお役に立たないような内容ですいません^^;
調べたり質問したりする方向性にでもお役に立てればと思います。

調査する対象が多いので大変かと思いますが、がんばってください。

私はdBASEを使用したことがないので(dbfってdBASEですよね?)、
一般的にODBCを使用する方法を書きます。
参考にできるところがあれば幸いです。
ただし、ご質問の内容に回答しようと思うと本が書けますので・・・^^;
全体の流れでご勘弁を・・
>(1)ODBCやSQLをVBAを使って制御しデータベースファイル(*.dbf)
>を扱うには。
まず、Excelからデータベースまでの経路を簡単に書きます。
Excelシート
 ↓↑
ExcelVBA
 ↓↑
ADOもしくはDAO
 ↓↑
ODBC
 ↓↑
データベース

まず、この経路を...続きを読む

Qexcel,word 印刷した日の日付

excel,word文書を印刷したとき、その印刷日の日付を印字させるためにはexcel,word各々
どのようなことをすればよかったでしょうか。

Aベストアンサー

<Excelでの編集方法>
 メニューの「ファイル」-「ページ設定」で
 「ヘッダー/フッター」タブを選択。
 上に表示したい場合は「ヘッダーの編集」ボタン。

 編集画面の上に「日付の挿入」ボタン(カレンダーみたいなボタン)があるので
 それを押せば日付入力できます

<Wordでの編集方法>
 メニューの「表示」-「ヘッダー/フッター」を選択すると
 ヘッダーとフッターが点線で囲まれます。
 お好きなほうを選択し「日付の挿入」ボタンを押せば表示されるようになりますよ。

QAC2000のクエリで重複データから最新のデータだけ抽出したいのですが・・・(2)

OSWINDOWS98SE
AC2000

こんにちは、前回「AC2000のクエリで重複データから最新のデータだけ抽出したいのですが・・・」と言う質問をさせていただいて、教えていただいたSQLを使って色々とやってみたのですがどうしても2番のところで

クエリ式'[主索引]
delete 既存データA.*
from 既存データA inner join 一時テーブル
  on 既存データA.主索引 = 一時テーブル.主索引

insert into 既存データA(主索引,更新回数)
select 更新データB.主索引'の構文エラー:演算子がありません。

と言うコメントがでてしまいさきに進むことが出来なくなってしまいました。
構文エラー?演算子がありません??他を探してみたのですが乏しい知識の範囲では解決を見つけることが出来ずまた、質問させていただいた次第です。
1番の一時テーブルは作成できるのですが、2番以降がうまくいきません
どうかご教授お願いいたします。

1.更新データBから一時テーブルの作成

2.更新されているデータを予め削除する

3.既存データAへ追加データ、更新データをinsert


前回の質問
http://oshiete1.goo.ne.jp/kotaeru.php3?q=155505

OSWINDOWS98SE
AC2000

こんにちは、前回「AC2000のクエリで重複データから最新のデータだけ抽出したいのですが・・・」と言う質問をさせていただいて、教えていただいたSQLを使って色々とやってみたのですがどうしても2番のところで

クエリ式'[主索引]
delete 既存データA.*
from 既存データA inner join 一時テーブル
  on 既存データA.主索引 = 一時テーブル.主索引

insert into 既存データA(主索引,更新回数)
select 更新データB.主索引'の構文エラー:演算子がありません。

と言うコメン...続きを読む

Aベストアンサー


アクセスだと結合されたテーブルのデータを削除することは出来ないみたいですね。(汗)
tokinさんすみません。確認不足でした。

#アクセスのこの仕様おかしくないかな?
#どなたか詳しくご存知の方フォローしてください

別の方法で行きましょう。
>1.更新データBから一時テーブルの作成
>2.更新されているデータを予め削除する
>3.既存データAへ追加データ、更新データをinsert
1.はそのまま
2.更新されたデータを「UPDATE」
3.追加データをinsert

SQLは、
2.データの更新
UPDATE 既存データA INNER JOIN 一時テーブル
    ON 既存データA.主索引 = 一時テーブル.主索引 SET 既存データA.更新回数 = [一時テーブル].[最終更新],....

3.新規データの追加
INSERT INTO 既存データA ( 主索引, 更新回数...)
SELECT 更新データB.主索引, 更新データB.更新回数...
FROM 更新データB LEFT JOIN 既存データA
   ON 更新データB.主索引 = 既存データA.主索引
WHERE (((既存データA.主索引) Is Null))

※主索引が更新データBにあって、既存データAにないものを追加しています。

ご迷惑をおかけして済みませんでした。


アクセスだと結合されたテーブルのデータを削除することは出来ないみたいですね。(汗)
tokinさんすみません。確認不足でした。

#アクセスのこの仕様おかしくないかな?
#どなたか詳しくご存知の方フォローしてください

別の方法で行きましょう。
>1.更新データBから一時テーブルの作成
>2.更新されているデータを予め削除する
>3.既存データAへ追加データ、更新データをinsert
1.はそのまま
2.更新されたデータを「UPDATE」
3.追加データをinsert

SQLは、
2.デ...続きを読む


人気Q&Aランキング

おすすめ情報