Access VBA質問箱 IV

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

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


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

【11971】カレンダーコントロールとファイル選択ダ...
質問  さつき  - 11/3/16(水) 23:22 -

引用なし
パスワード
   こんにちは、さつきと申します。
いつもいろいろ教えていただきありがとうございます。

あるページを参考にして、下記のようなコードを書きました。
renrakuというフォームにあるコマンド1ボタンを押すと、
calというカレンダーだけのフォームが開き、日付を選択したら、
renrakuフォームの中のtxt日付というテキストボックスに日付が入り、
その日付をファイル名にしているエクセルファイルを開く形にしたいのですが、
カレンダーフォームとファイル選択ダイアログが同時に開いてしまいます。
どのように直したらいいでしょうか?
どなたかご教示お願いいたします。

Private Sub コマンド1_Click()
  DoCmd.OpenForm "cal"
  myfullpath = FileSelect
  Dim oApp As Object
  Set oApp = CreateObject("Excel.Application")
  txt日付で指定された日付のエクセルファイルを開くコード
End Sub

Private Sub calendar0_Click()
  Dim hiduke As Date
  DoCmd.SelectObject acForm, "renraku", False ' --- A
  Forms!renraku!txt日付 = Me.Calendar0.Value
  DoCmd.Close acForm, "cal" ' --- C
End Sub

Function FileSelect()
  Dim inttype As Integer
  Dim varSelectedFile As Variant
  inttype = msofiledialogfilepicker
  With Application.FileDialog(inttype)
    .Title = "ファイル選択"
    .InitialFileName = CurrentProject.Path
    If .Show = -1 Then
      For Each varSelectedFile In .SelectedItems
        FileSelect = varSelectedFile
      Next
    End If
  End With
End Function
・ツリー全体表示

【11970】Re:リストボックスのデータ取得
回答  小僧  - 11/3/14(月) 15:47 -

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

> リストボックスをクリックしたときに、
> そのデータをテキストボックスに入れたいと思いますが、

リストボックスをリスト0、
テキストボックスをテキスト2とすると、

Private Sub リスト0_Click()

  Me.テキスト2.Value = Me.リスト0.Column(0)

End Sub

の様な記述でお望みのような動作になるかと思われます。

リストボックスが複数列の時は
Column(x) の値を変えてみて下さい。
・ツリー全体表示

【11969】Re:演算子がありません 構文エラー
回答  小僧  - 11/3/14(月) 15:42 -

引用なし
パスワード
   ▼ミツヒロイド さん:
こんにちは。

>strSEN = strSEN &" TRANSFORM Count(伝票テーブル。伝票番号) AS 伝票番号のカウント "
                        ^^
タイプミスでしょうかね。


>strSEN = strSEN &" PIVOT Val(Right([発行日],2))
>
>の部分が引っかかっているようです。

PIVOT句でなく、IN句に問題がありそうです。

>  strIn = strIn & "'" & Day(SDate) & "'"
  strIn = strIn & ", '" & Day(SDate) & "'"

でいかがでしょうか。
・ツリー全体表示

【11968】演算子がありません 構文エラー
質問  ミツヒロイド  - 11/3/10(木) 19:55 -

引用なし
パスワード
   お疲れ様です。

ACCESS初心者で勉強中なのですが、1週間考え続けて完全に詰んだんので
質問させてください

現場の方が使うための集計ツールを作成中なのですが

伝票テーブル
出荷部門 売上部門 発行日  伝票番号
****   ***    20110310 ********

という形式で伝票テーブルがあり

【行見出し】出荷部門(グループ化)、売上部門(グループ化)
【列見出し】発行日(グループ化)
【値】伝票番号(カウント)

集計の際は21日始まりで20日終わりとし
表示は日2桁だけのようにしています。


月度はフォームに日付を入力して、それを取得
し判断できるようVBAを組んでいます


Option Compare Datebase
Option Explicit

sub伝票集計作成()
Dim strSEN As String
Dim strIn As String
Dim DB As DAO.Datebase
Dim RS As DAO.Recodset
Dim QD As DAO.queryDef
Dim SDate As Date
Dim S As Long

SDate = #1/21/2011#
Set DB ~ CurrentDb

strSEN = "SELECT * FROM MsysObjects WHERE NAME = 'S_Cross'"

Set RS = DB.OpenRecordset(strSEN, dbOpenSnapshot)
If RS.EOF Then
  Set QD = DB.CreateQueryDef("S_Cross")
Else
  Set QD = DB.QueryDefs("S_Cross")
End If
RS.Close

strSEN = ""
strSEN = strSEN &" TRANSFORM Count(伝票テーブル。伝票番号) AS 伝票番号のカウント "
strSEN = strSEN &" SELECT 伝票テーブル.売上部門,伝票テーブル.出荷部門 "
strSEN = strSEN &" FROM 伝票テーブル "
strSEN = strSEN &" GROUP BY 伝票テーブル.売上部門,伝票テーブル.出荷部門"
strSEN = strSEN &" PIVOT Val(Right([発行日],2)) "

Do Until Day(SDate) = 20
  strIn = strIn & "'" & Day(SDate) & "'"
  SDate = DateAdd("d", 1, SDate)
Loop

strSEN = strSEN & "In (" & Mid(strIn, 2) & ",20);"

QD.SQL = strSEN
QD.Close

End Sub


という状態で走らせているのですが

strSEN = strSEN &" PIVOT Val(Right([発行日],2))

の部分が引っかかっているようです。

説明不足かもしれませんがどうぞ知恵を貸していただけたらと思います。

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

【11967】リストボックスのデータ取得
質問  亜矢  - 11/3/10(木) 19:24 -

引用なし
パスワード
   よろしくお願いします。
 アクセスを勉強中です。
フォームのリストボックスを配置してあります。
 リストボックスをクリックしたときに、
 そのデータをテキストボックスに入れたいと思いますが、
 どのように記述したらよいか教えていただきたいと思います。
 初心者です。
・ツリー全体表示

【11966】集計用のフィールドが二個あるのをエクス...
質問  toto  - 11/3/6(日) 21:39 -

引用なし
パスワード
   受注テーブルがありそのテーブルからエクスポートしたいと思っています。

エクセルブックを受注日別単位、エクセル出力について各エクセルブックを集計用商品名単位で2シート毎1シートの商品もあります!

テーブル名:F_受注
フィールド名:受注ID、商品名、受注日、出荷先、商品金額

▼エクスポートするフィールド受注日

20110301.xls
20110302.xls
20110312.xls



ファイルを開くとシート別に商品名がのっているという感じに
例えば受注日が20110301.xlsのファイルを開くと商品名が財布のシート
時計のシートがあるという感じです。

よろしくお願いします。大変困っております。
・ツリー全体表示

【11965】Re:最大値の取得で・・・
お礼  あおぎん  - 11/3/4(金) 12:22 -

引用なし
パスワード
   ▼よろずや さん:

回答ありがとうございます。

>>Ubound関数は配列のサイズを取得してくるとのことですが
>
>大きな勘違いです。
>サイズではなく、最大の添え字を取得しています。
>1引いちゃダメ。

そうなんですね。
Ubound関数って使ったことなかったので、あまり意味がわかってなく、検索した関数をほぼそのまま使用しちゃたんです。

1引くのをやめたら、希望の値が取得できました。
ありがとうございました。
・ツリー全体表示

【11964】Re:最大値の取得で・・・
回答  よろずや  - 11/3/2(水) 21:18 -

引用なし
パスワード
   >Ubound関数は配列のサイズを取得してくるとのことですが

大きな勘違いです。
サイズではなく、最大の添え字を取得しています。
1引いちゃダメ。
・ツリー全体表示

【11963】最大値の取得で・・・
質問  あおぎん  - 11/3/2(水) 12:59 -

引用なし
パスワード
   いつもお世話になってます。
またまたよろしくお願いします。

同一テーブルにあるフィールドA,B,C(すべて数値型)の最大値を取得したいと思い、検索して、次のような自作関数をモジュールに記入しクエリで使用して目的の値を取得しています。
(フィールドは現在3つなのでIF文でもいいのですが、もっと多くなることが予測されるので関数にしたいと思っています。)

Function Maxnb(ParamArray Mynb()) As Long
Dim i As Long
  For i = 0 To UBound(Mynb) - 1
  Debug.Print i
    If Maxnb = 0 Then
      Maxnb = Mynb(i)
    Else
      If Maxnb < Mynb(i) Then
        Maxnb = Mynb(i)
      End If
    End If
  Next
End Function

クエリ記述:Maxnb([A],[B],[C])

ところが、現状Cの値を無視し、A,Bの最大値のみを取得してきます。関数の記述に不備がありますでしょうか??
Ubound関数は配列のサイズを取得してくるとのことですが、デバッグの結果、iは0と1の繰り返しですので、3つめのフィールドCを認識してないのでは?と思っています。が、解決法の見当がつきません。

お分かりになる方、どうか回答をよろしくお願いいたします。

(Win Accessともに2000)
・ツリー全体表示

【11962】Re:compileエラー
回答    - 11/2/28(月) 10:33 -

引用なし
パスワード
   雅です。

>以下のコードを使って、進数変換を実行したいと思いますが、
>デバッグをかけると、compileエラーが出ています。問題はどこにあるのか
>わからりません。

コンパイルエラーならメニューのデバッグ->なんちゃらのコンパイル
でエラー個所わかると思いますが?
ほんとにコンパイルエラーですか?型が一致しませんとか言われませんか?
型が一致しませんとか言われるんであればデバッグ方法に問題があります。
たとえばデバッグウィンドウで
?Conv_Number(10,2)
とかすると型が一致しませんになります。
理由は考えてみませう。
ヒント:戻り値はVariant型だけれどもVariantの内部型は?
・ツリー全体表示

【11961】Re:compileエラー
質問  Usui/K  - 11/2/26(土) 21:32 -

引用なし
パスワード
   りる さん
>
>>デバッグをかけると、compileエラーが出ています。問題はどこにあるのか
>とりあえず参照設定で「参照不可」になっているものを確認してみてはいかがでしょうか。

 Access2007_VBE_ツール_参照設定を開いて、「参照不可」のような項目が
ないようです。
 こちらの操作はおかしいかな??
・ツリー全体表示

【11960】Re:フィールドの追加について
回答    - 11/2/23(水) 16:54 -

引用なし
パスワード
   雅です。

ヘルプを見る限りSQLではできなそうですね。
1つずつだと問題あるんですか?
どうしてもいっぺんに追加したければTableDefオブジェクトを使うしかないかな。

With TableDefs![テーブル名]
  Set FLD = .CreateField("名前", 型, [サイズ])

  .Fields.Append FLD
End With

って感じかな。
(変数の宣言は省いてます)
・ツリー全体表示

【11959】Re:フィールドの追加について
質問  MIMI  - 11/2/23(水) 16:20 -

引用なし
パスワード
   下記の記述でフィールドを追加させることができました

Dim db As DAO.Database
Set db = CurrentDb

db.Execute "alter table T_Master add column 区分 Text(10)", dbFailOnError
Set db = Nothing

複数のフィールドを一括で追加させることは可能でしょうか?
下記のように記述してみたけど、駄目でした・・・

db.Execute "alter table T_Master add column 区分 Text(10)", "alter table T_Master add column 分類 Text(10)", dbFailOnError
Set db = Nothing


どうか伝授いただけるとありがたいです
よろしくお願いします


▼MIMI さん:
>既存のテーブルにVBAを使って、
>3つフィールドを追加させたいのですが、
>いまいち、やり方がわからなくて悩んでます
>
>テーブル名は T_Master です
>
>ネットで調べてみて、サンプルを記述させてみたりしたのですが
>どうもうまくいきません
>解読できてないせいもありますが・・・
>Appendメソッドを使用と書いてありましたが、
>どのように使えばいいのか?
>
>あと、下記のように記述してみましたが、構文エラーになってしまいます
>
>ALTER TABLE T_Master ADD COLUMN 区分 TEXT(25)
>
>なんせAccess初心者です
>
>どうか、どうしたらいいのか伝授お願いします
>
>
>
・ツリー全体表示

【11958】フィールドの追加について
質問  MIMI  - 11/2/23(水) 16:07 -

引用なし
パスワード
   既存のテーブルにVBAを使って、
3つフィールドを追加させたいのですが、
いまいち、やり方がわからなくて悩んでます

テーブル名は T_Master です

ネットで調べてみて、サンプルを記述させてみたりしたのですが
どうもうまくいきません
解読できてないせいもありますが・・・
Appendメソッドを使用と書いてありましたが、
どのように使えばいいのか?

あと、下記のように記述してみましたが、構文エラーになってしまいます

ALTER TABLE T_Master ADD COLUMN 区分 TEXT(25)

なんせAccess初心者です

どうか、どうしたらいいのか伝授お願いします


 
・ツリー全体表示

【11957】Re:更新クエリで連番をふるときに・・
お礼  あおぎん  - 11/2/21(月) 13:18 -

引用なし
パスワード
   ▼よろずや さん:

早速のご回答ありがとうございました。


>> そこで質問なのですが、その際、関数の引数としては、[コード][ 番号]どちらを設定するのでしょうか??
>
>どちらでも同じですし、他の項目でもかまいません。

それを聞いて安心しました。
ということはいくら並び替えの項目が増えても対応できるということですね!

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

【11956】Re:compileエラー
発言  りる  - 11/2/20(日) 11:52 -

引用なし
パスワード
   Usui/K さん。

>デバッグをかけると、compileエラーが出ています。問題はどこにあるのか
とりあえず参照設定で「参照不可」になっているものを確認してみてはいかがでしょうか。
・ツリー全体表示

【11955】Re:更新クエリで連番をふるときに・・
回答  よろずや  - 11/2/19(土) 19:33 -

引用なし
パスワード
   > そこで質問なのですが、その際、関数の引数としては、[コード][ 番号]どちらを設定するのでしょうか??

どちらでも同じですし、他の項目でもかまいません。
この手法は、クエリーで指定した並び順に連番を振ります。
引数は意味を持ちません。
ただし、引数を指定しないと関数が1回しか呼ばれません。
各レコード毎に関数が呼ばれるようにするために、
レコードの値を引数に渡しているだけです。
・ツリー全体表示

【11954】compileエラー
質問  Usui/K  - 11/2/19(土) 10:36 -

引用なし
パスワード
   以下のコードを使って、進数変換を実行したいと思いますが、
デバッグをかけると、compileエラーが出ています。問題はどこにあるのか
わからりません。
アドバイスを求めて、投稿しました。
よろしくお願いいたします。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
コードソースを使って
Function Conv_Number(ByVal Number As Long, ByVal N As Integer)
If N <= 1 Or N > 36 Then Exit Function
Const DigitChr As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Dim RESULT() As Variant
ReDim RESULT(0)
If Number <= 1 Then
RESULT(0) = Number
Else
Do While Number > 0
RESULT(UBound(RESULT)) = Mid$(DigitChr, (Number Mod N) + 1, 1)
Number = Number \ N
If Number > 0 Then ReDim Preserve RESULT(UBound(RESULT) + 1)
Loop
End If
Conv_Number = RESULT
Erase RESULT
End Function
・ツリー全体表示

【11953】更新クエリで連番をふるときに・・
質問  あおぎん  - 11/2/18(金) 14:36 -

引用なし
パスワード
   いつも参考にさせてもらっています。
検索してもよくわからなかったので、質問します。よろしくお願いします。


 バーコード番号として連続番号を割り付けるための処理を、更新クエリで実行したいと考えています。
(こちらを参照しました。ht p/www.accessclub.jp/samplefile/samplefile_44.htm)

 Numbers関数を作成し、更新クエリでこの関数を利用して連番をふることができるのですが、
更新クエリの元に選択クエリを持ってくることで、任意の項目で並べ替えた順で連番がふれるというものです。

 さて、参照にしたサイトでは、選択クエリの並び替え設定項目がひとつ([購入額])で、関数Numbers([購入額])により希望の連番を取得していましたが、こちらの希望としては、複数の項目([コード]と[番号])で並び替えたクエリをもとに更新クエリを実行しようと思っています。

 そこで質問なのですが、その際、関数の引数としては、[コード][ 番号]どちらを設定するのでしょうか??

 ちなみに両方で試してみたら、ざっと確認したところ、どちらも希望とおりの連番がふられているようでしたが、引数はこだわらなくても大丈夫でしょうか?

 自分の理解では、引数の並び順に連番がふられるので、並び替え項目が複数ある場合、希望とおりの連番がふれない(コードを選択したらコードだけで並び替えが行われ、番号の並び替えが行われない可能性もあるのでは?)のではと思っているのですが、見た目はきちんとなっているような・・・。

 件数が数千と多く、すべてを目で確認することができず、きちんとした値がとれているか確信がもてないので、こちらで教えていただけたらと思い質問しました。

 よろしくお願いします。


以下は関数のコードです。

Dim intcount As Long '値保持のため、枠外に記入。
Function Numbers(strQueryName As String) As Long
  'これはレコードに対してカウンタ番号を返す関数です。
  'なお、この関数は、クエリ上で実行してください。
  intcount = intcount + 1 'カウントを1つ増加させます。
  
  If intcount > 100000 Then
   intcount = 0
  End If
  Numbers = intcount
End Function
                   (win 2000 access 2000)
・ツリー全体表示

【11952】Re:テキストボックスとコンボボックスの連動
回答  めぐお  - 11/2/9(水) 9:02 -

引用なし
パスワード
   ▼よろずや さん:
▼雅さん:

ご返事が遅くなり、すみません。
ご回答頂き、ありがとうございました。
いろんなサイトを調べて、自分なりに作ってみたところ、
思い通りではないですが、ある程度形にすることができました。

またわからないことが出てきましたら、ご質問させていただきます。

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

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