Access VBA質問箱 IV

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

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


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

【10015】Re:アクセス95から2000に移行後のエラー
質問  timtim  - 07/11/22(木) 21:36 -

引用なし
パスワード
   ▼VBWASURETA さん:
>▼timtim さん:
>こんばんは。
>
>比較的に問題が少なく済む方法としまして、
>これはあくまで私が使っていた環境ですので参考にして下さい。
>
>ですが、手間なのは変わりませんでした。
>問題となりやすいのはモジュール関係を2000データベースで
>コンバートさせると問題が発生します。
>
>方法としては新規にデータベースを生成した後、
>そのまま新規のデータベースに既存のデータベースの
>テーブル、フォーム、レポート類をエクスポートします。
>何故かはモジュール類は後でコンバートさせずに移すためです。
>その後はモジュールを地道にコピー&ペーストします。
>
>後、問題なのは上記にも記載しましたが、再クエリーだけは使用している
>箇所を洗い出して修正していく作業やテーブルもエクスポートしている
>わけですからキーの貼り直しも必要になりす。
>
>この関係で結構大掛かりな作業になりました。

初心者でわかったようなわからないような感じですからもう一度お尋ねします。
今なおしてる分は95から97・2000に移行しました、出来あがったと思ったらエラーが
出始めました。
もう一度、最初から新しく、2000の新規のデータベースから既存の95データベースを
そのまま(テーブル、フォーム、レポート類)をインポートして、
やり直したほうがよろしいですか?
・ツリー全体表示

【10014】Re:アクセス95から2000に移行後のエラー
回答  VBWASURETA  - 07/11/22(木) 20:52 -

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

比較的に問題が少なく済む方法としまして、
これはあくまで私が使っていた環境ですので参考にして下さい。

ですが、手間なのは変わりませんでした。
問題となりやすいのはモジュール関係を2000データベースで
コンバートさせると問題が発生します。

方法としては新規にデータベースを生成した後、
そのまま新規のデータベースに既存のデータベースの
テーブル、フォーム、レポート類をエクスポートします。
何故かはモジュール類は後でコンバートさせずに移すためです。
その後はモジュールを地道にコピー&ペーストします。

後、問題なのは上記にも記載しましたが、再クエリーだけは使用している
箇所を洗い出して修正していく作業やテーブルもエクスポートしている
わけですからキーの貼り直しも必要になりす。

この関係で結構大掛かりな作業になりました。
・ツリー全体表示

【10013】Re:「レコードに検索キーが見つかりませ...
発言  VBWASURETA  - 07/11/22(木) 20:23 -

引用なし
パスワード
   ▼かものはし さん:
こんばんは

こうやって見てるとあまりすんなり書くのは良くないのかも知れませが、
今日だけ書きます。

もしかするとAccessは結構テンポラリ(ごみデータ)として保持されている
からかも知れません。(最適化で復旧するというところから考えて)

私がDBだけで構築する場合、バックアップもしくは
DBプログラムとデータのDB(リンクテーブル)を別に設けます。


参考までに。
・ツリー全体表示

【10012】Re:アクセス95から2000に移行後のエラー
発言  timtim  - 07/11/22(木) 20:17 -

引用なし
パスワード
   ありがとう御座います、現在貴殿の言われたように あらゆるところでエラーがでて
困っているところです。素人にでもわかりやすい方法はないでしょうか?
・ツリー全体表示

【10011】Re:フォームのテキスト値
発言  VBWASURETA  - 07/11/22(木) 19:55 -

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

これでもいけますね。因みにクエリー内に
Function関数を埋め込むことも可能です。

//form
sub main()
 if ( Test( Cstr(me.テキスト1.Txt & "") ) = True ) Then
   Msgbox "Ok"
 Else
   Msgbox "NG"
 End if
end sub

//モジュール
Function Test(m_strwk as String) As Boolean
 if ( m_strwk <> "" ) Then
  Test = True
 End if
End Function
・ツリー全体表示

【10010】Re:データ入力で
回答  VBWASURETA  - 07/11/22(木) 19:16 -

引用なし
パスワード
   ▼初心者A さん:

こんばんは。


>半角英数と半角カナの両方の入力を可能にしたいのですが
>
>御指導おねがいします。


何をされたいのかよくわかりませんが・・・

それはフォーム上でのテキストボックスなどでということでしょうか?
恐らくで書きますが、1項目に対して条件もなくそんな無茶な制御は
無理と思います。

フォームのデザインでIMEのプロパティでどちらかの制御は可能と思います。

もし半角だけということでしたら、該当項目のフォーカス喪失時のイベントに
次の1行追加してみては?

forms![フォーム名]![項目名].Text = StrConv(forms![フォーム名]![項目名],vbNarrow)でやってみてはいかがですか?
・ツリー全体表示

【10009】Re:AccessでExcel操作について
発言  VBWASURETA  - 07/11/22(木) 18:44 -

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

よく私もExcel関係やってました(色々してます^^;

実はSelectメソッドや選択処理関係は

>  myXLS.Application.Visible = True------------------excelは開きますが既
だけではダメだったはずです。

myXLS.Application.ActiveWindow.Visible = True

だったかな・・・を有効にすることでよかったと思います。

後、シートのSaveメソッドもないですね。


今は思い出しで書いているので、帰宅後に確認して
間違っていたら訂正します。
・ツリー全体表示

【10008】Re:アクセス95から2000に移行後のエラー
発言  VBWASURETA  - 07/11/22(木) 18:23 -

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

参考までにですが、私も同じような作業で問題になったことがあります。

ただ書かれているような問題ではなく。覚えている範囲で2点ありました。

1.再クエリーをフィールド指定無しで呼び方すとクエリーが更新されない。

2.コンバートの際、クエリー名又はパラメータに半角全角文字を使うと
コンバートが勝手に半角に切り替えてしまいクエリーが存在しない又は、
パラメータ指定でエラーがありました。

その場合は後から手動で修正していくと大変な思いをした覚えがあります。
・ツリー全体表示

【10007】Re:データ型のインポートエラーについて
回答  VBWASURETA  - 07/11/22(木) 18:10 -

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

今少し思い出したのですが、型については自動で判定してしまうことがあったので、クエリーに仕組みを作った覚えがありました。

テーブル作成クエリーのフィールドCStr()メソッドを指定して取り込む
事によってテキスト型にした覚えがあります。
書いた内容は2年前なので思い出す必要がありますが、それでテキスト型に
した覚えがあります。
・ツリー全体表示

【10006】Re:データ型のインポートエラーについて
発言  小僧  - 07/11/22(木) 17:50 -

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

もうちょっとネタがあったのですが、
提示しておりませんでした…すみません。

>ただ、インポート/エクスポートのやり方次第で変わった気もします。
>曖昧な感じで、すみません。


マクロのワークシート変換、VBA のTransferSpreadSheet メソッドの仕様?で
先頭行から数行のデータによりデータ型を判断させている模様です。
(確か24行目かと…)

なのでデータ行の先頭〜24行目までにひとつでも文字型のデータがあればテキスト型、
25行目以降にしか文字型のデータがなければ数値型になってしまう、なんて事も
ありえます。


>後、インポートしてくるときに型をウィザードで指定できた気がするのですが。。

こちらはテキスト変換(TransferText メソッド) ではないでしょうか?
・ツリー全体表示

【10005】Re:データ型のインポートエラーについて
発言  VBWASURETA  - 07/11/22(木) 17:37 -

引用なし
パスワード
   こんにちはー。回答というほどまででもないですが。

Accessは2年前に使用していたので、現在のバージョン(使っていたのは97)
ではどうなのでしょうね?

97、2000辺りは確かにインポートしてくるとそのフィールド項目は
テキスト型になっていたと思います。

ただ、インポート/エクスポートのやり方次第で変わった気もします。
曖昧な感じで、すみません。

後、インポートしてくるときに型をウィザードで指定できた気がするのですが。。
・ツリー全体表示

【10004】Re:テキストデータの読込について
回答  VBWASURETA  - 07/11/22(木) 10:58 -

引用なし
パスワード
   こんにちは。始めまして

最近VBから遠ざかって忘れ欠けてますが、
多分で書き込みします。

桁ズレというより、読み込むレコード長の問題ですよね?
NEMOTOさんバイトとかわかりますでしょうか?
>Dim filedata As String * 31
この部分ですが、
filedataという変数は31バイト取りますよという宣言だったと思います。

全角文字とかは2バイトつまり、半角文字の1バイト、改行コード2バイト等を
混在の場合はそれらを考慮しないといけないと思います。
※型はもしかするとOS、アプリに依存する場合もあるかもです。

なので、どうしてもバイナリデータとして取得しないといけない
問題なのでしょうか?

1行単位で取得するだけで十分であれば以下のような感じでいいように
思います。(いや、VBAから離れてもまだまだ書けるもんですね)

  Dim filenumber as Integer
  Dim buf as String
  filenumber = FreeFile
  Open FName For Input Access Read As #filenumber
    Do Until EOF(filenumber)
      Line Input #filenumber, buf '1行単位に取得
      Debug.Print("ここで取得したテキスト内容を処理")
    Loop
  Close #filenumber
・ツリー全体表示

【10003】Re:SQLの自動書換え
お礼  ぼっこ  - 07/11/21(水) 17:47 -

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

ありがとうございます。

>これでは回答者が敬遠してしまいますよ…。

失礼しました。ごめんなさい。


>これでも同様の事が起きますよね。

やっぱり同じ結果でした。(泣)


>これが許されるのであれば
>サブクエリの部分をクエリとして保存してあげれば
>問題なくクエリが開けると思います。

自分だけなら、デザインビューの際に気をつければいいんですけど、
他のメンバーも使うので、メンテナンスも考え
サブクエリを別クエリにすることで対応致します。

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

【10002】Re:複数条件がうまくいきません
回答  小僧  - 07/11/21(水) 12:38 -

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

ではまず検索フォームを作ります。

適当にデザインビューでフォームを作り、
詳細部にテキストボックスを4つ(全て非連結で)

txt顧客番号
txt顧客氏名
txt顧客カナ
txt登録月

作ります。

また、フォームのヘッダー(またはフッター)に
コマンドボタンを2つ
cmd抽出
cmbキャンセル

を配置します。


cmd抽出を 右クリック ⇒ イベントのビルド でVBEの画面を表示させ、

Private Sub cmd抽出_Click()
Dim strFilter As String

'txt顧客番号がNullでなかった場合は顧客番号でフィルタ
  If Not IsNull(Me.txt顧客番号) Then
    strFilter = "顧客番号 = '" & Me.txt顧客番号 & "'"
  End If

'メインフォームにフィルタを設定
  Forms![メインフォーム].Filter = strFilter
  
'変数:strFilter が空だった場合はフィルタを掛けない
  Forms![メインフォーム].FilterOn = (strFilter <> "")
  
'フォームを閉じる
  DoCmd.Close acForm, Me.Name
End Sub


の様に記述します。

まずは顧客番号のみの完全一致で動作したら、
次の作業にすすんでみましょう。
・ツリー全体表示

【10001】Re:SQLの自動書換え
回答  小僧  - 07/11/21(水) 12:25 -

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

これでは回答者が敬遠してしまいますよ…。

><保存時>
>SELECT T_Result.TRE_TRA_Int_Num, T_Result.TRE_APL_Cnt,
>T_Result.TRE_TRA_Int_Num & "-" & T_Result.TRE_APL_Cnt AS QRE_Key,
>T_Result.TRE_APL_Res_Cnt, T_Result.TRE_Year, T_Result.TRE_Resit_flg,
>T_Result.TRE_Status, MCD1R.MCD_Name AS QRE_Status_Name,
>T_Result.TRE_Test_DATE, T_Result.TRE_Sign_DATE,
>T_Result.TRE_Certificate_Sts, T_Result.TRE_Temp_flg,
>T_Result.TRE_Transfer, T_Result.TRE_Test_Code, T_Result.TRE_Test_Name,
>T_Result.TRE_Class_Code, T_Result.TRE_Institution, T_Result.TRE_Pass,
>T_Result.TRE_Pass_Msg, T_Result.TRE_Subj_Cnt, T_Result.TRE_01,
>T_Result.TRE_02, T_Result.TRE_03, T_Result.TRE_04, T_Result.TRE_05,
>T_Result.TRE_06, T_Result.TRE_07, T_Result.TRE_08, T_Result.TRE_09,
>T_Result.TRE_10, T_Result.TRE_Notes, T_Result.TRE_Del_Flg,
>T_Result.TRE_Updt_Cnt, T_Result.TRE_Reg_Date, T_Result.TRE_Reg_User,
>T_Result.TRE_Last_Updt_Date, T_Result.TRE_Last_Updt_User
>FROM T_Result
>LEFT JOIN (Select * From M_Code where M_Code.MCD_Ctgr="21") AS MCD1R
>ON T_Result.TRE_Status=MCD1R.MCD_Code;

SELECT T_Result.TRE_TRA_Int_Num,
MCD1R.MCD_Name AS QRE_Status_Name
FROM T_Result
LEFT JOIN
(SELECT MCD_Name, MCD_Code FROM M_Code WHERE MCD_Ctgr='21') AS MCD1R
ON T_Result.TRE_Status = MCD1R.MCD_Code;


これでも同様の事が起きますよね。


>ただ、このクエリーを別のクエリーで利用している為、

これが許されるのであれば
サブクエリの部分をクエリとして保存してあげれば
問題なくクエリが開けると思います。


また余分なクエリを作りたくないのであれば

>別のクエリー

についても、上記クエリをサブクエリとして使えば
保存してある分には問題ないかと思われます。

(いったんデザインビューにすると、書き換わってしまう事はありますが…)
・ツリー全体表示

【10000】Re:複数条件がうまくいきません
質問  BOO E-MAIL  - 07/11/21(水) 11:37 -

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

こんにちは。

ご返信いただき、ありがとうございます。
ご返答いただき、うれしいです。

流れは小僧さんがお考えになっている流れです。

仕様ですが、顧客番号はテキスト型で顧客氏名、顧客カナは完全一致ではなく、部分一致で検索し、検索項目のどれかが空欄でも検索可能という状態にしたいです。

お手数ですが、よろしくお願いいたします。
・ツリー全体表示

【9999】Re:複数条件がうまくいきません
発言  小僧  - 07/11/21(水) 10:36 -

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

クエリを使ってもできるのですが、
今回はフィルタを使って抽出する方法を考えてみようと思います。

・メインフォーム上のコマンドボタンを押すと検索用のフォームが開く

・検索用のフォームに条件を入れて閉じると、
 条件に応じた結果がメインフォームに表示される

の様な流れになるのでしょうか。


あと2点、仕様の確認です。

>顧客番号

こちらは数値型、テキスト型のどちらになるでしょうか。


>顧客氏名
>顧客カナ

この2つについては完全一致で大丈夫なのでしょうか。
部分一致にした方が良さそうな気もしますね。
・ツリー全体表示

【9998】Re:フィールドのデータの一部を置き換えた...
回答  小僧  - 07/11/21(水) 10:08 -

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

>(1) テーブルのデータシートビューで置換を行う

テーブルを開いて

Ctrl + H を押すと置換のダイアログが出ると思います。


>(2) 更新クエリを作成して実行する

更新クエリで行うと複雑になりがちなので
VBAを使って変更したほうが良さそうですね。


>本サイトの基本方針をまとめました。こちら をご一読ください。

の こちら のリンク先をお読みになって下さい。

> してはいけない質問について

の 丸投げに相当しない用に気をつけて下さい。
・ツリー全体表示

【9997】Re:データ型のインポートエラーについて
回答  小僧  - 07/11/21(水) 10:00 -

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

> 数値データなら数値データ、文字データなら文字データしか
> はいらないようになってしまいます。

当方の環境ではテキスト型に数値は入るのですが…。


> マクロでインポートしています。

あくまでマクロで行うのであれば
Excel側にちょっと細工をしなければいけません。

セルの書式設定で文字型にするのではなく、
数値フィールドの値の先頭に「'」をつけてみて下さい。
(値が 1 の場合 ⇒ '1)

データ行の先頭だけ上記の動作を行えば
数値もテキスト型のフィールドにインポートできるかと思われます。


いちいち細工をせずに行いたい場合は
VBAを使って処理する事になると思われます。
・ツリー全体表示

【9996】SQLの自動書換え
質問  ぼっこ  - 07/11/20(火) 20:44 -

引用なし
パスワード
   クエリー作成時のSQL文が、
自動的に下記のように書き換えられてしまいます。
(Join句以降が変更されています)

<保存時>
SELECT T_Result.TRE_TRA_Int_Num, T_Result.TRE_APL_Cnt, T_Result.TRE_TRA_Int_Num & "-" & T_Result.TRE_APL_Cnt AS QRE_Key, T_Result.TRE_APL_Res_Cnt, T_Result.TRE_Year, T_Result.TRE_Resit_flg, T_Result.TRE_Status, MCD1R.MCD_Name AS QRE_Status_Name, T_Result.TRE_Test_DATE, T_Result.TRE_Sign_DATE, T_Result.TRE_Certificate_Sts, T_Result.TRE_Temp_flg, T_Result.TRE_Transfer, T_Result.TRE_Test_Code, T_Result.TRE_Test_Name, T_Result.TRE_Class_Code, T_Result.TRE_Institution, T_Result.TRE_Pass, T_Result.TRE_Pass_Msg, T_Result.TRE_Subj_Cnt, T_Result.TRE_01, T_Result.TRE_02, T_Result.TRE_03, T_Result.TRE_04, T_Result.TRE_05, T_Result.TRE_06, T_Result.TRE_07, T_Result.TRE_08, T_Result.TRE_09, T_Result.TRE_10, T_Result.TRE_Notes, T_Result.TRE_Del_Flg, T_Result.TRE_Updt_Cnt, T_Result.TRE_Reg_Date, T_Result.TRE_Reg_User, T_Result.TRE_Last_Updt_Date, T_Result.TRE_Last_Updt_User
FROM T_Result
LEFT JOIN (Select * From M_Code where M_Code.MCD_Ctgr="21") AS MCD1R ON T_Result.TRE_Status=MCD1R.MCD_Code;

<書換え後>
SELECT T_Result.TRE_TRA_Int_Num, T_Result.TRE_APL_Cnt, T_Result.TRE_TRA_Int_Num & "-" & T_Result.TRE_APL_Cnt AS QRE_Key, T_Result.TRE_APL_Res_Cnt, T_Result.TRE_Year, T_Result.TRE_Resit_flg, T_Result.TRE_Status, MCD1R.MCD_Name AS QRE_Status_Name, T_Result.TRE_Test_DATE, T_Result.TRE_Sign_DATE, T_Result.TRE_Certificate_Sts, T_Result.TRE_Temp_flg, T_Result.TRE_Transfer, T_Result.TRE_Test_Code, T_Result.TRE_Test_Name, T_Result.TRE_Class_Code, T_Result.TRE_Institution, T_Result.TRE_Pass, T_Result.TRE_Pass_Msg, T_Result.TRE_Subj_Cnt, T_Result.TRE_01, T_Result.TRE_02, T_Result.TRE_03, T_Result.TRE_04, T_Result.TRE_05, T_Result.TRE_06, T_Result.TRE_07, T_Result.TRE_08, T_Result.TRE_09, T_Result.TRE_10, T_Result.TRE_Notes, T_Result.TRE_Del_Flg, T_Result.TRE_Updt_Cnt, T_Result.TRE_Reg_Date, T_Result.TRE_Reg_User, T_Result.TRE_Last_Updt_Date, T_Result.TRE_Last_Updt_User
FROM T_Result
LEFT JOIN [Select * From M_Code where M_Code].[MCD_Ctgr="21"] AS MCD1R ON T_Result.TRE_Status=MCD1R.MCD_Code;


この為と思われますが、「ディスクまたはネットワークのエラーです。」
のエラーが発生します。保存時のクエリーに戻すとエラーは回避されます。

ただ、このクエリーを別のクエリーで利用している為、
呼び出したタイミングで、自動的に書き換わり
上記のエラーが発生します。

同じような事象で対応された方がいれば
対応方法を教えて頂けますでしょうか?

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

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