Google
 
Web itpro-blogger.blogspot.com
木曜日, 10月 30, 2008

[EXCEL]ADO関連

▼質問
ADO(Microsoft Active X データ オブジェクト)の基本的な使い方を教えて欲しいんだ。

▼回答
基本的な使い方のサンプルを次に示しておくから参考にしてくれ!!

①参照設定あり
Microsoft ActiveX Data Objects 2.X Library

[変数宣言]
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

[オブジェクト生成]
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

②参照設定なし

[変数宣言]
Dim cn As Object
Dim rs As Object

[オブジェクト生成]
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

③Fieldsプロパティ
[書式]
recordset.Fields.Item(0)
recordset.Fields.Item("name")
recordset.Fields(0)
recordset.Fields("name")
recordset(0)
recordset("name")
recordset![name]

④上書きサンプル

strSQL = "SELECT COUNT(*) FROM " & strTBL & " WHERE フィールド名= 値"
Set rs = cn.Execute(strSQL)
count = rs.Fields(0)
rs.Close
If (count = 1) Then
'更新
strSQL = "SELECT * FROM " & strTBL & " WHERE フィールド名= 値"
rs.Open strSQL, cn, adOpenForwardOnly, adLockOptimistic 'SQL文を実行
rs!フィールド名= 値
rs.Update '更新(保存)
rs.Close
Else
'新規作成
strSQL = "SELECT * FROM " & strTBL
rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic 'テーブルを開く
rs.AddNew '新規レコードを追加する
rs!フィールド名= 値
rs.Update '更新(保存)
rs.Close
End If


■参考サイト
VB ADO 操作
http://www.red.oit-net.jp/tatsuya/vb/ADO.htm
アクセスVBA講座_ADO_Recordsetオブジェクトの作成
http://www.geocities.jp/cbc_vbnet/ADO/recordset.html


火曜日, 10月 21, 2008

[VB2005]OpenOfficeをエクセル(Excel)のように使用する

▼質問
VBでOpenOfficeのCalcをエクセル(Excel)のように操作したいんだ。

どうやったらできるかサンプルが欲しいんだ。

何か良い情報があったら教えてくれ!

▼回答
良さそうなサンプルがあったから試してみてくれ!

でも、サンプルはCalcじゃなくてWriterだけど・・・。

これで、雰囲気は掴めるかな?!

Calcのサンプルを作成してみたので参考にしてみてくれ!!


Sub HelloWorldExampleCalc()
Dim myCalc As Object, mySheet As Object, myCell As Object

myCalc = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, dummyArray)
mySheet = myCalc.getCurrentController().getActiveSheet()
myCell = mySheet.getCellByPosition(0, 1)
myCell.String = OOoMess111
myCell = mySheet.getCellByPosition(0, 2)
myCell.Value = 100
myCell.CharColor = OOoRGB(0, 200, 0)
myCell = mySheet.getCellByPosition(0, 3)
myCell.Formula = "=A3*2"
myCell.CharWeight = OOOawtFontWeightBOLD
mySheet.getCellByPosition(0, 4).CellBackColor() = OOoRGB(0, 200, 0)
Dim oBorderLine As Object = CreateUnoStruct("com.sun.star.table.BorderLine")
Dim oTableBorder As Object = CreateUnoStruct("com.sun.star.table.TableBorder")
With oBorderLine
.Color = RGB(0, 0, 0)
.OuterLineWidth = 1
End With
With oTableBorder
.IsLeftLineValid = True
.IsTopLineValid = True
.IsRightLineValid = True
.IsBottomLineValid = True
.LeftLine = oBorderLine
.TopLine = oBorderLine
.RightLine = oBorderLine
.BottomLine = oBorderLine
End With
mySheet.getCellRangeByName("A2:B3").TableBorder() = oTableBorder
MsgBox(OOoMess105)
myCalc.close(True)
End Sub


インターフェイス・プロパティ・メソッドの一覧を表示するマクロがあったので、こちらも
参考にしてみてくれ!!


sub Main

Dim dbg As object
dbg = CreateUnoService("com.sun.star.sheet.SpreadsheetDocument")
MsgBox(dbg.Dbg_SupportedInterfaces)
MsgBox(dbg.Dbg_Properties)
MsgBox(dbg.Dbg_Methods)

end sub


■参考サイト
OOoMacros
http://www.ooomacros.org/index.php
OOoBasic/Tutorial/kakeibo/macro - ...?
http://hermione.s41.xrea.com/pukiwiki/pukiwiki.php?OOoBasic%2FTutorial%2Fkakeibo%2Fmacro
OpenOffice.org 操作術 第 3 回 中本担当分原稿 OpenOffice.org の表 ...
http://bd.tank.jp/nikkei/article3_1.pdf
7. 表計算ドキュメント (StarSuite 8 Basic プログラミングガイド) - Sun Microsystems
http://docs.sun.com/app/docs/doc/819-1332/faail?l=ja&a=view


土曜日, 10月 18, 2008

[VB2005]MonthCalendarのDateChangedイベントが周期的に発生する

▼質問
MonthCalendarでDateChangedイベントが周期的に発生するんだ。

これはどうしてなんだ?

▼回答
参考サイトより

カレンダーの本日を更新するために約2分間隔でマシン日付をチェックするために発生している
イベントに同期しているらしい。これは、MonthCalendarコントロールのバグらしい。

ユーザが明示的に操作した時にだけイベントを発生させたいなら、DateChangedではなく、DateSelectedイベントを使えばよいようだ。

確かに、DateSelectedイベントを使えば問題ないことがわかった。

DateChangedイベントとDateSelectedイベントの違いは何なんだ?と思って説明を並べてみた。

MonthCalendar.DateChanged イベント
MonthCalendar で選択された日付が変更された場合に発生します。

MonthCalendar.DateSelected イベント
ユーザーがマウスを使用して明示的に日付を選択した場合に発生します。

これを読む限り、通常操作の場合はDateSelected イベントを使えばよいことになるな!

DateChanged イベントを使うのはどんな時なのかと考えてみると、選択された特定の日に

何かをしたい時のイベント処理が考えられるのかな?!

よく考えると、単純に選択(操作)と変更(動作)の違いか!!

■参考サイト
MonthCalendar で予期せぬ DateChanged イベントが発生する
http://blogs.wankuma.com/jeanne/archive/2005/09/02/18244.aspx
DataGridViewの年月日項目に今日の日付が自動設定される?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=41347&forum=7


This page is powered by Blogger. Isn't yours?