Access VBA質問箱 IV

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

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


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

【7406】日付型に変換
質問  ムーン  - 06/2/28(火) 11:55 -

引用なし
パスワード
   ムーンと申します。
掲題につきまして、どなたかお力をお貸しください。

テーブルAに「受付日」というフィールドがあります。
そのフィールドにはテキスト型で取り込まれたyyyymmdd
(例 20060228)というような文字が入っています。
このフィールドの文字を全て日付型のyyyy/mm/dd(例 2006/02/28)に
一括変換(フォーマット?)できませんでしょうか?

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

【7405】Re:検索結果について
質問  TB1  - 06/2/28(火) 11:43 -

引用なし
パスワード
   改造中に気が付きましたが、テキストボックスのコントロールソースを選んで名前を変更しようとすると、テキスト521みたいなままで保存ボタンを押しても変更できていないことがわかりました。これが原因で検索結果が出てこないんじゃないでしょうか。なぜ変更できないのでしょうか。教えてください。
・ツリー全体表示

【7404】Re:検索結果について
質問  TB1  - 06/2/28(火) 10:17 -

引用なし
パスワード
   ▼まさ7251 さん:
アドバイスありがとうございます。
早速確認してみました。
>Me.検索区分 には、どのような値が入っていますか?
プロパティは
名前 検索区分
コントロールソース 空白

実際のフォームでは
商品分類コード テキスト型頭に0あり
JANコード    テキスト型頭に0あり
商品名     テキスト型
を入力します。
残念ながら質問をうまく理解できていません。

>recN(CInt(Me.検索区分)).Name とか、recN(CInt(Me.検索区分)) は、
>想定通りの値が取れていますか?
各テーブルの列見出しとMe.の名前が同一であるかということでしょうか。
そうならば、同一です。

>strSQL には、想定通りのSQL文ができていますか?
想定通り、がなにをさすのか理解できません。

>On Error GoTo LBL_ERROR をのけても正常に動きますか?
>(正常に動くのを確認できていないのなら、
> On Error はコメントにしておいてください。)
コメントアウトしても稼動しました。

現状では、フォーム上半分にラジオボタンで検索項目が3つあり
下半分に結果がでるようになってます。
正常に検索できる2つと同様にもう1つを改造したのですが、下の結果欄には改造したデータについては表示されます。つまり
もともとあった検索項目:店番、JANコード、商品名から
店番を商品分類コードに変更
下の結果欄にある店番も商品分類コードに変更
(コントロールソース、コードのMe.なども書き換えてます)
結果として、
JANで検索すれば、結果は商品分類コードも共に出てくるのです。
しかし、商品分類コードで検索するとなにも表示されません。

何が悪いのか皆目見当が付きません。
ファイル自体がなにか壊れているのでしょうか。
エクセルやイラストレーターでよくありますよね。

的確な材料が提示できなくて恐縮ですが、どうぞアドバイス願います。
・ツリー全体表示

【7403】Re:チェックボックスでの抽出条件
お礼  masamasa  - 06/2/28(火) 10:06 -

引用なし
パスワード
   解決できました。
たんさん返事ありがとうございました。
・ツリー全体表示

【7402】Re:メニューバーのカスタマイズについて
回答  小僧  - 06/2/28(火) 9:57 -

引用なし
パスワード
   ▼ユミちゃん さん:
おはよございます。

なかなか回答が付きませんね…。
当方も詳しくないので突っ込まれると解りかねますが、
下記URLを参考にしてサンプルコードを作成してみました。

http://support.microsoft.com/kb/303729/ja

Sub カスタムメニューバーを作成()
'要参照設定 Microsoft Office x.x Object Library
Dim CB As CommandBar
  Set CB = Application.CommandBars.Add("Temp1", msoBarTop, True, False)
    With CB
      .Controls.Add ID:=23   ' ID for Open
      .Controls.Add ID:=3   ' ID for Save
      .Controls.Add ID:=2   ' ID for Spelling
      .Controls.Add ID:=4   ' ID for Print
      .Controls.Add ID:=19   ' ID for Copy Drawing
      .Controls.Add ID:=3738  ' ID for Mail as Attachment
      .Visible = True
    End With
  Set CB = Nothing
End Sub

詳しくはヘルプでCommandBar オブジェクトを参照されてみて下さい。

※ テストコードを試される前に必ずバックアップを取っておいてください。
・ツリー全体表示

【7401】Re:日報の作成
回答  小僧  - 06/2/28(火) 8:58 -

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

>とエラーが出て保存できません。

T_Work に何かデータが入っていませんでしょうか?
用意するのは空っぽのテーブルとなります。


>このフォームはT_Workがレコードソースですよね。

はい、その通りです。
ウィザードの「単票フォーム」でフォームを作成されて下さい。


>T_Workをレコードソースにしたフォームに教えていただいたコードを
>書き込むという感じでよろしいでしょうか。

はい。
フォーム の プロパティ の [イベント] タブに
「読み込み時」という項目があるかと思われます。

こちらを選択すると右側に表示される「...」をクリックし、[コードビルダ]を選択。

Private Sub Form_Load()

End Sub

という画面が出ると思いますので、そこに先ほどのコードを記述します。


「読み込み解除時」も同じ様にされてみて下さい。
・ツリー全体表示

【7400】Re:"と’のつけ方について
回答  Gin_II  - 06/2/28(火) 8:32 -

引用なし
パスワード
   >rs.Find"商品名like'*パン*’”という例文に関連して
>rs.Find"商品名like * " & ipt & "*" という例文が

そもそも、↑はそれぞれ動作しますか?
どっかを参照して書く際でも、正確に記述してくださいね。

rs.Find "商品名 Like '*パン*'"
rs.Find "商品名 Like '*" & ipt & "*'"

もしくは、

rs.Find "商品名 Like '%パン%'"
rs.Find "商品名 Like '%" & ipt & "%'"

ではないですか?
・ツリー全体表示

【7399】"と’のつけ方について
質問  boosuke  - 06/2/28(火) 0:03 -

引用なし
パスワード
   rs.Find"商品名like'*パン*’”という例文に関連して
rs.Find"商品名like * " & ipt & "*" という例文が
ありました。ちなみに(Dim ipt as String)でiptはインプットボックスです。
上の方はわかるのですが、下の文はなぜ
rs.Find"商品名like'* " & ipt & "*'"というふうにシングルコクォーテーションはつけないのですか?
・ツリー全体表示

【7398】Re:日報の作成
質問  青首  - 06/2/27(月) 20:57 -

引用なし
パスワード
   早くも躓きましたので、質問させていただきます。

>まず、下記の様なテーブルを用意します。
>
>テーブル:T_Work
>
>  フィールド名 データ型
>  社員ID    数値型   (主キー)
>  日付     日付/時刻型
>  業務内容   テキスト型
>  残業時間   数値型

T_Workを作成して、社員IDに主キーを設定して保存しようとしたのですが、
「インデックスまたは主キーにはNUll値を使用できません。」

とエラーが出て保存できません。

 
>そしてフォームはこのテーブルを元にウィザードで作成します。
>社員名でなく、社員ID のテキストボックスができてしまうので、
>こちらを不可視にして、テキストボックスを追加します。

このフォームはT_Workがレコードソースですよね。

>あとは、こちらのフォームの「読み込み時」「読み込み解除時」に
>T_Work のデータを出し入れする様な処理を加えてあげます。
>

T_Workをレコードソースにしたフォームに教えていただいたコードを
書き込むという感じでよろしいでしょうか。

初心者なため、ほんと初歩的な質問かもしれませんが、
どうかよろしくお願いします。
・ツリー全体表示

【7397】Re:日報の作成
お礼  青首  - 06/2/27(月) 19:45 -

引用なし
パスワード
   小僧さん、早速の回答ありがとうございます。
ちょっと自分のレベルでは理解するのに難しそうではありますが、
頑張って作ってみようと思います。

つまづきましたら、また書き込ませていただきますので、
お手が空いているようでしたら、またアドバイスをいただければ
と思います。
・ツリー全体表示

【7396】Re:検索結果について
発言  まさ7251  - 06/2/27(月) 17:40 -

引用なし
パスワード
   何点か確認です。

Me.検索区分 には、どのような値が入っていますか?

recN(CInt(Me.検索区分)).Name とか、recN(CInt(Me.検索区分)) は、
想定通りの値が取れていますか?

strSQL には、想定通りのSQL文ができていますか?

On Error GoTo LBL_ERROR をのけても正常に動きますか?
(正常に動くのを確認できていないのなら、
 On Error はコメントにしておいてください。)

その辺から確認してみてください。
・ツリー全体表示

【7395】Re:少しは検索してます?
回答  masamasa  - 06/2/27(月) 10:59 -

引用なし
パスワード
   検索はしたのですが、思っているものと違いました。
フォームにチェックボックスを使って、クエリー検出条件としてフィールドの中の未入力を出力するしないを選択しレポートに反映するということなんです。
・ツリー全体表示

【7394】Re:日報の作成
回答  小僧  - 06/2/27(月) 10:45 -

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

>テーブル:T_日報情報
>
>  フィールド名 データ型
>  日報ID    オートナンバー型
>  業務内容   テキスト型
>  残業時間   数値型


まず、こちらのテーブルには T_社員 との関連がないので、
社員ID フィールドを追加します。

また、日付のフィールドも追加してみましょう。

テーブル:T_日報情報

  フィールド名 データ型
  日報ID    オートナンバー型
  社員ID    数値型
  日付     日付/時刻型
  業務内容   テキスト型
  残業時間   数値型
  

お望みの日報を作る方法は色々あると思われますが、
一案としてワークテーブル(一時的に使用するテーブル)を使った方法を紹介させて頂きます。

まず、下記の様なテーブルを用意します。

テーブル:T_Work

  フィールド名 データ型
  社員ID    数値型   (主キー)
  日付     日付/時刻型
  業務内容   テキスト型
  残業時間   数値型
  
そしてフォームはこのテーブルを元にウィザードで作成します。
社員名でなく、社員ID のテキストボックスができてしまうので、
こちらを不可視にして、テキストボックスを追加します。

テキストボックス:社員名
コントロールソース:=DLookUp("社員名","T_社員","社員ID=" & [社員ID])

あとは、こちらのフォームの「読み込み時」「読み込み解除時」に
T_Work のデータを出し入れする様な処理を加えてあげます。

Private Sub Form_Load()
Dim strSQL As String

  strSQL = "INSERT INTO T_Work(社員ID, 日付) " _
      & "SELECT 社員ID, Date() FROM T_社員"
     
  DoCmd.RunSQL strSQL
  Me.Requery
End Sub

Private Sub Form_Unload(Cancel As Integer)
Dim strSQL As String
  
  strSQL = "INSERT INTO T_日報情報(日付, 社員ID, 業務内容, 残業時間) " _
      & "SELECT 日付, 社員ID, 業務内容, 残業時間 FROM T_Work"
  
  DoCmd.RunSQL strSQL
  
  strSQL = "DELETE FROM T_Work"
  DoCmd.RunSQL strSQL
End Sub

何かしらのヒントになりましたら幸いです。
・ツリー全体表示

【7393】Re:少しは検索してます?
発言  たん  - 06/2/27(月) 10:06 -

引用なし
パスワード
   本掲示板だけでも、下記のように多数ありますが。

http://www.vbalab.net/vbaqa/c-board.cgi?word=%83%60%83F%83b%83N%83%7B%83b%83N%83X%81@%92%8A%8Fo&way=0&target=all&view=0&id=access&cmd=src&x=16&y=17
・ツリー全体表示

【7392】Re:検索結果について
質問  TB1  - 06/2/27(月) 9:55 -

引用なし
パスワード
   ▼まさ7251 さん:
おはようございます。
コードをずらずら書くのも何かと思いまして、遠慮しておりました。すみません。
以下に検索のコードを書きます。

Private Sub 検索_Click()
 Dim cnn As ADODB.Connection
 Dim recN As ADODB.Recordset
 Dim recM As ADODB.Recordset
 Dim strSQL As String
 Dim strSearch As String
 
 Set Me.Recordset = Nothing
 Me.商品分類コード.ControlSource = ""
 Me.JANコード.ControlSource = ""
 Me.商品名.ControlSource = ""

 
On Error GoTo LBL_ERROR
 Set cnn = New ADODB.Connection
 Set recN = New ADODB.Recordset
 Set recM = New ADODB.Recordset
 
 Set cnn = Application.CurrentProject.Connection
 
 strSQL = "SELECT * FROM SHOHIN "
 If IsNull(Me.検索ワード) = False And Len(Me.検索ワード) <> 0 Then
  strSearch = "SELECT * FROM 環境設定 WHERE 選択フラグ=1;"
  recN.Open strSearch, cnn, adOpenDynamic, adLockReadOnly
  If recN.EOF = False And recN.BOF = False Then
   strSQL = strSQL & "WHERE " & recN(CInt(Me.検索区分)).Name & " "
   Select Case recN(CInt(Me.検索区分))
    Case 0
     strSQL = strSQL & "='" & Me.検索ワード & "' "
    Case 1
     strSQL = strSQL & "LIKE '" & Me.検索ワード & "%' "
    Case 2
     strSQL = strSQL & "LIKE '%" & Me.検索ワード & "' "
    Case 3
     strSQL = strSQL & "LIKE '%" & Me.検索ワード & "%' "
   End Select
  End If
  recN.Close
 End If
 strSQL = strSQL & "ORDER BY SHOHIN_CODE;"
 
 recM.Open strSQL, cnn, adOpenKeyset, adLockReadOnly
 If recM.EOF = False And recM.BOF = False Then
  Set Me.Recordset = recM
  Me.商品分類コード.ControlSource = recM("01").Name
  Me.JANコード.ControlSource = recM("SHOHIN_CODE").Name
  Me.商品名.ControlSource = recM("SHOHIN_NAME").Name
 End If

今回、商品分類コードの部分が変更した箇所です。recMの01という名は、元のテーブルごと分かり易く名前を変更してみました。
しかし、相変わらず検索はしてくれません。

以前同じように改造して、店番という名前に変更したときはうまく行ったのですが、コードを見比べてもMeの名前と、recMの名前の他は違いはないようにみえるのですが。

ごく簡単なミスだと思うのですが、アドバイスお願いします。
・ツリー全体表示

【7391】メニューバーのカスタマイズについて
質問  ユミちゃん  - 06/2/26(日) 4:33 -

引用なし
パスワード
   ACCESSのメニュー(ファイル、編集、表示、挿入・・・・)の表示を変更して
私、独自のメニューに変更ができないでしょうか。メニューの下に表示される
コマンドも変更して各処理を立ち上げたいのですが?
宜しくご指導ください。
・ツリー全体表示

【7390】Re:配列をセットする方法
回答  Gin_II  - 06/2/26(日) 3:46 -

引用なし
パスワード
   > 元のテーブルは支店1〜支店80のフィールドとして持っています。
> 場合によって、支店1〜支店80は可変となるから、無いデータのフィールドを
> 除外したいです。

正規化をすべきだと思います。

[ACC2003] データベースの正規化の基礎
http://support.microsoft.com/kb/283878/ja


とりあえず、ユニオンクエリを使えば大丈夫だと思います。

SELECT 製品名, "支店1" AS 支店名, 支店1 AS 支店 FROM クエリ名
UNION ALL
SELECT 製品名, "支店2", 支店2 FROM クエリ名
UNION ALL
SELECT 製品名, "支店3", 支店3 FROM クエリ名
         :
UNION ALL
SELECT 製品名, "支店80", 支店80 FROM クエリ名
・ツリー全体表示

【7389】日報の作成
質問  青首  - 06/2/25(土) 21:37 -

引用なし
パスワード
   質問させていただきます。

会社に30人ほどの社員がおります。
その社員の日報を毎日入力するのですが、ACCESSでうまく作れたらなと思い
挑戦しています。

テーブル:T_社員
  
  フィールド名 データ型
   社員ID   オートナンバー型
   社員名   テキスト型

テーブル:T_日報情報

  フィールド名 データ型
  日報ID    オートナンバー型
  業務内容   テキスト型
  残業時間   数値型

とりあえず、こんなテーブルを作ってみました


希望するフォームの形は

-------------------------------------------------------
 ---------    ----------
 |社員名 |    | 日付 |
 ---------    ----------
 --------------------  
 |   業務内容   |   -------------
 |         |   | 残業時間 |
 --------------------   -------------

             -------------  ------------
             | 前のレコードへ|  |次のレコードへ|
             -------------  ------------
-----------------------------------------------------------

 フォームを開くとT_社員の一番初めに登録された社員名が
 表示されます。
 その社員の日報を入力したらコマンドボタン[次のレコードへ]を
 クリックすると、T_社員の2番目に登録された社員名が表示されます。
 こんな感じで一人一人社員の画面を表示させて入力していきます。

 テキストボックス[日付]には今日の日付が表示されます。

 次の日は、テキストボックス[日付]に次の日の日付が表示され、
 またT_社員の一番初めから順々に登録していけるような形にしたいです。

 テーブルの構成をどうしたら良いかも分からなかったため、日付は
 テーブルに入っていません。

 テーブルの構成から教えていただければと思います。


  
・ツリー全体表示

【7388】Re: 補足
お礼  kumakai  - 06/2/25(土) 9:38 -

引用なし
パスワード
   小僧さん、たんさん
お返事ありがとうございました。
今回のレッスンを通じて、Dfirst関数の理解を深めることができました。
いい勉強になりました。
・ツリー全体表示

【7387】Re:検索結果について
発言  まさ7251  - 06/2/24(金) 20:10 -

引用なし
パスワード
   ▼TB1 さん:
>前回の続きで恐縮ですが、検索フォームで3つの検索テーマボタンがあって
>そのうちのひとつを改造したのですが結果が出てきません。

前回とは、コレですか?
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=7307;id=access

>Private Sub 検索_Click()
> Dim cnn As ADODB.Connection
> Dim recN As ADODB.Recordset
> Dim recM As ADODB.Recordset
> Dim strSQL As String
> Dim strSearch As String
> 
> Set Me.Recordset = Nothing
> Me.商品分類コード.ControlSource = ""
> Me.JANコード.ControlSource = ""
> Me.商品名.ControlSource = ""
>
>で、「商品分類コード」の部分を差換えたのですが、ここをチェックボタンで
>選択して検索ボタンを押すと、なにも結果が返ってきません。
>JANや商品名を選ぶと、該当データがずらっとでてくるんですが。

これだけの情報では、なんとも言いようがないと思います。
コレだけのコードで検索できるのですか?
どうやって検索しているのでしょうか?

>コードの名前、テーブルの名前をチェックしても、すべて差換えた状態
>なのですが、どこか見落としているんでしょうか。

どのような仕組みで検索しているのかを理解していけば、
どうして検索できないのかがわかるかもしれません。
・ツリー全体表示

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