2022年8月31日水曜日

全銀フォーマットのカナには拗音(ようおん)がないが、口座カナ名には使いたい。

では、どうするかというと、全銀システムに渡すデータでは、拗音を使わず、それ以外では、拗音を許容すれば良い。

2022年8月26日金曜日

accessのフォームにラジオボタンを作り、そのボタンのオン・オフで、その後の処理を変更するコードをvbaで書いてみた。

まず、accessのフォーム(入力フォームという名前とする)のデザイン画面で、ラジオボタン(目玉みたいなボタン)として、バナナという名前のボタンを追加し、規定値(初期値)はtrueまたはFalseにしておく。 次に、そのラジオボタンを判定(黒目があるときはオン[true]<-1>で、黒目がないときはオフ[False]<0>)し、処理を振り分けるコードをvbaで書いてみた。
ググっても、こういう使い方を説明しているサイトが見当たらなかった。当たり前すぎるのかなぁ。
     If [forms]![入力フォーム]![バナナ] = True then  'バナナボタンがオンの場合の処理を書く。
       MsgBox "バナナボタンがonやで"
       Debug.print "バナナボタンがonやで"
     else
       'バナナボタンがオフの場合の処理を書く。
       MsgBox "バナナボタンがoffやで"
       Debug.print "バナナボタンがoffやで"
     End If

2022年8月24日水曜日

excel vbaでセルの値がmm 月dd日と表示されてしまうのを回避した

EXCELの書式自動設定のおかげで、あるセルの値がmm月dd日と表示されて、実に困った。過剰で、お節介な機能で、しかもどういう条件で起こるか、わからない。excelはおせっかいな奴だ。
そこで、仕方がないので、vbaでセルに値を設定した直後に、.NumberForamtLocal = "G/標準”で書式を強制的に入れるようにして、回避したのであった。やれやれ。

2022年8月19日金曜日

accessのテーブルを固定長テキストファイルにエクスポートするのにDocmd.transfertextではなく、print(vba)を使ったというお話。

DoCmd.TransferTextでacExportFixedを指定してのテキスト出力すると、「specification name/定義名が必要です」とか言われて、面倒くさいので、テーブルの内容をprintするvbaを書いてみた。
adoでもdaoでもどちらでも良いので、参照設定で、ライブラリを設定し、テーブルの内容を1個ずつ、printで吐き出せば良い。これだけだ。
specificationNameに悩まされることもなく、テキストファイルが得られる。accessのtblAがフィールドが1つのテーブルであったと仮定し、DAOで書くと

Sub ExportText()
  Dim dbs as Database '参照設定でDAOを設定せよ
  Dim rs  as RecordSet
  Dim IngFileNum as Long
  Dim strOutPut as String
  Dim path1 as String
  Dim file1 as String
  path1 = CurrentProject.path & "¥OUTPUT¥"
  file1 = "tblA.txt"
  IngFileNum = FreeFile()
  Open path1 & file1 For OutPut As #IngFileNum
  Set dbs = CurrentDb
  Set rst = dbs.OpenRecordset("tblA") 
  With rst
    do Until .EOF
      print #IngFileNum,rst(0) &  vbCrLf; 'tblAにはフィールドが1つ
      .MoveNext
    Loop
    .Close
  End With
  Close #IngFileNum
End Sub

2022年8月18日木曜日

accessのテーブルを固定長のテキストファイルにエクスポートしようとして、七転八倒し、学んだこと。

expression.TransferText (TransferType, SpecificationName, TableName, FileName, HasFieldNames, HTMLTableName, CodePage)
expression A variable that represents a DoCmd object.
DoCmd.TransferText acExportFixed, "specNameA", _ 
    "tableA", "C:\Txtfiles\April.txt"
DoCmd.TransferTextでacExportFixedを指定してのテキスト出力すると、「specification name/定義名が必要です」と怒られる。
そこで、エクスポートウィザードの操作を保存したものを指定しても「定義名が見つからない」と再び、怒られる。
そもそもこの「specification name/定義名」は、エクスポートウィザードの操作を保存した名前ではないのである。
エクスポートウィザードの操作を実施したあとに出てくる、保存しますかのチェックボックスをチェック印をつけておかないと駄目なのである。
そうすると、定義というボタンが出現するのだ。ここで、specification name/定義名を定義できるのである。そして、この定義名をspecification nameに指定するのである。
ポイントは、specification name/定義名は、エクスポートウィザードの操作を保存した名前ではないということだ。
しかも、エクスポートウィザードの延長で、保存した名前と「specification name/定義名」が似ているので、余計に惑わされるのである。

2022年8月16日火曜日

accessのクエリでテキストを抽出条件とする場合、例えば1 でないものを抽出する条件は<>"1"だが、nullも忘れるな

accessのクエリでテキストを抽出条件とする場合、例えば1でないものを抽出する条件は<>"1"だが、or nullも忘れるな