ラベル

Server (108) work (77) Idea (68) Car (31) PC (29) DAW (28) other (19) MakingWEBsite (18) 趣味 (18) health (13) CentOS (11) drupal (11) 山 (9) android (4) スマホ (4) communication (3) drupal7 (3) hint (3) meno (3) モバイル (3) 歯医者 (3) 第二種電気工事士 (3) 英語 (3) PC Server (2) drupal8 (2) ms access (2) uwp C# (2) めし (2) 整備 (2) 音楽 (2) MIDI (1) diy (1) 会計 (1) 動画再生 (1) 生活 (1) 郵便 (1) 食べ物 (1)
ラベル ms access の投稿を表示しています。 すべての投稿を表示
ラベル ms access の投稿を表示しています。 すべての投稿を表示

2017年5月24日水曜日

ms access アクセス メモ

自動車検査登録事務所へ提出するOCR用紙が、A4コピー用紙に自分で印刷したものを使えるようになった。
http://yasutam.blogspot.jp/2017/05/ocr.html
まだ陸運局で買ったOCRものがあったけど、ジャガーの車台番号がちょっとイレギュラーだったために(正確に言えば、自分の想定外の車台番号だったために)、その表示がおかしく表示されてしまったので、そうならないように訂正した。
それから、今までの買ったOCRと、自分印刷OCRの印字の位置が違うので、その調整もした。
これからは、自分でコピー用紙に印刷したOCRに切り替えようと思う。

ms accessのレポート表示部分。
今までの車台番号表示は
!@  @  @  @  @  @  @
としていた。

一応、後々のためにメモを残しておく。
レポート、テキストボックスの書式設定で
!@  @  @  @  @  @  @
とすると、
@マークの間のスペースと同じだけのスペースを文字を表示させたときに入れる。
@マークのところに文字が順番に入っていく。
!マークは、そのように表示させろという記号。

これだと、どうしてもOCR用紙の枠に正確にはめていけないので1つずつ文字を分けて一枠に一字ずつ文字を表示させていくことにした。で、今までの式にちょっと追加した。
----------------------------------------------------------
accessで、陸運支局に提出する第1号様式のOCRへの車台番号印刷部分。そこには車台番号23桁分まで空欄があるけど、そこまで必要ない。実際は7桁入力しておけば大丈夫。一応、"-"以下、15桁まで印刷できるようにしておいた。先頭から空欄を埋めて、残りは空欄。
最初の一文字だけの表示。
=Mid(IIf(InStr(1,[ChassisNo],"-")=0, Right([ChassisNo],15), Mid([ChassisNo], InStr(1,[ChassisNo],"-")+1)), 1, 1)
もし、ChassisNoに"-"が入っていなかったら右から15個分文字を切り取る、入っていたら、"-"の位置の次の位置から最後までの文字を切り取る。その切り取られた文字の最初の1文字分を表示させる。

次の式は、最初から2番目の文字を表示させるためのもの。
=Mid(IIf(InStr(1,[ChassisNo],"-")=0, Right([ChassisNo],6), Mid([ChassisNo], InStr(1,[ChassisNo],"-")+1)), 2, 1)

このようにして順番に15桁まで表示。

-----------------------------------------------------------
陸運支局に提出する第3号様式の2、OCRへの車台番号印刷部分。車台番号が7桁までの入力欄がある。
"-"以降の番号が6桁の時は、先頭から入力して最後は空欄。

=Mid(Right(IIf(InStr(1,[ChassisNo],"-")=0,Right([ChassisNo],7),Mid([ChassisNo],InStr(1,[ChassisNo],"-")+1)), 7), 1, 1)
もし、"-"が入っていなかったら、後ろから7文字を切り取る。"-"が入っていたら、それより後の7文字を切り取る。"-"が入っていて、その後が14桁とかある外車もあるので、それを後ろから7桁分で切り取る。そのあとで、前から1文字ずつ切り取って表示をしていく。

次の式は、最初から2番目の文字を表示させるもの。
=Mid(Right(IIf(InStr(1,[ChassisNo],"-")=0,Right([ChassisNo],7),Mid([ChassisNo],InStr(1,[ChassisNo],"-")+1)), 7), 2, 1)

このようにして最初から7番目までを表示。

2017年1月21日土曜日

ms access vba ADO

DAOとADO
どっちがどうなのだかいつも忘れる。

DAOはすでに開発が終了している。
ADOは今も?開発が続いている。

access2000時にADOが出てきたそうだ。

ADOXは新規にデータベースやテーブル、クエリを作ったり既存のテーブルやクエリの構造を変更したりできる。
----------------------------------------------------------------------------------
レコードセットをMsgBoxで表示させたいときにはrsをレコードセットとすると、
MsgBox rs.getstring
MsgBox rs.getstring(2, 1) ----括弧の中はパラメーター。

getstringはRecordset をバリアント型 (Variant) 変数 (BSTR) の文字列として返す。
-----------------------------------------------------------------------------------
データをms accessからms excelへ出力。
CopyFromRecordsetを使う場合。
 objEXE.Cells(14, 2).CopyFromRecordset rs1

Cellsを使う場合。
Dim i As Integer
 rs1.MoveFirst
 rs2.MoveFirst
 rs4.MoveFirst
 i = 0
Do Until rs1.EOF = True
 'Cells(14 + i, 2).Value = rs1.Fields(0).Value   ⇒フィールドがいくつもあるときは、Fields(0)の0のところに変数を入れて移動させたりできる。
 'Cells(14 + i, 4).Value = rs2.Fields(0).Value
 Cells(14 + i, 7).Value = rs4.Fields(0).Value
  i = i + 1
 rs1.MoveNext
 rs2.MoveNext
 rs4.MoveNext
 Loop

------------------------------------------------------------------------------------
フォントサイズの変更は
Dim j As Long
    For j = 14 To 23
        Cells(j, 2).Font.Size = 12
        Cells(j, 4).Font.Size = 12
        Cells(j, 7).Font.Size = 12
    Next j

その他いろいろ
.Font.Name = "MS P明朝"
.Font.Bold = True
.ColumnWidth = 8
RowHeight = 26
-------------------------------------------------------------------------------------


自分がaccessを使いだしたのが2000年頃。
最近は昔つくったものをちょっと手直しするくらい。

ms accessは便利だけど、
ms accessでデータベースを構築してもローカルな環境で使う感じになってしまうからかなぁ。
mysqlとか、そこいら辺のデータべストの相性が良くなると使いやすいのだと思うけど、ODBCとか、安定しないし。
なんてことを言っていたら、最近はそこいら辺、結構安定しているそうだ。

でも、accessのテーブルをmysqlのテーブルに変換すると、情報がかなり減ってしまうんだよなぁ。

最近のaccessはネット上での情報が少ない気がする。
使う人が減っているのかな。