Access VBA質問箱 IV

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

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


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

【11684】Re:csvファイルのインポートがおかしい
質問  momo  - 10/6/10(木) 13:48 -

引用なし
パスワード
   ▼247b様
ご回答ありがとうございます。

>テキストファイルの生成はWindowsで行っているのでしょうか。
生成に関しては、Javaで行っております。なので、Windowsになるのでしょうか。
・ツリー全体表示

【11683】Re:AccessVBAのフォームサイズがデザイナ...
発言  247b  - 10/6/10(木) 13:48 -

引用なし
パスワード
   こんにちわ。

同じ現象かわかりませんが、デザインビューのウィンドウサイズを、実行時のウィンドウのサイズにきっちり合わせようとすると、何故か実行時のウィンドウが小さくなるという現象がACCESSには昔からあります。
そういう仕様とあきらめていました。仕方がないので、デザインビューのウィンドウサイズを実行時のウィンドウサイズより大きく取るようにして対処しています。
解決になるかどうかは怪しいですが、ご参考まで。
・ツリー全体表示

【11682】Re:csvファイルのインポートがおかしい
発言  247b  - 10/6/10(木) 13:40 -

引用なし
パスワード
   こんにちわ。

見た感じでは、改行コードがWindowsのコードと合致してないせいのように見えます。
テキストファイルの生成はWindowsで行っているのでしょうか。
UNIXで作成したテキストだったりすると、Windowsでは改行コードを認識できず、このような現象になることがあります。
・ツリー全体表示

【11681】csvファイルのインポートがおかしい
質問  momo  - 10/6/10(木) 11:09 -

引用なし
パスワード
   お世話になります。

プログラムを実行すると、一行のみインポートされます。
対象のcsvファイルの中身は1行以上あります。
内容は、列名はなく、一行目から実データになります。
▼csv中身
TEST部\TEST室,admin,20100610,A000001,電子帳票名.txt




TEST部\TEST室,admin,20100610,A000100,電子帳票名.txt

▼プログラム
Option Compare Database
Option Explicit

Private Sub EventLogAccess_Click()
Dim txtData As String
Dim FNo As Long
Dim arrData As Variant
Dim i As Integer
Dim Con As New ADODB.Connection
Dim Rec As New ADODB.Recordset
Dim strFilePath As String
Dim returnValue As Long
 
  WizHook.Key = 51488399

  returnValue = WizHook.GetFileName( _
             0, "", "", "", strFilePath, "", _
             "CSVファイル (*.csv)|*.csv", _
             0, 0, 0, True _
             )
  WizHook.Key = 0
 
  If returnValue <> 0 Then
    Exit Sub
  End If

  Set Con = CurrentProject.Connection
 
  Con.Execute "Delete From 電子帳票ACCESS実績"
  Rec.Open "電子帳票ACCESS実績", Con, adOpenDynamic, adLockOptimistic

  FNo = FreeFile
 
  Open strFilePath For Input As #FNo
 
  On Error GoTo ErrHndl
 
  Con.BeginTrans
  
    Do Until EOF(FNo)
      Line Input #FNo, txtData
      arrData = Split(txtData, ",")

        Rec.AddNew
        
        Rec("部門") = arrData(0)
        Rec("使用者") = arrData(1)
        Rec("日付") = arrData(2)
        Rec("帳票コード") = arrData(3)
        Rec("帳票名") = arrData(4)
  
        Rec.Update
    Loop
 
  Close #FNo
  Rec.Close
  Set Rec = Nothing
 
  Con.CommitTrans
  Con.Close
  Set Con = Nothing
 
  Exit Sub

ErrHndl:
 
  Close #FNo
  Con.RollbackTrans
  Con.Close
  Set Con = Nothing
 
  MsgBox "以下のエラーが発生したためロールバックしました。" & vbCrLf & _
      Err.Description, vbCritical
   
End Sub


▼実行結果
TEST部\TEST室,admin,20100610,A000001,電子帳票名.txtTEST部
↑のように、帳票名の後ろになぜか、次行の部門の一部が追加された状態で
一行だけインポートされます。

後、電子帳票名.txtの後ろに追加されるTEST部の文字の大きさが変です。
例えばカーソルをずらすと、漢字の半分のところにカーソルがきます。
通常は、一文字づつカーソルがずれていくと思うのですが、変です。

説明がへたくそで申し訳ないですが、宜しくお願い致します。
・ツリー全体表示

【11680】Re:名寄せについて
発言  独覚  - 10/6/9(水) 9:23 -

引用なし
パスワード
   解決したのであればこちらのサイトの基本方針

>マルチポストについて
>別のサイト(掲示板)にまったく同じ目的の投稿をすることを、一般に「マルチポスト」といいます。
>当質問箱では、マルチポストは原則認めています。
>つまり、ほかのサイトで質問したことをこのサイトで質問してもかまわないということです。

>しかし、もしマルチポストをするのなら、可能な限り「○○にも同じ質問を出しました」ということを宣言してください。
>そして、仮に他のサイトで解決したのなら、ここにも必ずその顛末を書いてください。
>質問しっぱなし、というのはモラルに反します。
>「解決したからいいや」というのではありません。

>また、マルチポストを明示的に禁止しているサイトとのマルチポストをしてはいけません。

に従ってマルチポスト先にも解決報告をきちんと行ってください。
(もっともマルチポスト先の二つ(もっとあるかもしれませんが)ともマルチポストを明示的に禁止しているのですが)

http://www.moug.net/faq/viewtopic.php?t=51867&highlight=%A5%DE%A5%EB%A5%C1%A5%DD%A5%B9%A5%C8

http://www.accessclub.jp/bbs3/wforum.cgi?mode=allread&no=159396&page=0
・ツリー全体表示

【11679】Re:名寄せについて
お礼  NNH  - 10/6/7(月) 17:56 -

引用なし
パスワード
   早速のご返信、ありがとうございますm(−−)m
おかげさまで、意図するものができました。

またなにかありましたら、よろしくお願いします。

▼超初心者 さん:
>▼NNH さん:
>
>素人考えですが・・・^^;;
>
>集計クエリで、
>IDにてグループ化し、
>他の項目は、最大 or 最小 or 先頭 or 最後 で
>抽出すると、いい感じ(?)にならないでしょうか。
>
>・・・・出来なかったらゴメンなさい。
・ツリー全体表示

【11678】Re:名寄せについて
発言  超初心者  - 10/6/7(月) 13:31 -

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

素人考えですが・・・^^;;

集計クエリで、
IDにてグループ化し、
他の項目は、最大 or 最小 or 先頭 or 最後 で
抽出すると、いい感じ(?)にならないでしょうか。

・・・・出来なかったらゴメンなさい。
・ツリー全体表示

【11677】名寄せについて
質問  NNH  - 10/6/7(月) 12:51 -

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

テーブル名:顧客データ
フィールド:ID、姓、名、電話番号、メールアドレス

11111 山田 花子 00-0000-0000 
22222 鈴木 太郎 00-0000-1111 bbb@yahoo.co.jp
11111 山田           abc@yahoo.co.jp
33333 佐藤 花子 00-1111-0000 ccc@yahoo.co.jp

上記のようなデータがある場合に、
「IDと姓が一致したら空白セルを補完しあって1行にする」
処理を行いたいと思っています。

11111 山田 花子 00-0000-0000 abc@yahoo.co.jp
22222 鈴木 太郎 00-0000-1111 bbb@yahoo.co.jp
33333 佐藤 花子 00-1111-0000 ccc@yahoo.co.jp

どなたかご教授いただければと思います。

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

【11676】AccessVBAのフォームサイズがデザイナよ...
質問  さる E-MAIL  - 10/6/4(金) 23:01 -

引用なし
パスワード
   AccessVBAのフォームサイズがデザイナより
小さく表示されてしまうという現象に悩んでいます。

ある事をすると、発生しなくなるのですが、発生しなく
なった後、同じ現象を作ることが出来無い為、何が原因で
発生していたのか分からずに、悩んでいます。

同様の現象を体験した方、原因を知っている方、
是非ともお力を貸してください。

※説明が難しかったので、実際の手順を細かく記載いたします。

<開発環境>
Access2003

<現象>
1.TEST.mdbを開く(Shift押さずに起動)
2.Form_AAAを開く

結果:Form_AAAの幅の大きさが、デザインビューで作成している
   デザインより、1マス(※1)程度、縮んで表示される。

(※1)
1マスとは、AccessVBAのデザインビューの1マスのことを指します。

<改善方法>
1.TEST.mdbを開く(Shift押して編集できる状態にする)
2.Form_AAAをデザインビューで開き、何も変更せずに上書き保存する
3.TEST.mdbを閉じる
4.TEST.mdbを開く(Shift押さずに起動)
5.Form_AAAを開く

結果:Form_AAAの幅の大きさが、デザインビューで作成している
   デザイン通り表示される。
   
よろしくお願いいたします。
・ツリー全体表示

【11675】Re:対象フォルダ内のcsvファイルを一括で...
発言  超初心者  - 10/6/4(金) 19:06 -

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

エクセルのものですが、アクセスでも使えるかと思います。
h t t p://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html

一覧の取得ができたら、あとは単一で取り込む処理の繰り返し!?


参考になれば幸いです。
・ツリー全体表示

【11674】対象フォルダ内のcsvファイルを一括で取...
質問  momo  - 10/6/4(金) 16:07 -

引用なし
パスワード
   お世話になります。

毎月に一度(yyyymm)というフォルダ名でフォルダが作成されます。
yyyymmフォルダにはそのフォルダ名の月に対応したyyyymmdd.csvが日付分作成されます。
▼201006
  20100601.csv
  20100602.csv
  ・
  ・
  20100630.csv

のような感じです。

これを一括で取込む方法はないでしょうか。

また参考になりそうなサイト等ありましたら、ご教示ください。
宜しくお願い致します。
・ツリー全体表示

【11673】Re:txtファイルの取込について
発言  sou  - 10/6/2(水) 9:45 -

引用なし
パスワード
   方針が少しずれますが参考になれば。

SELECT *
FROM [Text;DATABASE=D:\;HDR=NO;].テストテキスト.txt;

クエリのSQLビューで上記のように書いて直接見ることもできます。
あとは少しいじって追加クエリにしてほかのテーブルに追加できるようにすればいいと思います。
固定長データだとこのままでは使えませんが…

FROM句の書き方
FROM [Text;DATABASE=(フォルダ名);HDR=NO;].(ファイル名).txt;
HDR=YESとすれば先頭行を列名とすることができます。
・ツリー全体表示

【11672】Re:MDBでMDE風みたいな
回答  YU-TANG  - 10/6/1(火) 16:04 -

引用なし
パスワード
   こんにちは、YU-TANG です。

> Q1
> MDEでも手動調整した設定を保持させることは、可能でしょうか

はい。
フォームを閉じるときに設定を退避して、開くときに復元すればいいだけです。

> Q2
(中略)
> 他に注意すべき事項等とか、予想される不具合とか有りますか

その MDB の作りに依存するので、第三者には想定しようがないです。
MDE であることをアテにして実装した箇所(あるいは実装しなかった
箇所)があれば、そこが留意点になるとは思いますが、そもそも
あるのかないのか、あったとしてどこなのか、第三者には知りようが
無いので、おそらく最良のアドバイスは、しっかりテストしてください、
ということになるでしょう。

ただ、率直な感想を言うなら(感想なんか訊いてないでしょうが)、
MDE のように振舞うインターフェイスが欲しいなら、すなおに MDE を
使ったほうがいいように思います。

それでは。
・ツリー全体表示

【11671】Re:データの有無で判定 再度すみません
お礼  Mr.Child  - 10/6/1(火) 15:14 -

引用なし
パスワード
   ▼超初心者 さん:
>▼Mr.Child さん:
>
>半ば強引に(!?)クエリーにまとめて見ました^^;;
>
>
>SELECT UQ_2.id, data AS 結果, UQ_2.回数
>FROM (
>SELECT 顧客id AS id, [1回目] AS data, "1回目" AS 回数
>FROM テーブルA WHERE ([1回目] Is Not Null)
>union
>SELECT 顧客id AS id, [2回目] AS data, "2回目" AS 回数
>FROM テーブルA WHERE ([2回目] Is Not Null)
>union
>SELECT 顧客id AS id, [3回目] AS data, "3回目" AS 回数
>FROM テーブルA WHERE ([3回目] Is Not Null)
>union
>SELECT 顧客id AS id, [4回目] AS data, "4回目" AS 回数
>FROM テーブルA WHERE ([4回目] Is Not Null)
>union
>SELECT 顧客id AS id, [5回目] AS data, "5回目" AS 回数
>FROM テーブルA WHERE ([5回目] Is Not Null)
>) AS UQ_2
>INNER JOIN (
>SELECT id, MAX(回数) AS 回
>FROM (
>SELECT 顧客id AS id, [1回目] AS data, "1回目" AS 回数
>FROM テーブルA WHERE ([1回目] Is Not Null)
>union
>SELECT 顧客id AS id, [2回目] AS data, "2回目" AS 回数
>FROM テーブルA WHERE ([2回目] Is Not Null)
>union
>SELECT 顧客id AS id, [3回目] AS data, "3回目" AS 回数
>FROM テーブルA WHERE ([3回目] Is Not Null)
>union
>SELECT 顧客id AS id, [4回目] AS data, "4回目" AS 回数
>FROM テーブルA WHERE ([4回目] Is Not Null)
>UNION
>SELECT 顧客id AS id, [5回目] AS data, "5回目" AS 回数
>FROM テーブルA WHERE ([5回目] Is Not Null)
>) AS UQ
>GROUP BY id
>) AS SQ ON
>UQ_2.id=SQ.id And UQ_2.回数=SQ.回
>
>
>見づらくなってすみません^^;
>
>UQ、UQ_2、SQ をそれぞれ別クエリにすると
>少しは見やすくなるかも!?

超初心者 さんって、初心者さんでは失礼です、、、、

出来ました!

有難うございました。
・ツリー全体表示

【11670】Re:データの有無で判定 再度すみません
発言  超初心者  - 10/6/1(火) 15:08 -

引用なし
パスワード
   ▼Mr.Child さん:

半ば強引に(!?)クエリーにまとめて見ました^^;;


SELECT UQ_2.id, data AS 結果, UQ_2.回数
FROM (
SELECT 顧客id AS id, [1回目] AS data, "1回目" AS 回数
FROM テーブルA WHERE ([1回目] Is Not Null)
union
SELECT 顧客id AS id, [2回目] AS data, "2回目" AS 回数
FROM テーブルA WHERE ([2回目] Is Not Null)
union
SELECT 顧客id AS id, [3回目] AS data, "3回目" AS 回数
FROM テーブルA WHERE ([3回目] Is Not Null)
union
SELECT 顧客id AS id, [4回目] AS data, "4回目" AS 回数
FROM テーブルA WHERE ([4回目] Is Not Null)
union
SELECT 顧客id AS id, [5回目] AS data, "5回目" AS 回数
FROM テーブルA WHERE ([5回目] Is Not Null)
) AS UQ_2
INNER JOIN (
SELECT id, MAX(回数) AS 回
FROM (
SELECT 顧客id AS id, [1回目] AS data, "1回目" AS 回数
FROM テーブルA WHERE ([1回目] Is Not Null)
union
SELECT 顧客id AS id, [2回目] AS data, "2回目" AS 回数
FROM テーブルA WHERE ([2回目] Is Not Null)
union
SELECT 顧客id AS id, [3回目] AS data, "3回目" AS 回数
FROM テーブルA WHERE ([3回目] Is Not Null)
union
SELECT 顧客id AS id, [4回目] AS data, "4回目" AS 回数
FROM テーブルA WHERE ([4回目] Is Not Null)
UNION
SELECT 顧客id AS id, [5回目] AS data, "5回目" AS 回数
FROM テーブルA WHERE ([5回目] Is Not Null)
) AS UQ
GROUP BY id
) AS SQ ON
UQ_2.id=SQ.id And UQ_2.回数=SQ.回


見づらくなってすみません^^;

UQ、UQ_2、SQ をそれぞれ別クエリにすると
少しは見やすくなるかも!?
・ツリー全体表示

【11669】Re:データの有無で判定 再度すみません
質問  Mr.Child  - 10/6/1(火) 14:20 -

引用なし
パスワード
   ▼超初心者 さん:
>▼Mr.Child さん:
>
>> データフィールド名と型
>> 1.顧客id(数値)
>
>> id 〜
>> a001 〜
>
>フィールド[顧客id]はテキスト型?
>それとも、[id]にするときに加工?
>
>とりあえず、前者として、
>
>
>SELECT id, MAX(data) AS 結果
>FROM (
>SELECT 顧客id AS id, [1回目] AS data
>FROM テーブルA WHERE ([1回目] Is Not Null)
>union
>SELECT 顧客id AS id, [2回目] AS data
>FROM テーブルA WHERE ([2回目] Is Not Null)
>union
>SELECT 顧客id AS id, [3回目] AS data
>FROM テーブルA WHERE ([3回目] Is Not Null)
>union
>SELECT 顧客id AS id, [4回目] AS data
>FROM テーブルA WHERE ([4回目] Is Not Null)
>union
>SELECT 顧客id AS id, [5回目] AS data
>FROM テーブルA WHERE ([5回目] Is Not Null)
>) AS UQ
>GROUP BY id
>
>こんな感じでしょうか。
>
>
>データの保持方法を見直した方が良いかもしれませんね^^;;

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

早速のご回答ありがとうございます。
クエリー試させていただきました。

分りにくくてすみません。回数目のMAX値が抽出されましたが、
最終回数目にある数値そのままが欲しいのです。

テーブルA

id  1回目 2回目 3回目 4回目 5回目
a001  1   2   1   5   3
a002  1   1       4
a003     3   4      2
a004  2       3   1  
a005         7
:
:

以上のように、idが存在する間に、最高回数目のフィールドにある
数値だけが欲しいのです。回数目には(null)も存在します。

欲しいデータ

id  結果
a001  3
a002  4
a003  2
a004  1
a005  7


という具合です。

何度もすみません。
・ツリー全体表示

【11668】Re:データの有無で判定
発言  超初心者  - 10/6/1(火) 13:31 -

引用なし
パスワード
   ▼Mr.Child さん:

> データフィールド名と型
> 1.顧客id(数値)

> id 〜
> a001 〜

フィールド[顧客id]はテキスト型?
それとも、[id]にするときに加工?

とりあえず、前者として、


SELECT id, MAX(data) AS 結果
FROM (
SELECT 顧客id AS id, [1回目] AS data
FROM テーブルA WHERE ([1回目] Is Not Null)
union
SELECT 顧客id AS id, [2回目] AS data
FROM テーブルA WHERE ([2回目] Is Not Null)
union
SELECT 顧客id AS id, [3回目] AS data
FROM テーブルA WHERE ([3回目] Is Not Null)
union
SELECT 顧客id AS id, [4回目] AS data
FROM テーブルA WHERE ([4回目] Is Not Null)
union
SELECT 顧客id AS id, [5回目] AS data
FROM テーブルA WHERE ([5回目] Is Not Null)
) AS UQ
GROUP BY id

こんな感じでしょうか。


データの保持方法を見直した方が良いかもしれませんね^^;;
・ツリー全体表示

【11667】データの有無で判定
質問  Mr.Child  - 10/6/1(火) 13:00 -

引用なし
パスワード
   いつもありがとうございます。
厳しい時は助けて頂いております。今回は以下の事例です。

テーブルA
データフィールド名と型
1.顧客id(数値)
2.1回目(数値)
3.2回目(数値)
4.3回目(数値)
5.4回目(数値)
6.5回目(数値)

テーブルA

id  1回目 2回目 3回目 4回目 5回目
a001  1   2   1   5   6
a002  1   1       4
a003     3   4      5
a004  2       3   6  
a005         7
:
:

以上のように、idが存在する間に、最高回数目のフィールドにある
数値だけが欲しいのです。回数目には(null)も存在します。

欲しいデータ

id  結果
a001  6
a002  4
a003  4
a004  6
a005  7




以上ですが、何卒宜しくお願い致します。
・ツリー全体表示

【11666】Re:VBAの文字列結合について
お礼  白髪頭  - 10/5/27(木) 13:50 -

引用なし
パスワード
   解決しました!

ループ文が作成できずにIF文をExcelのオートフィルタ機能を使い
VBAに転記して使っていました。

本当に短い行で使えましたので感謝しています。

これからも宜しくお願いします

本当に、有難うございました。

by 白髪頭
・ツリー全体表示

【11665】Re:VBAの文字列結合について
回答  小僧  - 10/5/27(木) 13:05 -

引用なし
パスワード
   ▼白髪頭 さん:
こんにちは。

> Forms![F-売上伝票]!単価1= tanka

上記の書き方を明示的に

Forms("F-売上伝票").Controls("単価1") = tanka

と書いても同じ動作になります。
こちらを応用して

Forms("F-売上伝票").Controls("単価" & i ) = tanka

の様にすると Loop での処理が可能になりますね。
・ツリー全体表示

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