Access VBA質問箱 IV

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

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


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

【11213】Re:四捨五入のPGをもう少し工夫したいの...
回答  tomomi  - 09/10/7(水) 10:49 -

引用なし
パスワード
   hatenaさん 
ご指導ありがとうございます。

>今回の処理に関係ないコードも提示していると言うことは、
>コードの内容、意味はほとんど理解できてないと思えますが、
>どうですか。

実際のところ申し訳ありませんが全ては理解できていません。
動きを調べてぬきだしてみました。

>少なくとも、今回の処理に関係ある部分だけ抜き出せるぐらいの
>VBAスキルがないと、このサイトの下記の基本方針に該当することに
>なりかねません。

下記内容が必要な部分で抜き出した見ました。 

Function TextConv(文字列 As String) As String
 
 Const 数字データ = "0123456789.", 四捨五入 As Currency = 0.05
 Dim 数字列 As Integer, 変換数値 As String
 Dim Idx1 As Long, Idx2 As Long, 文字列数 As Long
 
 TextConv = 文字列
 文字列数 = Len(文字列) + 1
  
  For Idx1 = 1 To 文字列数
  
  If Idx1 <> 文字列数 And _
    InStr(1, 数字データ, Mid(文字列, Idx1, 1), vbBinaryCompare) > 0 Then
   数字列 = 数字列 + 1
   
  Else
  
   If 数字列 > 0 Then
    変換数値 = Mid(文字列, Idx1 - 数字列, 数字列)
    変換数値 = Format(Int((Val(変換数値) + 四捨五入) * 10) / 10, "0.00")
    
    If Len(変換数値) > 数字列 Then
     TextConv = Left(TextConv, Idx1 + Idx2 - 数字列 - 1) & NumStr & _
           Mid(文字列, Idx1)
     Idx2 = Idx2 + 1
    Else
    
     Mid(TextConv, Idx1 + Idx2 - 数字列, 数字列) = 変換数値
    
    End If
    
    数字列 = 0
   End If
  
  End If
 
 Next Idx1

End Function


>関係あるコードのみ提示して、
>自分でどのように修正してみたのか、
>あるいはコード内で理解できない部分は、どこか、
>など、自分が理解しようと努力したことを示すような
>質問をしてください。

>例示されたデータでは、数値は 1未満(0.88, 0.2006・・)のものだけですが、
>実際のデータもそうなのでしょうか。1以上のデータを含む場合もあるのでしょうか。

1.65、5.635、52.52695など1以上の数字にも対応できるようにしたいです。
少数第二位の場合
1.70、5.605、52.50695
となるように。
少数第三位の場合
1.65、5.640、52.53095
となるように


四捨五入をするに当たりどこで四捨五入をするかを任意で決めれるように
悩んでみた結果ですがうまくいきません・・・

Function TextConv(文字列 As String) As String
 
 Const 数字データ = "0123456789.", 四捨五入 As Currency = 0.05
 Dim 少数第何位 As Integer
 Dim 数字列 As Integer, 変換数値 As String
 Dim Idx1 As Long, Idx2 As Long, 文字列数 As Long
 
 
 TextConv = 文字列
 文字列数 = Len(文字列) + 1
 変換数値 = 0
  For Idx1 = 1 To 文字列数
  
  If Idx1 <> 文字列数 And _
    InStr(1, 数字データ, Mid(文字列, Idx1, 1), vbBinaryCompare) > 0 Then
   数字列 = 数字列 + 1


  Else
  
   If 数字列 > 0 Then
    変換数値 = Mid(文字列, Idx1 - 数字列, 数字列)
    少数第何位 = Me.少数第何位
   Select Case 少数第何位
  
   Case 1
    変換数値 = Format(Int((Val(変換数値) + 四捨五入)) / "0.0")
   Case 2
    変換数値 = Format(Int((Val(変換数値) + 四捨五入) * 10) / 10, "0.00")
   Case 3
    変換数値 = Format(Int((Val(変換数値) + 四捨五入) * 100) / 100, "0.000")
   Case 4
    変換数値 = Format(Int((Val(変換数値) + 四捨五入) * 1000) / 1000, "0.0000")
   Case 5
    変換数値 = Format(Int((Val(変換数値) + 四捨五入) * 10000) / 10000, "0.00000")
   Case 6
    変換数値 = Format(Int((Val(変換数値) + 四捨五入) * 100000) / 100000, "0.000000")
   Case 7
    変換数値 = Format(Int((Val(変換数値) + 四捨五入) * 1000000) / 1000000, "0.0000000")
   Case 8
    変換数値 = Format(Int((Val(変換数値) + 四捨五入) * 10000000) / 10000000, "0.00000000")
   Case 9
    変換数値 = Format(Int((Val(変換数値) + 四捨五入) * 100000000) / 10000000, "0.00000000")
    
   End Select
    
    If Len(変換数値) > 数字列 Then
     TextConv = Left(TextConv, Idx1 + Idx2 - 数字列 - 1) & NumStr & Mid(文字列, Idx1)
     Idx2 = Idx2 + 1
    Else
    
     Mid(TextConv, Idx1 + Idx2 - 数字列, 数字列) = 変換数値
    
    End If
    
    数字列 = 0
   
  End If
  End If
 
 Next Idx1

End Function

とたとえば四捨五入の位を入れるテキストボックスに1〜9の数字を入れられた場合に処理を分けて見たりしたのですが。
1を入力ではオーバーフローしてしまい。

2入力でも
こんなデーターが

sdfg
fgsは0.7ですが0.80555dfgsdfhh。
egdは0.861ですが0.90に112あ.43216なりま112b.4c3216す。

こんなふうに
sdfg
fgsはですが0.800.80fgsdfhh。
egdは0.860.900.900.90ああ.4320.40ま112bb.4c3c321す。

なってしまいます。
・ツリー全体表示

【11212】Re:四捨五入のPGをもう少し工夫したいの...
回答  hatena  - 09/10/7(水) 10:09 -

引用なし
パスワード
   > すみません。
> ネット内で似たような内容を検索した所出てきて引用させていただいた
> コードです。

tomomiさんのVBAスキルを知りたかったため質問しました。
VBAスキルによって回答も変わってきますので。

今回の処理に関係ないコードも提示していると言うことは、
コードの内容、意味はほとんど理解できてないと思えますが、
どうですか。

少なくとも、今回の処理に関係ある部分だけ抜き出せるぐらいの
VBAスキルがないと、このサイトの下記の基本方針に該当することに
なりかねません。

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

 ・丸投げ
   「○○するにはどうすればいいか教えてください」といったような、
   コードを最初から最後まで教えてもらうことを期待するような質問
-------------------------------------------------------------------

関係あるコードのみ提示して、
自分でどのように修正してみたのか、
あるいはコード内で理解できない部分は、どこか、
など、自分が理解しようと努力したことを示すような
質問をしてください。

> >また、その法則を論理的な言葉で説明してください。
> 
>  任意に四捨五入のする位置を決定し、どのようにと言いますと四捨五入する
>  位置を数字入力等して決めてもらい、例えば、数字入力するテキストボック
>  スに"3"と入れたら=少数第3位を四捨五入するに設定される。
>  そして、少数第二位までしかない数字はそのままで。少数第3位のある数字
>  はそこで四捨五入する、また、それ以上小数点以下のものがあれば、文字列
>  として残したいという作業をしたいのですが。

例示されたデータでは、数値は 1未満(0.88, 0.2006・・)のものだけですが、
実際のデータもそうなのでしょうか。1以上のデータを含む場合もあるのでしょうか。
・ツリー全体表示

【11211】Re:四捨五入のPGをもう少し工夫したいの...
回答  tomomi  - 09/10/7(水) 9:38 -

引用なし
パスワード
   ▼hatena さん:
>提示されたコードは数値の書式が 0.00 という前提になっているのでは。
>このコードはtomomiさんが書いたものですか。
 すみません。
 ネット内で似たような内容を検索した所出てきて引用させていただいた
 コードです。
>
>> これは0.88ですが0.90になります。
>> これは0.1966ですが0.20になります。
>> これは0.7ですが0.80555になります。
>> これは0.861ですが0.90に112あ.43216なりま112b.4c3216す。
>>
>> これは四捨五入です。
>
>この文章を変換後、どのようになるのが希望ですか。
 
  hatenaさん返信ありがとうございます。
  小数点第何位を四捨五入するかによって

  ●小数第二位を四捨五入であれば

  結果はこうしたいのですが。

  これは0.90ですが0.90になります。
  これは0.2066ですが0.20になります。
  これは0.7ですが0.80555になります。
  これは0.901ですが0.90に112あ.43216なりま112b.4c3216す。 
 
  ●小数第三位を四捨五入であれば
  
  結果はこうしたいのですが。

  これは0.88ですが0.90になります。
  これは0.2006ですが0.20になります。
  これは0.7ですが0.81055になります。
  これは0.860ですが0.90に112あ.43216なりま112b.4c3216す。

 >また、その法則を論理的な言葉で説明してください。
 
  任意に四捨五入のする位置を決定し、どのようにと言いますと四捨五入する
  位置を数字入力等して決めてもらい、例えば、数字入力するテキストボック
  スに"3"と入れたら=少数第3位を四捨五入するに設定される。
  そして、少数第二位までしかない数字はそのままで。少数第3位のある数字
  はそこで四捨五入する、また、それ以上小数点以下のものがあれば、文字列
  として残したいという作業をしたいのですが。
 
  かなり難しいことですよね・・・・。
  ACCESS始めたばかりで良く理解が出来ていないところが多く申し訳ありません


  すみません質問ややこしくて。
・ツリー全体表示

【11210】Re:ファイル更新日付の表示
発言  超初心者  - 09/10/7(水) 9:11 -

引用なし
パスワード
   ▼hanako さん:
テーブルに「ファイル更新日」を保存し、
それを"ラベル"ではなく"テキストボックス"で表示すると良いです。


「ファイル更新日」がボタンを押した日、すなわち今日であれば
DATE()で取得できますし、
取込むファイルの更新日であれば、
h t t p ://www.google.co.jp/search?hl=ja&source=hp&q=vba+ファイル+更新日+取得
こういったところが参考になるかと思います。
・ツリー全体表示

【11209】Re:四捨五入のPGをもう少し工夫したいの...
回答  hatena  - 09/10/6(火) 18:12 -

引用なし
パスワード
   提示されたコードは数値の書式が 0.00 という前提になっているのでは。
このコードはtomomiさんが書いたものですか。

> これは0.88ですが0.90になります。
> これは0.1966ですが0.20になります。
> これは0.7ですが0.80555になります。
> これは0.861ですが0.90に112あ.43216なりま112b.4c3216す。
>
> これは四捨五入です。

この文章を変換後、どのようになるのが希望ですか。

また、その法則を論理的な言葉で説明してください。
・ツリー全体表示

【11208】四捨五入のPGをもう少し工夫したいのです...
質問  tomomi  - 09/10/6(火) 9:40 -

引用なし
パスワード
   Option Compare Database
'ダイアログの変数を定義

Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Private Declare Function GetOpenFileName Lib "Comdlg32" Alias "GetOpenFileNameA" (lpofn As OPENFILENAME) As Long


'参照ボタンクリック時にファイルを開くダイアログを表示

Private Sub 参照_Click()

 Dim o As OPENFILENAME
  With o
   .lpstrFile = String(256, vbNullChar)

   .nMaxFile = LenB(o.lpstrFile)
   .lpstrFilter = "テキストファイル" & vbNullChar & "*.txt;*.csv"
   .lpstrInitialDir = "C:\AcpkDB"
   .lStructSize = LenB(o)
  End With
 GetOpenFileName o
 If o.lpstrFile = vbNullChar Then
  MsgBox "キャンセルされました"
  Me.テキスト0 = ""
  Exit Sub
 End If
  Me.テキスト0 = Left(o.lpstrFile, InStr(o.lpstrFile, vbNullChar) - 1)


'選択したテキストファイル内のデータをテキスト1に表示する。

Dim TargetFile As String, n As Long, buf As String
  n = FreeFile
  TargetFile = Me.テキスト0
  buf = Space(FileLen(TargetFile))
  Open TargetFile For Binary As #n
    Get #n, , buf
  Close #n
  Me.テキスト1 = buf
End Sub


'四捨五入ボタンを押したとき


Private Sub 四捨五入_Click()
Me.テキスト2 = TextConv(Me.テキスト1)

End Sub

Private Sub Form_Open(Cancel As Integer)
  'フォームを開いた時点で
  DoCmd.Restore
  Me.テキスト0 = ""
  Me.テキスト1 = ""
  Me.テキスト2 = ""
  
  
  'テキスト1,2は編集ロックをかける
  
  Me.テキスト1.Enabled = False
  Me.テキスト1.Locked = True
  
  Me.テキスト2.Enabled = False
  Me.テキスト2.Locked = True
  
End Sub

Private Sub クリア_Click()

'クリアボタンを押すことでテキスト0〜2の文字を全て消去する
  Me.テキスト0 = ""
  Me.テキスト1 = ""
  Me.テキスト2 = ""
  Me.参照.SetFocus
  
End Sub

Private Sub 終了_Click()
'終了ボタンを押すことで全てを終了する

  DoCmd.Quit
  
End Sub
'四捨五入

Function TextConv(文字列 As String) As String
 
 Const 数字データ = "0123456789.", 四捨五入 As Currency = 0.05
 Dim 数字列 As Integer, 変換数値 As String
 Dim Idx1 As Long, Idx2 As Long, 文字列数 As Long
 
 TextConv = 文字列
 文字列数 = Len(文字列) + 1
  
  For Idx1 = 1 To 文字列数
  
  If Idx1 <> 文字列数 And _
    InStr(1, 数字データ, Mid(文字列, Idx1, 1), vbBinaryCompare) > 0 Then
   数字列 = 数字列 + 1
   
  Else
  
   If 数字列 > 0 Then
    変換数値 = Mid(文字列, Idx1 - 数字列, 数字列)
    変換数値 = Format(Int((Val(変換数値) + 四捨五入) * 10) / 10, "0.00")
    
    If Len(変換数値) > 数字列 Then
     TextConv = Left(TextConv, Idx1 + Idx2 - 数字列 - 1) & NumStr & _
           Mid(文字列, Idx1)
     Idx2 = Idx2 + 1
    Else
    
     Mid(TextConv, Idx1 + Idx2 - 数字列, 数字列) = 変換数値
    
    End If
    
    数字列 = 0
   End If
  
  End If
 
 Next Idx1

End Function


突然の質問失礼します。
今大変困っておりまして・・・。アクセス初心者でいま
壁にぶつかってしまいました。色々な教本を読んでもうまく参考になるものがなくて困っております。
小数第二位の四捨五入小数点0.66などふたけたのものがあり0.70と二桁を四捨五入することは出来たのですが。

内容はといいますとテキスト内の数字を探し小数点の付いた数字を指定の桁数で四捨五入して表示できるようにしたいのです、どうプログラムを書き換えてよいものかわかりません。
色々と突然質問してしまってすみません。

アクセスは2000を使ってます。

上記の作成したプログラムを実行しますと
任意のテキストファイル参照ボタンをおしてリードし
テキスト2ボックスにテキストファイル内データが表示される。
内容は以下です

これは0.88ですが0.90になります。
これは0.19ですが0.20になります。
これは0.76ですが0.80になります。

これは四捨五入です。

というものが
四捨五入ボタンを押す事で
下記のように結果変化しテキスト3ボックスに表示されます

これは0.90ですが0.90になります。
これは0.20ですが0.20になります。
これは0.80ですが0.80になります。

これは四捨五入です。

としっかり動くのですが。ここまでは良いと致しまして。

ですが文を少し変えて
このようなふうにすると。

これは0.88ですが0.90になります。
これは0.1966ですが0.20になります。
これは0.7ですが0.80555になります。
これは0.861ですが0.90に112あ.43216なりま112b.4c3216す。

これは四捨五入です。

と、結果が

これは0.90ですが0.90になります。
これは0.2066ですが0.20になります。
これはですが0.800.80なります。
これは0.860.900.900.90ああ.4320.40ま112bb.4c3c321す。

これは四捨五入です。

0.1966は0.2066となり
0.7は消えてしまい。
0.861ですが〜  860.900.900.90ああ.4320.40ま112bb.4c3c321す。
となってしまい。

このような、大変わけのわからないものになってしまい。どこがおかしいのかも良くわかりません。

もうしわけございませんがアドバイスよろしくおねがいします。
・ツリー全体表示

【11207】ファイル更新日付の表示
質問  hanako  - 09/10/5(月) 14:45 -

引用なし
パスワード
   アクセスのフォームにファイル更新ボタンを表示させていて、
ボタンを押すと特定のファイルをインポートするように設定しています。

ファイル更新ボタンの横にラベルを設定して、そこに更新日付を表示させたいのですが、可能でしょうか??

ファイル更新が行われたら、更新日付を上書きしたいです。
ファイル更新が行われなければ、以前の更新日付を表示したいです。

____________フォーム_____________________
|                    |
|【ファイル更新ボタン】 【ラベル】  |
|                    |
|__________________________________________|

アクセス初心者でして、ネットで調べてみても分からなかったので、お分かりになる方がいらっしゃったら、是非ともお力添え願います。
・ツリー全体表示

【11206】Re:afterupdateとIIfの組み合わせ方につ...
お礼  HQ  - 09/10/1(木) 23:10 -

引用なし
パスワード
   ▼小僧 さん:
こんばんは。
ご回答ありがとうございます。

>IIF関数を使って実現は可能ですね。
>ただし使い方が間違っておられるので
>ヘルプをご覧になられた方が良いと思われます。
>
IIFの使い方を1から勉強してみます。

>IIF関数は基本的には True の場合、Falseの場合 で値を返す関数なので
>今回の様に 1s だったら、2s だったら、 3s だったら…
>という様な判定をするには長い式になってしまいます。
>
クエリで使用する関数とは違うわけですね。
ご指摘の通り、1s〜8sなので、結構長くなります。

>Select Case文や Switch関数が良さそうですね。
>
こちらも併せて学習してみます。

>ユーザが予期しない値を入れた場合の対応も必要になってきますね。
>
思いつかない点でした。
ご助言ありがとうございます。

時間がかかるとは思いますが、今後ともよろしくお願いいたします
・ツリー全体表示

【11205】Re:クエリで出来ますか
発言  超初心者  - 09/10/1(木) 14:16 -

引用なし
パスワード
   ▼ON さん:
まず、Accessはエクセルのように行番号までの管理をしていません。
上から順に〜と処理したいのであれば、主キーなどを設ける
必要があります。

TBL_価格、TBL_名称に[行番号]などの主キーを追加することは
出来ないのでしょうか?

追加できるのであれば、主キー同士をリレーションするのみで
実現できそうな気がします。

出来ないのであれば、新規テーブルを作成して、
それに順番に追加していく、という方法ぐらいかと思われます。


「仕様1-7」の組合せについては、すみません、よく分かりません
・ツリー全体表示

【11204】Re:afterupdateとIIfの組み合わせ方につ...
回答  小僧  - 09/10/1(木) 10:09 -

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

> VBA初心者
> IIf([セメスター],1s,1,IIf([セメスター],2s,2))

まずは基本的な VBA の使い方として
文字列と変数の違いについて学習されてみて下さい。


> 1sのデータを2sに変更し移動すると、
> 構文が正しくありませんと表示されます。
> この場合、IIfではないということでしょうか?

IIF関数を使って実現は可能ですね。
ただし使い方が間違っておられるので
ヘルプをご覧になられた方が良いと思われます。

IIF関数の第1引数は評価(True か False を返す式)が必要ですし、
引数が4つになる事はありません。


IIF関数は基本的には True の場合、Falseの場合 で値を返す関数なので
今回の様に 1s だったら、2s だったら、 3s だったら…
という様な判定をするには長い式になってしまいます。

Select Case文や Switch関数が良さそうですね。

また蛇足になりますが
ユーザが予期しない値を入れた場合の対応も必要になってきますね。
・ツリー全体表示

【11203】Re:SQL Serverのインストール
回答  小僧  - 09/10/1(木) 9:23 -

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

>いったん、アンインストールして
>やり直せばいいのかもしれませんが不具合がでても面倒だし
>VS2008までアンインストールしなくてはいけないような気もするし

こちらに関してはSQLServerのみアンインストールする事も可能です。


>現状のまま、可能でしょうか

まずは 前回提示させて頂いた
Management Studio Express からインストールをし、
Windows認証にてログインできるかを確認
その後ユーザの追加で対応は可能だと思われます。
・ツリー全体表示

【11202】afterupdateとIIfの組み合わせ方について
質問  HQ  - 09/9/30(水) 23:25 -

引用なし
パスワード
   VBA初心者の大学職員です。

T_時間割というテーブルにセメスター、コマ数算入学期区分というフィールドがあります。コマ数算入学期区分は1と2で、1は1s,3s,5s,7sで2は2s,4s,6s,8sです(1sは1セメスター)。

このテーブルをもとにフォームを作成し、セメスターが変更されたらコマ数算入学期区分も自動で変更できるよう設定しようとしています。

セメスターのプロパティの更新後処理のコードビルダで
 Private Sub セメスター_AfterUpdate()
 Me.コマ数算入学期区分 = IIf([セメスター],1s,1,IIf([セメスター],2s,2))
 End Sub
と入力し1sのデータを2sに変更し移動すると、構文が正しくありませんと表示されます。
この場合、IIfではないということでしょうか?

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

【11201】Re:Access2003のVBAにて、sendkeysが効き...
お礼  國香 聡 E-MAIL  - 09/9/30(水) 10:40 -

引用なし
パスワード
   ▼Gin_II さん:
>>>※別に、Shell/SendKeysに固執しているわけではありません。
>> 同等の機能を満たせば、他の方法でも構いません。
>
>>  rtn = Shell("Explorer", vbNormalFocus)
>
>  rtn = Shell("Explorer C:\KUNIWORK", vbNormalFocus)
>
>ではどうですか?
Gin_II さんへ   國香("くにか"と読みます)と申します。
Gin_II さんの方法で上手くいきました。
ありがとうございました。
・ツリー全体表示

【11200】Re:Access2003のVBAにて、sendkeysが効き...
回答  Gin_II  - 09/9/30(水) 2:01 -

引用なし
パスワード
   >>※別に、Shell/SendKeysに固執しているわけではありません。
> 同等の機能を満たせば、他の方法でも構いません。

>  rtn = Shell("Explorer", vbNormalFocus)

  rtn = Shell("Explorer C:\KUNIWORK", vbNormalFocus)

ではどうですか?
・ツリー全体表示

【11199】Access2003のVBAにて、sendkeysが効きま...
質問  國香 聡 E-MAIL  - 09/9/29(火) 20:02 -

引用なし
パスワード
   Access2003のVBAからエクスプローラーを起動し、指定したフォルダーへ移動する
機能を実現するため、以下のようなロジックを組みました。


  Dim stIDFolder     As String        'フォルダ      (1)

  rtn = Shell("Explorer", vbNormalFocus)      'エクスプローラー起動  (2)

  SendKeys "%D" + "C:\KUNIWORK" + "{ENTER}", True '指定したフォルダへ (3)


エクスプローラーは起動出来たのですが、指定したフォルダーへ移動できません。
上記の(2)は正常に実行されているのですが、
上記の(3)は正常に実行されていないようです。

※1.SendKeysで指定している"C:\KUNIWORK"というフォルダは、存在するフォルダ
  です。
 2.Access2003
  OSはWindows VISTA を使用しています。

SendKeysの使用方法については特に間違っていないと思うのですが、何故
フォルダーへ移動出来ないかが判りません。
どなたか詳しい方の連絡をお願いします。

※別に、Shell/SendKeysに固執しているわけではありません。
 同等の機能を満たせば、他の方法でも構いません。
 他の方法で何か良い案があれば、それでも構いませんので、ご教授願えません
 でしょうか?
・ツリー全体表示

【11198】クエリで出来ますか
質問  ON  - 09/9/29(火) 14:52 -

引用なし
パスワード
   こんにちは よろしくお願いいたします


TBL_価格                                
大C    仕様1    仕様2    仕様3    仕様4    仕様5    仕様6    仕様7    価格
1000    0    0    0    1    0    0    0    2000
1000    0    0    0    2    0    0    0    2200
1000    0    0    0    3    0    0    0    2400
1000    1     0    0    0    0    0    0    1000
1000    2     0    0    0    0    0    0    1200
1000    3     0    0    0    0    0    0    1400
1000    4     0    0    0    0    0    0    1600


実際の仕様1-7組み合わせは、複合有りで
仕様1    仕様2    仕様3    仕様4    仕様5    仕様6    仕様7
1    0    0    0    0    4    1
1    0    0    0    0    4    1
8    0    1    0    0    12    1
0    0    0    0    0    0    0
0    0    0    3    0    0    0
0    0    0    1    0    0    0
0    0    0    2    0    0    0
のようなものも存在しています


TBL_名称            
大C    仕様区分    仕様CD    仕様名称
1000    4    1    D1
1000    4    2    D2
1000    4    3    D3
1000    1    1    A1
1000    1    2    A2
1000    1    3    A3
1000    1    4    A4


上記の 価格テーブル と 名称テーブル から 下記のようなクエリを作成したいと思っています

簡単そうなところで
大C    仕様1    仕様2    仕様3    仕様4    仕様5    仕様6    仕様7    仕様区分    仕様CD    仕様名称    価格
1000    0    0    0    1    0    0    0    1    1    A1    1000
1000    0    0    0    2    0    0    0    1    2    A2    1200
1000    0    0    0    3    0    0    0    1    3    A3    1400
1000    1     0    0    0    0    0    0    1    4    A4    1600
1000    2     0    0    0    0    0    0    4    1    D1    2000
1000    3     0    0    0    0    0    0    4    2    D2    2200
1000    4     0    0    0    0    0    0    4    3    D3    2400


を考えてみましたが普通のクエリでは作成できないような・・・・
仕様の部分をループで処理して、一覧で見る場合にはそれを足すみたいな気もしています


さらに複合仕様処理では??

それともクエリだけで処理が可能でしょうか

わかりにくいと思いますがアドバイスありましたらよろしくお願いいたします

TBL部エクセル貼付け後、データ区切り位置、スペースで利用できます
↑別途いい方法があれば、知りたいです
・ツリー全体表示

【11197】Re:SQL Serverのインストール
質問  ON  - 09/9/29(火) 14:46 -

引用なし
パスワード
   大変 遅くなりました

アドバイス頂いて、
以前のチャレンジで、インストール手順とか何かと色々あって??で
撃沈していたことを思い出しました

バージョンも変わってもっと簡単にインストール可かと勝手に思っていたのですが
ググッて見ると状況は変わっていないようでした


初回インストール直後、バッチも当ててしまったとか
復元ポイント記録してなかったとか(やったことが無いのでよくわかりません)

いったん、アンインストールして
やり直せばいいのかもしれませんが不具合がでても面倒だし
VS2008までアンインストールしなくてはいけないような気もするし
アンインストールでは
当ててしまったバッチはどうなるのかと・・・・
みたいな感じで硬直状態でした


>ご自宅で使われているという事で
>SQLServer のバージョンは Express で宜しいでしょうか。

VS2008付属のやつで、多分2005デベロッパーです


気分的には
os入れ替え発生時に再チャレンジみたいな感じです


>こちらは本来はVBAの掲示板なのですが、
>ADP移行で悩まれている他の方にも参考になる様に
>意義のあるログにしていきましょう。

現状のまま、可能でしょうか
・ツリー全体表示

【11196】Re:空白ラベルの作り方
回答  hatena  - 09/9/28(月) 16:43 -

引用なし
パスワード
   >下記はアクセスに詳しい人が作ったものです。ラベル印刷をする際のモジュールにある印刷のプログラムのコピーです。これは、印刷する際、患者ID=Nullとして空白を作成していますが、そうでなくてスキップする方法を教えてください。

下記のことかな?

Access 2002 で印刷済みの宛名ラベルをスキップする方法および複数個印刷する方法
support.microsoft.com/kb/299024/ja
・ツリー全体表示

【11195】空白ラベルの作り方
質問  こばちゃん  - 09/9/28(月) 13:36 -

引用なし
パスワード
   下記はアクセスに詳しい人が作ったものです。ラベル印刷をする際のモジュールにある印刷のプログラムのコピーです。これは、印刷する際、患者ID=Nullとして空白を作成していますが、そうでなくてスキップする方法を教えてください。
Option Compare Database
Public 入力患者ID As Long, 新患者, Wcnt, Werr, 枚数, i, AkiLabel As Integer
Dim db As Database, mySQL, Wsyori As String
Dim F患者ID, F処方, F印刷, F原始 As Recordset

Function ラベル印刷(Wsyori, Werr)

  
  Set db = CurrentDb
  mySQL = "DELETE * FROM TT_ラベル印刷": db.Execute mySQL
  mySQL = "DELETE * FROM TT_ラベル原始": db.Execute mySQL
  If Wsyori = "個人" Then DoCmd.OpenQuery "Q_個人のラベル作成"
  If Wsyori = "病棟" Then DoCmd.OpenQuery "Q_病棟のラベル作成"
  Werr = 0
  If DCount("*", "[TT_ラベル原始]") = 0 Then
    MsgBox ("ラベル作成対象レコードはありません"):
    Werr = 1
    Exit Function
  End If
  AkiLabel = InputBox("空きラベル枚数を入力してください", "ラベル印刷", 0)
  Set F印刷 = db.OpenRecordset("TT_ラベル印刷", dbOpenTable)
  Set F原始 = db.OpenRecordset("TT_ラベル原始", dbOpenTable)
  For i = 1 To AkiLabel: GoSub F空白ラベル作成: Next
  Do Until F原始.EOF
    枚数 = 0
    For i = 1 To F原始![枚数]: GoSub Fラベル作成: Next
    F原始.MoveNext
 Loop
 If DCount("*", "[TT_ラベル印刷]") = 0 Then
    MsgBox ("ラベル作成対象レコードはありません"):
    Werr = 1
    Exit Function
  End If
 DoCmd.OpenReport "R_ラベル作成", acNormal
 'DoCmd.OpenReport "R_ラベル作成", acPreview
  Exit Function
  
F空白ラベル作成:
  F印刷.AddNew: F印刷![患者ID] = Null: F印刷.Update: Return
Fラベル作成:
  枚数 = 枚数 + 1
  F印刷.AddNew
  F印刷![患者ID] = F原始![患者ID]
  F印刷![氏名] = F原始![氏名] & "様"
  If F原始![氏名] <> F原始![ふりがな] Then F印刷![ふりがな] = F原始![ふりがな]
  
  F印刷![病棟] = F原始![病棟]
  'F印刷![処方ID] = F原始![処方ID]
  F印刷![品名] = F原始![品名]
  F印刷![管理単位] = F原始![管理単位]
  F印刷![施行日表題] = "施行日"
  If Wsyori = "病棟" Then F印刷![施行日] = Format(Forms![F_初期画面]![施行日], "ggge""年""m""月""d""日")
  If Wsyori = "個人" Then F印刷![施行日] = Format(Forms![F_患者処方]![施行日], "ggge""年""m""月""d""日")
  ' F印刷![枚数] = "(" & 枚数 & "/" & F原始![枚数] & ")"
  F印刷.Update
Return

End Function
・ツリー全体表示

【11194】Re:リストボックスの表示更新
発言  YU-TANG  - 09/9/26(土) 11:54 -

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

> text1 の キークリック時に以下を記述

の代わりに、下記でもよいかもしれません。

Me.text2.Value = Me.text1.Text

# Access が内部的に同じことをやってくれているはずなので。

よくなかったらごめんなさい。

それでは。
・ツリー全体表示

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