Access VBA質問箱 IV

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

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


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

【5114】クエリで生年月日から、年齢の出し方
質問  サチチ  - 05/5/26(木) 13:42 -

引用なし
パスワード
   毎回、助けられてます。今回もお願いします。

クエリから、生年月日を入力したら、年齢が出る様に
したいのです。
そして、この年齢を分析という様にしたいのですが・・・。
例えば、20歳の人が何人いるか・・・という様な感じです。
クエリで、年齢を自動で出る様にして、上記のような事は
できますか?
・ツリー全体表示

【5113】フォーム上でSQLを流す
質問  ぶる  - 05/5/26(木) 13:35 -

引用なし
パスワード
   リストのSQL一覧から任意のものを選択すると
Txtsql(テキストボックス)にSQLが表示されます。
そのSQLを下の処理で流しています。


Private Sub cmdStrt_Click()

If IsNull(Me.Txtsql) Then
  MsgBox "処理内容が記述されていません。"
End If

'テキストボックスに入力されているSQLを実行
DoCmd.RunSQL Me.Txtsql

End Sub


UPDATE文・INSERT文・DELETE文はちゃんと流れるのですが
SELECT文を流すことが出来ません。
希望はSELECT文を流すと抽出されたレコードが別ウィンドウで開かれる
という処理が出来たらうれしいです。
・ツリー全体表示

【5112】続 フォーム作成
発言  バリュー  - 05/5/26(木) 13:17 -

引用なし
パスワード
   ▼バリュー さん:
おはようございます。

▼小僧 さん:
返信ありがとうございます。

ご提示された内容ですが、漠然としすぎていて回答がつきにくいと思われます。

▼:
すみません。
以下自分の説明を補いました。
よろしくお願いします。


1.現在のフォームはどうなっているのか。
  テキストボックスやコンボボックスなどのコントロールの配置
  単票フォーム・帳票フォーム

▼:
単票フォームになるかと思います。
「フォームウィザード」画面の
「フォームのレイアウトを指定してください。」の
単票形式(C)で作成しました。


2.検索したいテーブル構成
  フィールドの名前、データ型など

▼:
データ型はほとんどがテキスト型です。
ただ、DBの中にあるユニークとなる項目のデータ型は
数値型になっています。


3.検索するタイミング
  「実行ボタンを押したら」「コンボボックスで選んだら」など

▼:
検索するタイミングは、
「DBの中でユニークとなる項目を入力したら」です。


4.検索した結果の表示
  同じフォームに
  サブフォームに
  別の独立したフォームに など

▼:
検索した結果の表示は、
「同じフォームに」です。


5.修正のタイミング
  「修正したらすぐ」「実行ボタンを押したら」 など

▼:
修正のタイミングは、
「検索した結果の表示をさせたらすぐ」です。


具体的な内容をもう少しご提示して頂くと、回答がつき易くなるかと思われます。

▼:
すみません。誠にありがとうございます。

ACCESSがどんな言語からできているのか?
VBもしくはVBAからできているのか?
その点からわからず、

参考書を見てそこに書いてある作業をしたら
自分が行いたい動きをする開発になるのか?、、
不確かながらも手探りで進めている状況です。

また、自分からの説明不足の点がございましたら、
ご意見くださいませ。
よろしくお願いします。
・ツリー全体表示

【5111】Re:テキストボックスの内容を・・
お礼  ごろ  - 05/5/26(木) 12:58 -

引用なし
パスワード
   おかげ様で無事出来ました!
ありがとうございました
・ツリー全体表示

【5110】Re:検索結果をフォームで更新したい
質問  orange  - 05/5/26(木) 11:51 -

引用なし
パスワード
   Gin_IIさん、レスありがとうございます。

wRec.Open strSQL, wCNN, adOpenDynamic, adLockOptimistic
としたところ、フォーム上のデータの書き換えができるようになりました。
なので、環境などからくる問題ではなかったようです。すみませんでした。

ところがフォーム上、書き換えを行ってもレコードセットが
上手く取得できていないためテーブルの更新にはいたらない状況になってしまいました。

wRec.Open strSQL, wCNN, adOpenStatic,・・・・・
としていたときには
set me.Recordset = wRec
で、レコードセットがセットできたいたのですが、
wRec.Open strSQL, wCNN, adOpenDynamic, adLockOptimistic
に、修正するとセットできないのですよね。
レコードセットが取得できないので、フォームに結果を表示することももちろん
できなくなってしまいました。

よいアドバイスお願い致します。
・ツリー全体表示

【5109】Re:テキストボックスの内容を・・
発言  小僧  - 05/5/26(木) 11:02 -

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

>「テキストボックスの内容を一度テーブルに入れてそれをエクスポート」
>で合ってますでしょうか?

テーブルに保存する、という目的がエクスポートの為だけ
(今までの履歴を残すとかであれば別ですが)であれば
必要ないと思われます。

「テキスト内容」というテキストボックスの値を「.txt」の形式で出力する例です。

Private Sub 保存ボタン1_Click()
Dim FSO As Object
Dim Tex As Object
Dim OutPath As String
Dim OutFile As String

  OutPath = "C:\temp"
  OutFile = "test.txt"

  Set FSO = CreateObject("Scripting.FileSystemObject")
  Set Tex = FSO.CreateTextFile(OutPath & "\" & OutFile)
    Tex.WriteLine Me.テキスト内容
    Tex.Close
  Set Tex = Nothing
  Set FSO = Nothing

End Sub


Private Sub 保存ボタン2_Click()
Dim OutPath As String
Dim OutFile As String

  OutPath = "C:\temp"
  OutFile = "test.txt"

  Open OutPath & "\" & OutFile For Output As #2
    Print #2, Me.テキスト内容
  Close #2
  
End Sub
・ツリー全体表示

【5108】テキストボックスの内容を・・
質問  ごろ  - 05/5/26(木) 10:32 -

引用なし
パスワード
   質問させてください。

今、保存ボタンを押すとテキストボックスに書かれた内容を
そのままテキスト形式のファイルでエクスポートしたいと考えています。
(テキストボックスには沢山の文字が入力されていますが区切り記号などは付いていません)

エクスポートのやり方はなんとか大丈夫なんですが、
テキストボックスの中身をテーブルに入れる方法がわかりません。

とりあえず「テキストボックスの内容を一度テーブルに入れてそれをエクスポート」
で合ってますでしょうか?
・ツリー全体表示

【5107】Re:フォーム作成
発言  小僧  - 05/5/26(木) 10:31 -

引用なし
パスワード
   ▼バリュー さん:
おはようございます。

ご提示された内容ですが、漠然としすぎていて回答がつきにくいと思われます。

1.現在のフォームはどうなっているのか。
  テキストボックスやコンボボックスなどのコントロールの配置
  単票フォーム・帳票フォーム

2.検索したいテーブル構成
  フィールドの名前、データ型など

3.検索するタイミング
  「実行ボタンを押したら」「コンボボックスで選んだら」など

4.検索した結果の表示
  同じフォームに
  サブフォームに
  別の独立したフォームに など

5.修正のタイミング
  「修正したらすぐ」「実行ボタンを押したら」 など

具体的な内容をもう少しご提示して頂くと、回答がつき易くなるかと思われます。
・ツリー全体表示

【5106】Re:検索結果をフォームで更新したい
回答  Gin_II  - 05/5/26(木) 1:09 -

引用なし
パスワード
   >ところが、検索はうまくいったのですが、抽出されたデータをフォームから
>更新しようとすると、
>「このフォームは読み込み専用です」となってしまいました。

[ACC2000] ADOレコードセットに基づくフォームが読取専用になる
http://support.microsoft.com/default.aspx?scid=kb;ja;227053

こちらとか?
#環境が書いてないのでハズシかもですが。
・ツリー全体表示

【5105】ダーティーリードの解決法
質問  twining  - 05/5/25(水) 19:02 -

引用なし
パスワード
   Access2000です。
複数のPCからテーブルにデータを登録したいので、
テーブルのopen時にロックを掛けているつもりなのですが、
どうもダーティーリードされているようで、うまく更新されません。
解決法を教えて下さい。

一部、省略していますが以下の様にコーディングしています。

  Dim dbs As Database
  Dim rstCNT As Recordset
  Dim INDEX As Long

On Error Resume Next
  Do
    Err.Number = 0
    Set dbs = Nothing
    Set dbs = Workspaces(0).OpenDatabase("データベースパス")
    Set rstCNT = Nothing
    Set rstCNT = DAO_db1.OpenRecordset("テーブル", dbOpenTable, dbDenyRead, dbPessimistic)
  Loop Until Err.Number = 0

  rstCNT.INDEX = "PrimaryKey"
  rstCNT.Seek "=", 1    ←レコードは1件しかなく1が固定でユニークに成っています。
  If rstCNT.NoMatch = False Then
    INDEX = Nz(rstCNT!項目名, 0) + 1 ←同時に実行された場合、ここでINDEXに同じ値がセットされる場合があります。
    rstCNT.Edit
    rstCNT!項目名 = INDEX ←2度、実行されているのに1しか増えていない場合があります。
    rstCNT.Update
  End If

  Set rstCNT = Nothing
  Set dbs = Nothing

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

【5104】検索結果をフォームで更新したい
質問  orange  - 05/5/25(水) 17:40 -

引用なし
パスワード
   こんにちわ。
初歩的な質問になってしまうのですが、
フォームで抽出した結果をそのまま更新したいのです。

フォームは単票形式で、クエリーとマクロの組み合わせで検索していたときには
表示されたレコードをそのままフォームで更新できたのですが
検索項目をコンボボックスで選択したりするように変更したため
VBAで検索結果を求めるようにしました。
ところが、検索はうまくいったのですが、抽出されたデータをフォームから
更新しようとすると、
「このフォームは読み込み専用です」となってしまいました。

wRec.Open strSQL, wCNN, adOpenStatic, adLockOptimistic
これだと更新不可になってしまうのでしょうか?

あと、強制的にme.AllowEdits=true も試したのですが、だめでした。

お気づきの点、アドバイスよろしくお願いします。
・ツリー全体表示

【5103】フォーム作成
質問  バリュー  - 05/5/25(水) 16:47 -

引用なし
パスワード
   初心者です。よろしくお願いします。
フォームを作りたいのですが、
ACCESS2000の中のツールで、
クエリーを使うか、
モジュールを使うか、その点からわかりません。

以下、同じフォーム上での動きなのですが、
入力した項目に該当するレコードを他テーブルから検索し、
検索結果を表示したものに修正を加えたい場合、
どのようにフォーム作成したら良いですか?
・ツリー全体表示

【5102】Re:リストボックス
お礼  ぶる  - 05/5/25(水) 13:00 -

引用なし
パスワード
   なんとかテキストボックスに表示できるようになりました^^
色々とありがとうございましたっ
・ツリー全体表示

【5101】Re:コンボボックスの値を検索条件にしたい...
お礼  orange  - 05/5/25(水) 10:57 -

引用なし
パスワード
   アドバイスありがとうございました!

原因はわからないのですが、何度か保存しているうちに
コンボボックスの値を取得するようになりました。
特にどこも修正しなかったのですが。。。

レスいただいた、クロさん小僧さん、ほんとうにありがとうございました。
・ツリー全体表示

【5100】Re:リストボックス
回答  クロ  - 05/5/24(火) 14:42 -

引用なし
パスワード
   これじゃ↓なんだか分かりませんよね。m( _ _ )m
>リストボックスのダブルクリック時にイベントに
TransferTextでいいと思います。

Dim MyPath As String, MyName As String
MyPath = "D:\Aフォルダ\" ' Aフォルダのフルパス
MyName = Me.list.Column(0, Me.list.ItemsSelected)
'現在格納されているレコードの破棄
DoCmd.RunSQL "DELETE * FROM 格納先テーブル名;"
'レコードのインポート処理
DoCmd.TransferText acImportFixed, "インポート定義名", "格納先テーブル名", MyPath & MyName

固定長の場合は第一引数は「acImportFixed」になります。
また、第二引数のインポート定義は事前に手動で作成されておくといいと思います。
・ツリー全体表示

【5099】Re:訂正と追加です。
お礼  サチチ  - 05/5/24(火) 14:24 -

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

いつも、分りやすくご説明ありがとうございます。
どうも、うまくいかなかったので、管理的要員に、人的をいれちゃい
ました。普通細かく分けるのが、ベストと思うのですが、勉強不足
のため、自分では、なぜかうまくリレーションができなかく、泣く泣く。
クエリにしたら、くっつくのですが、追加ができなく・・・、
という事で、一応出来た?感じです。

ただ、他の分析も出来る様に、クエリ(リレーション)でくっつけなく
ては・・・。(泣)(A3の用紙で、今現在A4の部分だけ)

一番最初に、まず、リレーション・クエリでくっつければ、
一応、きちんと入力出来る!という事で・・・、まだまだ先がありますが、
事故IDという様に、他テーブルにも、追加してみます。

また、違う質問をすると思いますが(しないで出来たら嬉しいのですが・・)
どうか、今後ともよろしくお願いします。
・ツリー全体表示

【5098】Re:リストボックス
回答  クロ  - 05/5/24(火) 13:59 -

引用なし
パスワード
   ▼ぶる さん:
>後は、「クリック毎にそのファイルの内容がテキストボックスに内容が表示される」
>という処理なんですが
>テキストの内容はTransferTextで一度インポートしてからのほうがいいでしょうか?
>ちょっとやってみたんですが、うまく目的のフィールドに内容が入ってくれません
>他に良い方法などがあったら教えてほしいです

リストボックスのダブルクリック時にイベントに

TransferTextでうまく入らないとはどういうことでしょうか?
テキストファイルはどんな形式(固定長/TAB切り/CSV等)でしょうか?
一度、手動でインポートしてウィザード上で「設定」で「インポート定義」を
保存して、TransferTextのSpecificationNameにインポート定義を指定しても
ダメでしょうか?
・ツリー全体表示

【5097】Re:リストボックス
質問  ぶる  - 05/5/24(火) 13:00 -

引用なし
パスワード
   表示させる所までは問題なく出来ました^^
ありがとうございますっ

後は、「クリック毎にそのファイルの内容がテキストボックスに内容が表示される」
という処理なんですが
テキストの内容はTransferTextで一度インポートしてからのほうがいいでしょうか?
ちょっとやってみたんですが、うまく目的のフィールドに内容が入ってくれません
他に良い方法などがあったら教えてほしいです^^
・ツリー全体表示

【5096】Re:リストボックス
回答  クロ  - 05/5/24(火) 8:36 -

引用なし
パスワード
   ファイル名を格納する為のテーブルを用意します。
テーブル名:T_Aフォルダ
フィールド:格納ファイル名/テキスト型

リストボックスを設置
リストボックス名:lst1
値集合ソースは「T_Aフォルダ」で作成。

ファイル名を取得するためにコマンドボタンを用意します。
コマンドボタン名:cmbGetFN
クリック時のイベントにコードで

Private Sub cmbGetFN_Click()
Dim db As DAO.Database
Dim strSQL As String, MyPath As String, MyName As String

MyPath = "D:\圧縮解凍\A\" ' Aフォルダのフルパス
MyName = Dir(MyPath & "*.TXT") 'Aフォルダ内のtxt拡張子ファイルを調べる

Set db = CurrentDb
'フォルダ内のTXTファイル名を格納するテーブル「T_Aフォルダ」の
'現在格納レコードの消去
strSQL = "DELETE * FROM T_Aフォルダ;"
db.Execute strSQL

Do While MyName <> ""
 'フォルダ内のTXTファイル名を格納するテーブル「T_Aフォルダ」に格納
 strSQL = "INSERT INTO T_Aフォルダ ( 格納ファイル名 ) SELECT '" & MyName & "';"
 db.Execute strSQL
 MyName = Dir
Loop
db.Close: Set db = Nothing
Me.lst1.Requery
End Sub

記述します。
これでリストボックスにAフォルダ内のTXTファィル名が表示されます。
※DAOを使いますので、「参照設定」で[Microsoft DAO 3.* Object Library] を
 参照してください。
※Aフォルダ内のTXTファイルを加えたり、消したりしてリストが都度最新のものに
 なるか試してください。

まずは、ここまで
・ツリー全体表示

【5095】Re:リストボックス
質問  ぶる  - 05/5/24(火) 0:06 -

引用なし
パスワード
   説明不足でした。すみません(><)
あと、少し内容が変わったので書きます

やりたい事は、
「フォルダAにはテキストファイルが複数入っていて
フォームの参照ボタンを押してフォルダAを選択すると
テキストファイルのファイル名の一覧がリストボックス(それ以外でもアリ)
に表示され、表示されたファイル名をクリックすると
別のテキストボックスに内容が表示される」
です。
まだ初心者なもので、一度テーブルにインポートしてからのほうが
いいのかどうか分かりません。
ご意見お願いします。
・ツリー全体表示

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