Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


168 / 500 ページ ←次へ | 前へ→

【9914】Re:インポート時の重複データ処理
質問  みう  - 07/10/10(水) 14:10 -

引用なし
パスワード
   小僧 さん

> してはいけない質問について
>
>の 丸投げに相当していませんか?
>
>御自分でどこまでできていて、何が解らないのかを明確にご提示すれば
>もっと回答がつきやすくなると思われます。

今見返してみればそうですね・・・
申し訳ないです。
丸投げをするつもりで書いたわけでなく、もっと細かく書くべきでした。。。

>A) 取り込む前にExcelを精査する
>B) 取り込みながら重複をチェックする
>C) とりあえず取り込んだ後に重複をチェックする
>
>等の方法が考えられるかと思われます。
>

考えとしては、Bに近いのかなと思います。

>1) いったんワークテーブルに全てのデータを取り込む、
>2) 重複レコードに対しての処理を行う
>3) 取込先テーブルへとインポートを行う
>
>という様な流れにするかと思われます。

申し訳ありません。ワークテーブルというのは消してもいいようなテーブルを他に作るという感じでしょうか?

まず、VBAでどう書くかとか以前の段階で、教えてもらいたかったのもあります。

いろいろネットなどで勉強したなか、クエリにいれて比較して削除というのがありました。
これはVBAじょうでもできるのでしょうか?
VBAの中身の話ではなく申し訳ないです。。。。
・ツリー全体表示

【9913】Re:インポート時の重複データ処理
回答  小僧  - 07/10/10(水) 13:08 -

引用なし
パスワード
   ▼みう さん:
こんにちは。

まず、画面上部の

>本サイトの基本方針をまとめました。こちら をご一読ください。

の こちら のリンク先をお読みになって下さい。

> してはいけない質問について

の 丸投げに相当していませんか?

御自分でどこまでできていて、何が解らないのかを明確にご提示すれば
もっと回答がつきやすくなると思われます。


さて、実際の方法なのですが、
A) 取り込む前にExcelを精査する
B) 取り込みながら重複をチェックする
C) とりあえず取り込んだ後に重複をチェックする

等の方法が考えられるかと思われます。


また

>見つかったらダイアログボックスを出して上書きするか、キャンセルするかを表示

とありますが、複数件見つかった場合
全てのレコードに対して「上書き」「キャンセル」を1回表示するのか
1件1件について問い合わせを行うのかによって方法は変わってくるかと思われます。


当方が行うとすれば C) の方法になりますが、
実際の取込先のテーブルとまったく同じ構造を持ったテーブル(ワークテーブル)を用意して

1) いったんワークテーブルに全てのデータを取り込む、
2) 重複レコードに対しての処理を行う
3) 取込先テーブルへとインポートを行う

という様な流れにするかと思われます。
・ツリー全体表示

【9912】インポート時の重複データ処理
質問  みう  - 07/10/10(水) 11:34 -

引用なし
パスワード
   たびたびお世話になります。
教えていただきたいです。

現在ExcelのデータをAccessにインポートするという処理をVBAでかいているのですが。。。

・重複データを検索する
・見つかったらダイアログボックスを出して上書きするか、キャンセルするかを表示(これはできます。。。)

というかんじの機能をつけたいのですが。。。

どうやればいいでしょうか。。。。

ご指導お願いいたします。
・ツリー全体表示

【9911】Re:フォームでの画像表示について
回答  小僧  - 07/10/10(水) 9:53 -

引用なし
パスワード
   ▼おチビ さん:
こんにちは。
なかなかレスがつかないようなので…。

>フォームに画像を表示させたいのですが、処理が遅くなったり
>データ容量が重くなるのは避けたいと思っています。

画像を表示するには

・Access内に画像そのものを保存しておく
・Access内には画像があるアドレスを保存しておき、
 フォームが開いた際にそれを読み込む

のどちらかしかないかと思われます。

当然前者はAccessファイル自体の容量が増え、
後者は読み込み処理が発生するため、速度が遅くなります。

それ以外の方法がないのでしたら
結局のところどちらかを犠牲にしなくてはならないのではと思われます。

後は実際に画像がどの程度必要なのか
(ファイル数、ファイルサイズなど)
によって、前者と後者のメリット、デメリットを
比べていく事になるかと思われます。


おチビ さんのシステムの全体像がご提示されていない為
何とも言えない所ではあるのですが、
当方としてはレコード数が増えても
Accessのファイルサイズがあまり変わらない様に
後者の方法が良いのではないかと思われます。

(もちろん外部に画像のファイルを置くので、
Access内のアドレスと、実際の画像ファイルとの
2重の管理が発生するデメリットもあります)
・ツリー全体表示

【9910】Re:表形式フォームの一括入力について
回答  かわうそ  - 07/10/9(火) 19:44 -

引用なし
パスワード
   実テーブルの直リンクをやめて、
ワークテーブルを使用するのはダメなのですか?

EXITボタン→なにもしない(ワークテーブルクリア)
SAVEボタン→ワークテーブルから実テーブルへデータ更新
・ツリー全体表示

【9909】表形式フォームの一括入力について
質問  りん E-MAIL  - 07/10/9(火) 17:45 -

引用なし
パスワード
   アクセス初心者です。

表形式の入力フォームを開発中です。
フッター部に「SAVEボタン」と「EXITボタン」の2つのボタンがあり、
途中まで入力しても、「EXITボタン」を押下すれば、
すべての更新をキャンセルし、
「SAVEボタン」を押下すれば、
一括更新するようなイメージで考えていましたが、
アクセスでは、一行毎に更新されてしまうので、
こういう表形式の一括入力フォームは無理なのでしょうか?

非連結にすると、各明細ごとの編集が出来ず、困っています。

よろしくお願いします。
・ツリー全体表示

【9908】Re:フォームのテキスト値
お礼  みう  - 07/10/9(火) 17:03 -

引用なし
パスワード
   ▼hatena さん:

そういうことです!!

ほんと助かりました!!
こんな簡単なことができなく、いきづまってました・・・^^;
ありがとうございます!!
・ツリー全体表示

【9907】Re:フォームのテキスト値
回答  hatena  - 07/10/9(火) 15:10 -

引用なし
パスワード
   >ここで、うまくいっていないのが、フォーム内でそのテキストの値をとることはできるのですが、この値をモジュールにもっていけません。

そのテキストボックスのあるフォームのモジュールなら、

Me.テキストボックス名

標準モジュールなら、

Forms!フォーム名!テキストボックス名

で値を取得できると思いますが、、、、
そういうことですか?
・ツリー全体表示

【9906】フォームのテキスト値
質問  みう  - 07/10/9(火) 11:57 -

引用なし
パスワード
   わからないので、教えてください。

現在AccessでExcelのデータをボタン1つでインポートするというツールを作っています。
インポートなどするところはできたのですが、
テーブル名を固定で渡すようにしてあります。
これをフォームのテキストに文字をうち、その文字のテーブル名を作成、又は上書きみたくしたいのです。。。

ここで、うまくいっていないのが、フォーム内でそのテキストの値をとることはできるのですが、この値をモジュールにもっていけません。

初歩的なことかもしれませんが、教えてください。
文章が不明かもしれませんが、よろしくお願いいたします。
・ツリー全体表示

【9905】フォームでの画像表示について
質問  おチビ  - 07/10/5(金) 16:40 -

引用なし
パスワード
   はじめまして。
フォームに画像を表示させたいのですが、処理が遅くなったり
データ容量が重くなるのは避けたいと思っています。
フォームを開いた時には画像が表示されている状態が理想なので
ハイパーリンクも使えないと思います。
この場合の方法についてご教授頂けないでしょうか?
よろしくお願い致します。
・ツリー全体表示

【9904】Re:filecopyについて
お礼  ぼっちゃん  - 07/10/5(金) 16:08 -

引用なし
パスワード
   ▼Gin_II さん:
>>cnsDEST = CreateObject("WScript.Shell").SpecialFolders("DeskTop") & "\111.xls"
>>共有元、共有先のパソコンとも失敗しました。
>
>Const は、定数を設定するためのものなので、Dim で変数を定義してください。

どうもありがとうございました。
初歩的なことですいませんでした。
・ツリー全体表示

【9903】Re:filecopyについて
回答  Gin_II  - 07/10/5(金) 10:11 -

引用なし
パスワード
   >cnsDEST = CreateObject("WScript.Shell").SpecialFolders("DeskTop") & "\111.xls"
>共有元、共有先のパソコンとも失敗しました。

Const は、定数を設定するためのものなので、Dim で変数を定義してください。
・ツリー全体表示

【9902】filecopyについて
質問  ぼっちゃん  - 07/10/5(金) 9:53 -

引用なし
パスワード
   すみません、お世話になります。
Const cnsSOUR = "C:\Documents and Settings\ああああ\My Documents\ZZZ
\111元.xls"
Const cnsDEST = "C:\Documents and Settings\ああああ\デスクトップ\111.xls"
  
  FileCopy cnsSOUR, cnsDEST

何台かのパソコンを共有して、それぞれの共有先のパソコンのデスクトップに
\111.xlsと出力させるようにしたい。

cnsDESTの書き方をお教えください。
ちなみに
cnsDEST = CreateObject("WScript.Shell").SpecialFolders("DeskTop") & "\111.xls"
共有元、共有先のパソコンとも失敗しました。
・ツリー全体表示

【9901】Re:OpenRecordset ODBC呼出が失敗
質問  人参  - 07/10/4(木) 13:57 -

引用なし
パスワード
   ▼小僧 さん:
ご回答ありがとうございます。

>知人にテストしてもらった所、Oralce10gの環境では
>
>SELECT * FROM TSY1 WHERE NENDO = '2007'
>
>の様な SQLは問題なく通るとの事でした。
>
>
>そこで考えられる事として
>・Oracle8 のVarchar2 型に何かの問題がある
>・ODBCに問題がある
>
>という事が考えられますね。

こちらでも試してみました。(事後報告でスミマセン)
ほぼ同じ環境(OS、Accessのバージョン)で、Oracle8において障害が出ました。
Oracle7.3では出ていません。(現行)
このことで、Oracle8を疑っていいのかなぁと思えてきました。

具体的な解決策はまだ何もありません・・。
・ツリー全体表示

【9900】Re:OpenRecordset ODBC呼出が失敗
回答  小僧  - 07/10/4(木) 11:56 -

引用なし
パスワード
   ▼人参 さん:
こんにちは。

Oracleの知識はありませんのでご勘弁を…。

知人にテストしてもらった所、Oralce10gの環境では

SELECT * FROM TSY1 WHERE NENDO = '2007'

の様な SQLは問題なく通るとの事でした。


そこで考えられる事として
・Oracle8 のVarchar2 型に何かの問題がある
・ODBCに問題がある

という事が考えられますね。


雅さんからご提示して頂いた中に
>エンタープライズマネージャとかで実行できますか?

とありますが、
Oracle側でちゃんとSQL文が通ればODBCを疑ってみてはいかがでしょう。

お手元にOracle環境がない場合には
パススルークエリを使ってみてもいいかもしれません。
・ツリー全体表示

【9899】Re:実行時エラー3061
お礼  taka E-MAIL  - 07/10/2(火) 18:25 -

引用なし
パスワード
   ▼hatena さん:
>Dim w_sql_W As String
>Dim qd As DAO.QueryDef
>Dim W_siire_M As DAO.Recordset
>
>  ・・・
>
>  w_gyo = Me![中項目連番]
>  w_sql_W = "SELECT * FROM Q_見積明細中項目クエリ WHERE [中項目連番] >= " & w_gyo & " order by 中項目連番 "
>  Set qd = CurrentDb.CreateQueryDef("", w_sql_W)
>  qd.Parameters(0) = Forms!F_見積書明細大項目!大項目No
>  Set W_siire_M = qd.OpenRecordset
>
>  ・・・
hatenaさんたいへんありがとうございます。むちゃくちゃ嬉しいです。
ちょっと出張にいっていて今やってみたらうまくいきました。
もっと基本を勉強しないといけないですね。
全体をつくるまでまだ相当時間がかかると思いますが、わたしにしたら
大きな問題が通り抜けられました。又質問する機会があると思いますが、よろしくお願いします。とりいそぎ
・ツリー全体表示

【9898】Re:実行時エラー3061
回答  hatena  - 07/10/1(月) 22:26 -

引用なし
パスワード
   Dim w_sql_W As String
Dim qd As DAO.QueryDef
Dim W_siire_M As DAO.Recordset

  ・・・

  w_gyo = Me![中項目連番]
  w_sql_W = "SELECT * FROM Q_見積明細中項目クエリ WHERE [中項目連番] >= " & w_gyo & " order by 中項目連番 "
  Set qd = CurrentDb.CreateQueryDef("", w_sql_W)
  qd.Parameters(0) = Forms!F_見積書明細大項目!大項目No
  Set W_siire_M = qd.OpenRecordset

  ・・・
・ツリー全体表示

【9897】Re:テキストデータの読込について
質問  NEMOTO  - 07/10/1(月) 18:24 -

引用なし
パスワード
   ▼hatena さん:
▼hatena さん:
こんばんは
d:\Tkyuujitsu.txtテキストデータには下記データで
12000/01/01元旦
22000/01/02休日
32000/01/03休日

Const txt_name As String = "d:\Tkyuujitsu.txt"
Dim intfilenum As Integer
Dim index As Double
Dim filedata As String * 31

intfilenum = FreeFile
Open txt_name For Random As #intfilenum Len = Len(filedata)
index = 1
Do Until EOF(intfilenum)
Get #intfilenum, index, filedata

読込むと桁ずれしてしまいます。
12000/01/01
22000/01/02
32000/01/03
にするとうまく読込めます。
全角で読込むとうまくいきません。
よろしくお願いします
・ツリー全体表示

【9896】Re:テキストデータの読込について
回答  hatena  - 07/10/1(月) 17:38 -

引用なし
パスワード
   >レベルが低いのはわかっています。
>自分なりにがんばりますのでよろしくお願いします。

どんな形式のテキストファイルなのか、
どのような編集をしたいのか、
詳細がわからないとこれ以上は回答できません。

前記の参照先、ヘルプ、等で自分なりにコードを書いて、
どこまでできて、どこで、どのようにうまくいかないのか、
説明して質問してください。
・ツリー全体表示

【9895】Re:OpenRecordset ODBC呼出が失敗
発言  人参  - 07/10/1(月) 17:08 -

引用なし
パスワード
   雅さん、こんにちは。

>>「S1000:[Oracle][ODBC][Ora]ORA-00911:文字が無効です。」
>
>これがOracleでだしてきているエラーです。
>SQLの内容が正しいかを確認してみてください。
>エンタープライズマネージャとかで実行できますか?
>問題なければDSNの設定に問題がないか確認してください。

エラーの内容は理解しましたが、何故そのようになるのか・・。
最初の質問でも書いていますが、
【SEL_SQL = "SELECT * FROM TSY1 WHERE AREA_CD = 'TOKYO';"】
は、ちゃんと動くんです。(※同テーブルの別項目を条件とした検索)
このことにより、DSNの設定には問題がないと考えております。
また、SQLの内容にも疑う部分が・・。
【SEL_SQL = "SELECT * FROM TSY1 WHERE NENDO = '2007';"】
としただけで、エラーになってしまうんです。
DB上NENDOという項目はあります。VARCHAR2(4)

特殊文字など使用していないんですけどねぇ・・。(^^;
・ツリー全体表示

168 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1083215
(SS)C-BOARD v3.8 is Free