Microsoft Access Club Access超初心者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトルMoveFirstで作るテーブルに固定値を入れ、作った結果をエクスポートしたい
記事No83021
投稿日: 2016/10/28(Fri) 10:55
投稿者ルカ
解決済: ON
OS: Windows7 64Bit
Access Version: 2010


■状況
Accessでエラーチェック(重複登録など)を行い
ユーザから提供してもらう情報に何項目か追加して、インポート用のデータを作りたい。

出力用データの項目数、項目名が変更になったため、前任者が作ったAccessを修正中。
カラム名変更、当てはめるカラムの変更はできたものの
あるカラムに固定数値を設定することができない。

また、Textファイルの出力まで書かれているものの、出力しようとするとエラーになる。



■下記で利用しているテーブルにあるカラム名

"エラーデータ"
  レコードNo | 利用者ID | 利用者氏名 | Wi-FI MACアドレス | 機器名 | 可決/否決
"MacAdd"
  MACアドレス | 端末名 | 端末ユーザー名 | パスワード種別 | パスワード | 有効期限 |備考

※"MacAdd"のパスワード種別は固定で「0」を設定したい。



■Accessクラスオブジェクトの中身(抜粋)
----------------------------------------------------------------
Private Sub ファイル作成btn_Click()

' 変数定義

Dim NowWrk As Workspace
Dim NowDB As Database
Dim NowDS1, NowDS2 As Recordset
Dim Str_WriteFile As String

' 準備

Set NowWrk = DBEngine.Workspaces(0)
Set NowDB = NowWrk.Databases(0)
Set NowDS1 = NowDB.OpenRecordset("エラーデータ")
Set NowDS2 = NowDB.OpenRecordset("MacAdd")

' myspデータ作成

NowDS1.MoveFirst

Do Until NowDS1.EOF

If ((NowDS1![可決/否決] = "") Or (IsNull(NowDS1![可決/否決]) = True)) Then
NowDS2.AddNew
NowDS2![MACアドレス] = NowDS1![Wi-FI MACアドレス]
NowDS2![端末名] = NowDS1![利用者ID]
NowDS2![端末ユーザー名] = NowDS1![利用者氏名]
NowDS2![パスワード] = NowDS1![Wi-FI MACアドレス]
NowDS2.Update

End If

NowDS1.MoveNext

Loop

NowDS1.Close
NowDS2.Close


' 登録ファイルの書き出し

Str_WriteFile = "\\mydb\F\WiFiMac\" & Me![登録ファイル名]
DoCmd.TransferText acExportDelim, "MacAdd_Exp", "MacAdd", Str_WriteFile, True


' 完了メッセージの表示

MsgBox "登録ファイルの作成を完了しました!", vbOKOnly, "ファイル作成完了"



End Sub

タイトルRe: MoveFirstで作るテーブルに固定値を入れ、作った結果をエクスポートしたい
記事No83022
投稿日: 2016/10/28(Fri) 13:31
投稿者hatena
解決済: ON
> あるカラムに固定数値を設定することができない。

> ※"MacAdd"のパスワード種別は固定で「0」を設定したい。

NowDS2.AddNew
NowDS2![MACアドレス] = NowDS1![Wi-FI MACアドレス]
NowDS2![端末名] = NowDS1![利用者ID]
NowDS2![端末ユーザー名] = NowDS1![利用者氏名]
NowDS2![パスワード] = NowDS1![Wi-FI MACアドレス]
NowDS2![パスワード種別] = 0 '←これを追加
NowDS2.Update

ただ、テーブルのデザインで、「パスワード種別」の「規定値」プロパティに 0 を設定しておけば、上記の追加コードは不要。

> また、Textファイルの出力まで書かれているものの、出力しようとするとエラーになる。

エラーメッセージはなんでしょうか。また、デバッグボタンを押すとどのコードが選択表示されますか。


とりあえず、変数定義は下記のように記述したほういいですね。

Dim NowWrk As DAO.Workspace
Dim NowDB As DAO.Database
Dim NowDS1As DAO.Recordset, NowDS2 As DAO.Recordset


Dim NowDS1, NowDS2 As Recordset だと NowDS1 はバリアント型の変数になります。

タイトルRe^2: MoveFirstで作るテーブルに固定値を入れ、作った結果をエクスポートしたい
記事No83024
投稿日: 2016/10/28(Fri) 17:30
投稿者ルカ
解決済: ON
> NowDS2![パスワード種別] = 0 '←これを追加
>
> ただ、テーブルのデザインで、「パスワード種別」の「規定値」プロパティに 0 を設定しておけば、
> 上記の追加コードは不要。

テーブルのデザインでは「0」が入らなかったのですが
コード追記で無事に自動的に「0」が入るようになりました。

> > また、Textファイルの出力まで書かれているものの、出力しようとするとエラーになる。
>
> エラーメッセージはなんでしょうか。また、デバッグボタンを押すとどのコードが選択表示されますか。

DoCmd.TransferText… で指定しているエクスポート定義がうまく読み込めていなかったようです。
エクスポート定義を再作成したところ出力できるようになりました。

ご指摘いただいた内容で無事に解決することができました。
ありがとうございます。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る