Access VBA質問箱 IV

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

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


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

【7650】Re:EXCELデータの取込み
回答  小僧  - 06/4/6(木) 0:27 -

引用なし
パスワード
   ▼コマ さん:
こんばんは。

>テーブルの最後に追加したいのですが、先頭から追加されます。

Accessに限らず、データベースについて
特に指定をしない限りは並び順は保障されません。

MS技術情報より MDB のレコードの並び順について
http://support.microsoft.com/default.aspx?scid=kb;ja;834927


ソートする順序を決めるフィールドが必要になってきますね。
・ツリー全体表示

【7649】EXCELデータの取込み
質問  コマ  - 06/4/5(水) 19:52 -

引用なし
パスワード
   コマと申します。
既にデータがあるテーブルにEXCELデータをインポートする時に
テーブルの最後に追加したいのですが、先頭から追加されます。
既存のデータの最後に追加するには何か指定がいるのでしょうか
ご存知の方、お教え下さい。
・ツリー全体表示

【7648】Re:特定のファイルを指定して…
発言  たぬき  - 06/4/5(水) 12:36 -

引用なし
パスワード
   ▼TB1 さん:
ACCESSからEXCELにデータを書き出すことをエクスポート(出力)
EXCELからACCESSにデータを持ってくることをインポートとします。(入力)

エクスポートはファイルが存在すれば上書きされます。xlsファイル
インポートの場合テーブルにデータが追加されます。

>実行のコードで
>
>Case "csv"
>   DoCmd.TransferText acExportDelim, , Me.入力ファイルパス, strFileName, True
>
>と「部品マスタ」を「入力ファイルパス」に差換えたところ、ファイルパスが見つかりません、とエラー3011が出ました。
>リンクするオブジェクトが見つかりません、のエラーです。
>どうしたらいいかわかりません。
>教えてください。

Me.入力ファイルパス
この部分はACCESS側のテーブルあるいはクエリーを指定する場所です。
あまり変えるような場所ではないと思いますが・・・
テキストボックスに出力したいテーブルやクエリーを書けば問題は
ありません。

しかし「入力ファイルパス」の文字から、書き込みたいファイルの
場所や名前を指定したいように見受けられます。
strFileNameの場所に書けばそのファイルが作成されます。

ちなみに出力する先の設定はACCESS2000の場合ならコモンダイアログ
を使うのが便利です。
http://homepage1.nifty.com/MADIA/vb/API/GetSaveFileName.htm
・ツリー全体表示

【7647】Re:特定のファイルを指定して…
質問  TB1  - 06/4/5(水) 11:36 -

引用なし
パスワード
   実行のコードで

Case "csv"
   DoCmd.TransferText acExportDelim, , Me.入力ファイルパス, strFileName, True

と「部品マスタ」を「入力ファイルパス」に差換えたところ、ファイルパスが見つかりません、とエラー3011が出ました。
リンクするオブジェクトが見つかりません、のエラーです。
どうしたらいいかわかりません。
教えてください。
・ツリー全体表示

【7646】Re:特定のファイルを指定して…
質問  TB1  - 06/4/5(水) 10:12 -

引用なし
パスワード
   ▼たぬき さん:
そうなんです。そうすると、特定のファイルからしかインポートされないですよね。そこで、TABLENAME の部分を任意のファイルに置き換えられるようなものにしたいのです。
宜しくお願いします。
・ツリー全体表示

【7645】Re:テキストボックスへの表示
回答  小僧  - 06/4/4(火) 22:28 -

引用なし
パスワード
   ▼青首 さん:
こんばんは。

青首さんへの回答の為に作った MDB を紛失してしまい、
慌てて作った MDB ですので、何か抜けている所があるかもしれませんが、

Private Sub Form_Unload(Cancel As Integer)
Dim strSQL As String
 
  strSQL = "INSERT INTO T_日報情報 ( 日付, 社員ID, 部署ID ) " _
      & "SELECT T_Work.日付, T_Work.社員ID, T_社員.部署ID " _
      & "FROM T_Work " _
      & "INNER JOIN T_社員 ON T_Work.社員ID = T_社員.社員ID;"

  DoCmd.SetWarnings False
    DoCmd.RunSQL strSQL
  DoCmd.SetWarnings True

 
  strSQL = "UPDATE T_日報情報 INNER JOIN T_Work " _

…以下は一緒です


の様に、INSERT文のSQLを変更されてみて下さい。

テーブルについては、T_日報情報の方にだけ
部署ID フィールドを作成して下さい。
・ツリー全体表示

【7644】Re:テキストボックスへの表示
質問  青首  - 06/4/4(火) 20:02 -

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

>年度末に仕事が立て込んでしまいまして返信が遅れました。すみません。

いえ、覚えていてもらえてうれしいです。

>フォームのUnload時のSQLに
>T_Work と T_社員を 結合したものを指定する必要が出てきますね。

今、読み込み解除時イベントには下記のようなコードが
書いてあるのですが、「T_Work と T_社員を 結合したものを指定する」
というのはどのような形になるのでしょうか。

Private Sub Form_Unload(Cancel As Integer)
Dim strSQL As String
 
   strSQL = "INSERT INTO T_日報情報 ( 日付, 社員ID )" _
      & "SELECT 日付, 社員ID " _
      & "FROM T_Work;"

  DoCmd.SetWarnings False
    DoCmd.RunSQL strSQL
  DoCmd.SetWarnings True

 
  strSQL = "UPDATE T_日報情報 INNER JOIN T_Work " _
      & "ON (T_日報情報.社員ID = T_Work.社員ID) AND " _
      & "(T_日報情報.日付 = T_Work.日付) " _
      & "SET T_日報情報.早出 = T_Work.早出, " _
      & "T_日報情報.残業 = T_Work.残業, " _
      & "T_日報情報.残業区分ID = T_Work.残業区分ID, " _
      & "T_日報情報.注文先ID = T_Work.注文先ID, " _
      & "T_日報情報.メニューNo = T_Work.メニューNo;"
  DoCmd.RunSQL strSQL

  strSQL = "DELETE FROM T_Work"
  DoCmd.RunSQL strSQL
End Sub
・ツリー全体表示

【7643】Re:特定のファイルを指定して…
発言  たぬき  - 06/4/4(火) 17:05 -

引用なし
パスワード
   ▼TB1 さん:
まずTransferTextの引数は

acExportDelim等
定義名
テーブル名
ファイル名
見出し行
以下略

DoCmd.TransferText acExportDelim, , Tablename, strFileName, True
のようになると思います。
・ツリー全体表示

【7642】Re:特定のファイルを指定して…
質問  TB1  - 06/4/4(火) 15:45 -

引用なし
パスワード
   そして、下記☆印で囲んだところが、元々は

DoCmd.TransferText acExportDelim, , "部品マスタ", strFileName, True

となっていたのですが、部品マスタではなく、選択したファイルにしたいので、削除して、実行しました。

----------下記参照------------

Private Sub 出力実行_Click()
 Dim strFileName As String
 Dim strType As String
 
 If IsNull(Me.出力ファイルパス) = True Or Len(Me.出力ファイルパス) = 0 Then
  Exit Sub
 End If
 If IsNull(Me.出力ファイルパス) = True Or Len(Me.出力ファイルパス) = 0 Then
  Exit Sub
 End If
 
 strFileName = Me.出力ファイルパス
 Select Case Right(strFileName, 3)
 
  Case "csv"
 ☆☆DoCmd.TransferText acExportDelim, strFileName, True☆☆
   
  Case Else
   MsgBox "出力対象ファイル形式を選択してください。", vbOKOnly + vbCritical, ""
   
   
   Exit Sub
 End Select
 
 MsgBox "csv情報を" & Chr(13) & _
     strFileName & Chr(13) & _
     "に出力しました。", vbOKOnly + vbInformation, ""
End Sub

すると、そのラインが黄色くなってエラーになりました。当然といえば当然ですが、出力選択で選んだファイルをここに当てはめるにはどうしたらよいのでしょうか。
宜しくお願いします。
・ツリー全体表示

【7641】Re:特定のファイルを指定して…
質問  TB1  - 06/4/4(火) 15:07 -

引用なし
パスワード
   ▼たぬき さん:

>acExportDelimがacImportDelimでは?
たぬきさん、ご指摘ありがとうございます。
私、例によってコードがよくわからないまま質問しております。
悪しからずご了承ください。

イメージとしては
_    ______________
|_|   |______________|
ボタン   インポートしたいファイルパス
_    ______________
|_|   |______________|
ボタン   エクスポートしたいファイルパス
              _____
             | 実行  |
             |_____|


みたいなのがあって、AというCSVファイルをBというアクセスファイルに1日ごとの差分をバックアップしていきたいのです。

ご指摘のとおりまずやってみると、インポートしたいパス名が出てきました。しかし、これだけでは意味が無くて、これをエクスポートしたいファイルを選択して実行を押すと、アクセスのテーブルに上書きされているようにしたいのです。

まずはこのサンプルコードから、CSVファイルを特定のエクセルファイルに上書きできるようなコードを教えてもらえませんでしょうか。
宜しくお願いします。
・ツリー全体表示

【7640】Re:特定のファイルを指定して…
回答  たぬき  - 06/4/4(火) 13:35 -

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

acExportDelimがacImportDelimでは?
・ツリー全体表示

【7639】特定のファイルを指定して…
質問  TB1  - 06/4/4(火) 11:45 -

引用なし
パスワード
   宜しくお願いします。
日々出来てくるCSVファイルをアクセスの特定のテーブルに追加していきたいと思います。

出力先を選択するコードはあるサンプルからとって

Private Sub 出力ファイル選択_Click()
 Dim strFileName As String
 Dim strFilter As String
 Dim blnRet As Boolean
 
 strFilter = "エクセル(*.xls)" & vbNullChar & "*.xls" & vbNullChar & _
       "CSV(*.csv)" & vbNullChar & "*.csv" 
 Me.出力ファイルパス = Null
 blnRet = GetFileName_Save(strFilter, strFileName)
 If blnRet = True Then
  Me.出力ファイルパス = strFileName
 End If
End Sub

Private Sub 出力実行_Click()
 Dim strFileName As String
 Dim strType As String
 
 If IsNull(Me.出力ファイルパス) = True Or Len(Me.出力ファイルパス) = 0 Then
  Exit Sub
 End If
 If IsNull(Me.出力ファイルパス) = True Or Len(Me.出力ファイルパス) = 0 Then
  Exit Sub
 End If
 
 strFileName = Me.出力ファイルパス
 Select Case Right(strFileName, 3)
 
  Case "csv"
   DoCmd.TransferText acExportDelim, , "部品マスタ", strFileName, True
   
  Case Else
   MsgBox "出力対象ファイル形式を選択してください。", vbOKOnly + vbCritical, ""
   
   
   Exit Sub
 End Select
 
 MsgBox "部品マスタ情報を" & Chr(13) & _
     strFileName & Chr(13) & _
     "に出力しました。", vbOKOnly + vbInformation, ""
End Sub

となっていまして、テスト的にやってみると、サンプル上の特定した"部品マスタ"の情報が、指定したエクセルファイルに書き込まれます。

これを、特定ではなく選択したファイルを、選択したアクセスファイルのテーブルに追加書き込みしたいのです。

出力ファイル選択のコードを改造すれば入力ファイルも選択できるかと思ったのですが、簡単では無かったです。
大変漠然としていますが、なにか良い方法があれば教えてください。
宜しくお願いします。
・ツリー全体表示

【7638】あきらめることにします。
発言  木蓮  - 06/4/4(火) 10:24 -

引用なし
パスワード
   個人的に調べたのですが、
表形式のフォームでコンボボックスを絞り込むのは
難しいようですのであきらめることにします。

ありがとうございました。
・ツリー全体表示

【7637】Re:オブジェクトのイベントプロパティ
お礼  迷える子羊  - 06/4/3(月) 9:26 -

引用なし
パスワード
   ▼小僧 さん:
アドバイス、ありがとうございました。
新規MDBを作成して、フォームをインポートしたところ問題なく
動作するようになりました。

土日は休んでいましたが、ずっと心の隅でどうしようと
悩んでいたのが、一気に解消できました。
本当に感謝しています。ありがとうございました。
気持ちよく、開発作業が進みそうです。
・ツリー全体表示

【7636】Re:オブジェクトのイベントプロパティ
発言  小僧  - 06/4/2(日) 20:35 -

引用なし
パスワード
   ▼迷える子羊 さん:
こんばんは。

>エラーメッセージが表示されてしまいます。

まずは MS の技術情報から以下を確認されてみて下さい。

http://support.microsoft.com/?scid=kb;ja;436852&spid=2509&sid=54
http://support.microsoft.com/default.aspx?scid=kb;ja;282336

共に当てはまらない様でしたら、MDBが破損している可能性があります。

新規MDBを作成して、そちらから該当のフォームをインポートし
同じ事象が出てしまうかを確認されてみてはいかがでしょうか。
・ツリー全体表示

【7635】Re:データの並べ替えについて
発言  小僧  - 06/4/2(日) 20:19 -

引用なし
パスワード
   ▼SinjiM さん、Gin_II さん
こんばんは。

>以下のようなイメージを並べ替えたいです。
>
>Code  Name FLD1 FLD2 FLD3
>--------------------------
>code1  AAA   1  2  3
>code1  BBB   4  5  6
>code1  CCC   7  8  9
>・
>・
>
>      AAA      BBB      CCC
>--------------------------------------------------
>Code|FLD1|FLD2|FLD3|FLD1|FLD2|FLD3|FLD1|FLD2|FLD3|
>--------------------------------------------------
>code1 1  2  3  4  5  6  7  8  9
>
>クエリ(並べ替え後)を作りたいです。

上記のようなデータの持ち方はデータベースとして相応しくありません。
(データベースの正規化について調べてみて下さい。)

どうしても上記のように結果を出したいのであれば

TRANSFORM Max(P.FLD1) AS FLD1の最大
SELECT P.code
FROM [
SELECT
テーブル名.code,    
テーブル名.name & "_" & テーブル名.FLD1 AS FLD0,
テーブル名.FLD1
FROM テーブル名
UNION ALL
SELECT
テーブル名.code,
テーブル名.name & "_" & テーブル名.FLD2 AS 式1,
テーブル名.FLD2
FROM テーブル名
UNION ALL
SELECT
テーブル名.code,
テーブル名.name & "_" & テーブル名.FLD3 AS 式1,
テーブル名.FLD3
FROM テーブル名
]. AS P
GROUP BY P.code
PIVOT P.FLD0;

上記 SQL をクエリの SQL ビューに貼り付けて結果を確認されてみて下さい。
・ツリー全体表示

【7634】Re:テキストボックスへの表示
発言  小僧  - 06/4/2(日) 18:53 -

引用なし
パスワード
   ▼青首 さん:
こんばんは。

年度末に仕事が立て込んでしまいまして返信が遅れました。すみません。

>よろしければ、所属部署の情報を残しておく方法を教えていただければ、
>幸いです。


ちょっと手元に MDB がないので実際のSQL文を提示する事ができませんが、

フォームのUnload時のSQLに
T_Work と T_社員を 結合したものを指定する必要が出てきますね。
・ツリー全体表示

【7633】Re:ユニオンクエリについて
お礼  shin  - 06/4/1(土) 11:47 -

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


先程同じデータが摂れるようになりました。
又分からないことが有れば投稿させていただきますので
ご指導下さい。

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

【7632】初歩の質問
質問  10777 E-MAIL  - 06/4/1(土) 7:41 -

引用なし
パスワード
   VBAの言語で,や“や““や()や!の使い方がよくわかりません。
例えば、Me!大分類““のように““てなにかな?
・ツリー全体表示

【7631】オブジェクトのイベントプロパティ
質問  迷える子羊 E-MAIL  - 06/3/31(金) 16:41 -

引用なし
パスワード
   コンボボックスのイベントプロパティ:変更時 の所に
[イベント プロシージャ] を設定し、
クラスモジュールの「Changeイベント」の個所は、
まだ空の状態にしてあるのですが、以下のような
エラーメッセージが表示されてしまいます。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
「イベント プロパティに指定した式 変更時 でエラーが発生しました

 *マクロ名、ユーザ定義関数名、[イベント プロシージャ]以外の式が指定されています。
 *関数、イベント、マクロの評価でエラーが発生しました。
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

イベントプロパティには、[イベント プロシージャ]を設定しているのに
なぜこんな事が起きているのかわからず、苦しんでいます。
どなたか、詳しい方がいらっしゃいましたら、
回答の方、宜しくお願い致します。
・ツリー全体表示

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