Access VBA質問箱 IV

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

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


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

【8331】Re:ダーティとは
お礼  にしもり  - 06/7/21(金) 11:43 -

引用なし
パスワード
   ▼小僧 さん:
テーブルのフィールドを書き換えようとしてみましたら確かに三角が鉛筆になります。この、データを入力してから確定するまでの間をDirtyというのですね。普段全く気にかけていませんでした。大変参考になります。こういうことを理解してコードをいじるのと、そうでないのとでは大きな差だと思います。ありがとうございました。
・ツリー全体表示

【8328】Re:ダーティとは
回答  小僧  - 06/7/21(金) 10:46 -

引用なし
パスワード
   ▼にしもり さん、MJM さん:
こんにちは。

> ダーティ時

単体のMDBの際にはあまり気にならない所なのですが、
リンクテーブル等を使い複数のユーザで使う場合は神経質になる所ですよね。

連結フォームでも良いのですが、
テーブルを直接開いた方が解りやすいかと思われます。

テーブルを直接開き、何かフィールドのデータを変えてみてください。
左側の三角マークが鉛筆のアイコンになっていますでしょうか。
これが「Dirty」の状態です。

この状態では見た目ではデータが変わっていますが、
実際のテーブルには反映されていません。

鉛筆のアイコンの状態で「Esc」キーを押してみて下さい。
データが元に戻っていませんか?

これはデータベースの機能で用意されているものです。
例えば数値型のフィールドに「A」と入れてしまった時に
受け付けられない旨のエラーが表示され、入力前の数値に戻ります。

「データベース」「トランザクション」でWeb検索すると
色々と情報が見つかるかと思われます。

(Accessではありませんが、解りやすそうな所のリンクを…
http://ingres.t.u-tokyo.ac.jp/Lecture/WebApplication/text/node93.html)


後は鉛筆のアイコンが三角のマークに戻るタイミングです。
(上記のリンクですとCommitという部分です)

Accessのヘルプに記載されていますが

・他のレコードに移動する
・テーブル、フォームを閉じる
・VBAで実行する(Docmd.RunCommand AcSaveRecord)

上記のタイミングで初めてテーブルに格納される事となります。
(Esc キーを押しても元のデータには戻りません)

長くなりましたが、データを入力してから確定するまでの間 が
Dirty状態という事になりますね。
・ツリー全体表示

【8327】バーコードの表示
質問  質問者  - 06/7/21(金) 10:29 -

引用なし
パスワード
   バーコードを印刷したときに、値のない箇所が
バーコードの白・黒幅の値が太くなります。

この表示を正しくする方法があるのか教えて下さい。

WIN-XP ACCESS2000

以上お願いします。
・ツリー全体表示

【8326】Re:サブフォーム
発言  小僧  - 06/7/21(金) 10:11 -

引用なし
パスワード
   ▼ハジメ さん:
おはようございます。

まず…前回の質問の際の

> 何とか解決しまいた。
> ありがとう御座いました

という事でしたが、
これでは何をやってどう解決したのかが何も解りません。

今後ハジメさんと同じ疑問を持っている方が
過去ログとして参照する価値のあるモノにしていきましょう。


>以上の状態でメインフォームのクリア処理を実行すると、

さて今回の事象ですが、まず
・どのタイミングでクリア処理を行っているのか
 (コマンドボタンを押した際、フォームをロードする際等)

・どの行でエラーが発生するのか

などの情報があるとより的確な回答が付きやすくなると思われます。

> Me!選択 = 1

Accessのウィザードでフォームを作った際など、
コントロールソース名とコントロール名が一緒になっている場合に
今回の様な事象が発生する場合があります。

コントロール名を例えば「cmb選択」「txt枚数」の様に
コントロールソース名と違う名前に変更すると解決するかもしれません。
(全然関係ないかもしれません)
・ツリー全体表示

【8325】Re:新規に入力する際に自動連番にしたいん...
発言  YUU  - 06/7/20(木) 20:20 -

引用なし
パスワード
   ▼Gin_II さん:
>リンク子フィールド
>リンク親フィールド
>
>に、商品区分CD を指定しているということでしょうか?

>>はい、そうです。 そうする事によって、すでに何が登録されているか分かるようにしたのです。
・ツリー全体表示

【8324】Re:ダーティとは
お礼  にしもり  - 06/7/20(木) 17:20 -

引用なし
パスワード
   ▼MJM さん:
英和でみても、汚すという意味のみでした。
既存のデータを"汚した"からと理解しておきます。
再々ありがとうございました。
・ツリー全体表示

【8323】Re:ダーティとは
回答  MJM  - 06/7/20(木) 17:03 -

引用なし
パスワード
   要約すると、
連結フォームで、何れかのデータが変更された時に発生します。

既存のデータに対して変更が加えられた、
ということで、汚れたという表現なんでしょうかねぇ
・ツリー全体表示

【8322】Re:ダーティとは
お礼  にしもり  - 06/7/20(木) 16:49 -

引用なし
パスワード
   ▼MJM さん:
ヘルプですと事例の記載が少なく理解しづらいのですが頑張ってできる限り自力で調べてみます。
どうもありがとうございました。
・ツリー全体表示

【8321】Re:ダーティとは
回答  MJM  - 06/7/20(木) 16:40 -

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

ヘルプを参照して見ましょう。

−−以下、ヘルプより抜粋−−
Dirty イベント
フォーム、またはコンボ ボックスのテキスト ボックス部分の内容が
変化するときに発生します。
タブ コントロール内でページ間を移動したときにも発生します。
たとえば、テキスト ボックスやコンボ ボックスに文字を直接入力したときや、
マクロまたは Visual Basic を使ってテキスト ボックスや
コンボ ボックスの Text プロパティの設定値を変更したときに発生します。
・ツリー全体表示

【8320】ダーティとは
質問  にしもり  - 06/7/20(木) 16:20 -

引用なし
パスワード
   こんにちは。
フォームに作ったコントロールのプロパティに、ダーティー時というのがあります。この場合ダーティーとは一体何が汚いのですか。
時々Dirty_flgという表現をしているのを見ます。それと同じ意味でしょうか?
愚問ですみませんが知りたいのでよろしくお願いします。
・ツリー全体表示

【8319】Re:VBAコードの質問
回答  hatena@元祖  - 06/7/20(木) 15:19 -

引用なし
パスワード
   >Private Sub コマンド46_Click()
>Me.Filter = "コード = '003'" Or Me.Filter = "コード = '002'"

Me.Filter = "コード = '003' Or コード = '002'"

ですね。
Filterプロパティに、抽出条件文字列を代入するという
ように考えてください。

>Me.Filter0n = True
>End Sub
・ツリー全体表示

【8318】Re:VBAコードの質問
お礼  石井  - 06/7/20(木) 15:17 -

引用なし
パスワード
   わかりました。
・ツリー全体表示

【8317】サブフォーム
質問  ハジメ  - 06/7/20(木) 14:56 -

引用なし
パスワード
   レコードソースに テーブルAをしているサブフォームがあります
メインフォームでサブフォームをクリアするために以下のコードを記述しています。
 SET DB=CURRENTDb
 MySQL = "DELETE * FROM テーブルA"
 DoCmd.SetWarning False
 DoCmd.RunSQL MySQL
 DoCmd.SetWarnings True
 Me.Refresh

サブフォームで「選択」、「枚数」の項目を入力します。
 「選択」に 1 を入力すると「枚数」の変更入力できるようにSETFOCUSします
 コードは次の通りです。
  if me!選択=1 then
   me!枚数.tabstop=False
  else
   me!枚数.tabstop=True
  end if
以上の状態でメインフォームのクリア処理を実行すると、
『実行時エラー '-2147352567(80020009)
指定した式に macrosift Accessが見つけることができないフィールド、
 コントロール、プロパィ名が含まれています』
表示されます。
 エラーの原因は多分レコードソースをDELETEしたためだと推測しています、
それが正しいとした場合に、サブフォームをクリアする方法がわかりません。
どなたかご存知の方、どうぞご指導下さい。お願いします。
・ツリー全体表示

【8316】VBAコードの質問
質問  石井  - 06/7/20(木) 14:49 -

引用なし
パスワード
   こんにちは、
フォームの中に、コードが「003」と「002」のレコードを抽出したいので、
コードをはじめて書いたんですが、動きません。
どこに間違っているのでしょうか?
教えてください。

Private Sub コマンド46_Click()
Me.Filter = "コード = '003'" Or Me.Filter = "コード = '002'"
Me.Filter0n = True
End Sub
・ツリー全体表示

【8315】Re:クエリのデータ参照
お礼  ハジメ  - 06/7/20(木) 14:27 -

引用なし
パスワード
   小僧さん、レモンさん 

何とか解決しまいた。
ありがとう御座いました
・ツリー全体表示

【8314】Re:途中でフォームをかます理由は
お礼  にしもり  - 06/7/20(木) 9:04 -

引用なし
パスワード
   ▼hatena@元祖 さん:
>コードの一部を見せられて、その意味を問われても、
>回答は難しいですね。
そうですね。わたくしも期せずして他人のMDBを再利用することになったのですが、おっしゃるとおりだと思います。

>これを見ての感想は、ずいぶん無駄なコード、無意味なコード
>だなということですね。
>このようなコードを書く人が作ったMDBを改造するより、
>一から作り直してたほうが速いし、いいものになるだろうな、
>と思います。
無意味なコードではないかという感想を抱いたのが私だけでないことがわかり安心?しました。自力で解読してみます。

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

【8313】Re:レコード移動時のデータ判定
質問   E-MAIL  - 06/7/19(水) 23:19 -

引用なし
パスワード
   ▼雅 さん:
>フォームにレコードが表示された際に、Yes/No型のフィールドが -1 なら
>特定のラベル(メッセージ)を表示し、0 なら表示しないようにしたいので
>すが、レコードはフィルターをかけて表示しており、1件の場合は問題な
>く処理できます。でも複数のデータが選択されている場合、フォーム上で
>レコードが移動する都度、Yes/No型のフィールドを確認してラベルの出力
>を切り替える必要があると思うのですが、うまくいきません。
>どのようにコードを記述すれば良いのでしょう。
>どなたか教えていただけますでしょうか。

自己レスです。
FormのCurrentにIf文でコードを書いたらできました。失礼しました。
Currentの内容がよく理解できていませんでした。
・ツリー全体表示

【8312】レコード移動時のデータ判定
質問   E-MAIL  - 06/7/19(水) 22:09 -

引用なし
パスワード
   フォームにレコードが表示された際に、Yes/No型のフィールドが -1 なら
特定のラベル(メッセージ)を表示し、0 なら表示しないようにしたいので
すが、レコードはフィルターをかけて表示しており、1件の場合は問題な
く処理できます。でも複数のデータが選択されている場合、フォーム上で
レコードが移動する都度、Yes/No型のフィールドを確認してラベルの出力
を切り替える必要があると思うのですが、うまくいきません。
どのようにコードを記述すれば良いのでしょう。
どなたか教えていただけますでしょうか。
・ツリー全体表示

【8311】Re:途中でフォームをかます理由は
発言  hatena@元祖  - 06/7/19(水) 18:39 -

引用なし
パスワード
   コードの一部を見せられて、その意味を問われても、
回答は難しいですね。

>Private Sub flgAttach_Change()
>  DoCmd.OpenForm "F_Categoryid"
>     Forms!F_ModProgram!AttCategory = Forms!F_Categoryid!Category_Name
>     Forms!F_Categoryid.RecordSource = "SELECT Category_Name from tbl_category where category_ID = " & [Forms]![F_ModProgram]![flgAttach] & ";"
>  DoCmd.Close
>End Sub

これを見ての感想は、ずいぶん無駄なコード、無意味なコード
だなということですね。
このようなコードを書く人が作ったMDBを改造するより、
一から作り直してたほうが速いし、いいものになるだろうな、
と思います。

>Private Sub flgAttach_Change()
>     Forms!F_ModProgram!AttCategory = "SELECT Category_Name from tbl_category where category_ID = " & [Forms]![F_ModProgram]![flgAttach] & ";"
>End Sub

上のコードとこのコードではやっていることがぜんぜん別のような
気がしますが。(このコード自体の目的も理解できません。)

以上、回答ではなく、感想です。
・ツリー全体表示

【8310】Re:テキストボックスにカーソル判定
お礼  hatena  - 06/7/19(水) 18:37 -

引用なし
パスワード
   hatena@元祖様、皆様

ありがとうございます。
お蔭様でできました。
ありがとうございました。
・ツリー全体表示

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