テキスト広告:Amazon Primeday

土曜日, 3月 22, 2008

マイクロソフトの開発者向けツールバー

Silverlight ダウンロード
http://www.microsoft.com/japan/msdn/silverlight/downloads.aspx

Microsoft Internet Explorer Developer Toolbar (英語)
Web アプリケーションのデバッグが非常に効率的に行えるツールです。

■参考サイト
13種類のブラウザ用人気ツールバー徹底検証――開発者/マーケターに便利かどうか【後半】 Web担当者Forum
http://web-tan.forum.impressrd.jp/e/2008/02/20/2637

土曜日, 3月 01, 2008

[C言語orC++]ODBC(SQLGetData関数)

▼質問?
OracleのCHAR型を下記のように取得すると復帰値に1が返ってくるんだけどどうしてかな?
データベースの中身は取得できているみたいなんだ?!
復帰値 = SQLGetData( ハンドル, 番号, SQL_C_CHAR, &値, (SDWORD)sizeof( 値 ), &サイズ );

▼回答
データベースのサイズとプログラムで格納するサイズが同一サイズだとダメみたいなんだ。
プログラムのサイズを+1以上大きくする必要があるみたいなんだ。わかったかな?!

水曜日, 2月 27, 2008

[C言語orC++]ODBC(SQLFetch関数)

▼質問
SQLFetch関数の復帰値はどうみればいいの?

▼回答
1レコード読む時と複数行読む時で分ける必要があるよ。

1レコードの場合は次の様になるかな?!
short ret = 0;
HSTMT hstmt = SQL_NULL_HSTMT;
if ( (ret = SQLFetch( hstmt )) != SQL_NO_DATA_FOUND ) {
SQLGetData関数等でデータを取得


複数行の場合は次の様になるかな?!
HSTMT hstmt = SQL_NULL_HSTMT;
while ( SQLFetch( hstmt ) != SQL_NO_DATA_FOUND ) {
SQLGetData関数等でデータを取得


SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_STILL_EXECUTING, SQL_ERROR, or SQL_INVALID_HANDLE.

■参考サイト
SQLFetch - 次のデータ行
http://publib.boulder.ibm.com/html/as400/v5r1/ic2962/index.htm?info/cli/rzadpmst56.htm
SQLFetch Function
http://msdn2.microsoft.com/en-us/library/ms712424(VS.85).aspx
ODBC
http://itref.fc2web.com/odbc.html

月曜日, 2月 04, 2008

「VBA]最大列文字列の取得

▼質問
最大列の文字列を知りたいんだけど・・・。

Aとか、Bとか・・・???

▼回答
こんな風に取得できるよ。

Replace(Split(Excel.ActiveSheet.Columns(256).Address(True, True, Excel.XlReferenceStyle.xlA1), ":")(0), "$", "")

土曜日, 1月 26, 2008

[VBA]似たような関数・メソッド・プロパティ

▼質問
.Value と .Text は何が違うの?

▼回答
.Value :数値だけを表示する。
.Text: 書式設定を含めて出力する。します。(Range オブジェクトの場合は、値の取得のみ可能)

▼質問
StrとCStrは何が違うの?

▼回答
Str: 符号の1桁が常に確保されて表示される。
CStr: プラスのときにスペースが挿入されない。

■参考サイト
VBA 文字列操作 (パソコン便利ツール集)
http://makotowatana.ld.infoseek.co.jp/vba_character.html#vt

日曜日, 1月 13, 2008

[EXCEL]条件を満たすものだけをカウントしたい

▼質問
条件を満たすものだけをカウントしたい時の関数を知らないかい?

▼回答
COUNTIF関数を使えばできるよ。

使い方は

COUNTIF(検索範囲,検索条件)

だよ!

■参考サイト
Excel関数 条件を満たすものだけをカウントする(COUNTIF関数)
http://www.pursue.ne.jp/Document_xls/xls0022.htm

水曜日, 12月 19, 2007

[HTML]インラインフレーム(iframe)の更新

▼質問
インラインフレーム(IFRAME)を更新したいんだけど・・・どうしたらできるの?

▼回答
インラインフレームのオブジェクトの指定は次のようになる。

parent.document["インラインフレームNAME"]
(parent.document.インラインフレームNAMEでもOK)
document.frames["インラインフレームNAME"]←IEのみ有効らしい
(document.frames.インラインフレームNAMEでもOK)

これを踏まえると次の記述をすると更新が実現できる。

parent.document["インラインフレームNAME"].location.href=URL;


■参考
エレメントプロパティ/メソッド
value : フォーム部品に入っている文字列、または表示している文字列を取得・設定します。
innerHTML : 指定エレメントのHTML要素(タグの間)を取得します。
innerText : 指定エレメントの文字列を取得します。
tagName : 指定エレメントのタグ名を取得します。
click() : クリックします。クリック可能なエレメントであること。
outerHTML : 指定エレメントのHTML要素(タグ毎)の内容を取得します。

日曜日, 12月 09, 2007

[SQL]同じ構造で複数テーブルのデータを取得

▼質問
同じ構造をしたテーブルが複数あるときに、SQLで簡単にデータを取得することはできないの?

▼回答
UNIONを使えばできるよ。重複行は削除されるから気をつけてね。

重複行を有効にしたい時は、UNION ALLにすればできるよ。

SELECT * FROM テーブル1 WHERE フィールド1 = 値 UNION SELECT * FROM テーブル2 WHERE フィールド1 = 値

ORDER BY フィールド1とすると次のようなエラーになるんだ。

ORA-00904: "フィールド1": 無効な識別子です。

どうしてなんだ?

*をしている時は、フィールド番号を指定しないと駄目なんだ。

SELECT * FROM テーブル1 WHERE フィールド1 = 値 UNION SELECT * FROM テーブル2 WHERE フィールド1 = 値 ORDER BY 1 asc

フィールド名をしてしたい時は、*に全てのフィールドを

指定してやる必要があるんだ。

わかったかい?!

SELECT フィールド1,フィールド2,フィールド3 FROM テーブル1 WHERE フィールド1 = 値 UNION SELECT フィールド1,フィールド2,フィールド3 FROM テーブル2 WHERE フィールド1 = 値 ORDER BY フィールド1 asc

土曜日, 12月 01, 2007

[Excel]名前ボックスって何?

▼質問
「名前ボックス」って何?

▼回答
セルやセル範囲に名前が付けられることができるらしい。

知らんかった!

中級レベルなら知っているらしい。。。

おれって、初心者・・・。

■参考サイト
セルに名前をつける:Excel エクセルの使い方
http://www.relief.jp/itnote/archives/000208.php

操作方法は3つあるらしい。

①名前をつけたいセルを選択→[名前ボックス]に名前を入力して[Enter]キーを押す。
←ここから削除や変更はできないっぽい!? 違う名前を入力して同じ事を繰り返すと
追加されるみたい。表示上は文字列の昇順が最初に表示されるみたい。

②名前をつけたいセルを選択→メニュー[挿入]->[名前]->[定義]をクリック
→[名前の定義]ダイアログ-[名前]欄に名前を入力し、[OK]ボタンを押す。

③ショートカットキー[Ctrl]+[F3]で[名前の定義]ダイアログを表示する。

追加・削除は[名前の定義]ダイアログからしかできない?
変更は、削除してからじゃないと駄目っぽい!?

木曜日, 11月 29, 2007

[VB2005]日付関数

▼質問
月末日付を求めるにはどうしたらいいの?

▼回答
下記の方法で指定した前月の月末日付が取得できるよ。

DateSerial(年, 月, 0)

他にも下記の方法で同じように取得できるよ。

DateAdd("d", -1, CDate("yyyy/mm/dd"))

月末日の求め方
Dim lastDay As Integer = System.DateTime.DaysInMonth(Now.Year, Now.Month)

金曜日, 11月 23, 2007

[VB2005]複数テーブルのデータベース更新

▼質問
複数テーブルを更新する時にトランザクションの管理やエラーの時のロールバックや成功の時の
コミットはどうやるんだい?

▼回答
サンプルを示しておくから参考にしてくれ!

'接続内容設定
Dim strCon as String = "Data Source=サービス・ネーミング" & _
";User ID=ユーザ名" & _
";Password=パスワード"

'データベースコネクション確立
Dim con As OracleConnection = New OracleConnection(strConnection)

'データベースオープン
con.Open()

Dim txn As OracleTransaction = con.BeginTransaction(IsolationLevel.Serializable)

Try

'レコード削除
Call DeleteTable(con)
'削除関連情報更新
Call UpdateTable(con)

txn.Commit()

Catch ex As Exception

txn.Rollback()

Finally

'データベースクローズ
con.Close()
con.Dispose()
con = Nothing

End Try

Private Sub DeleteTable(ByVal con As OracleConnection)

Dim cmd As OracleCommand = Nothing

Dim strSql As String = "DELETE FROM テーブル名 " & _
"WHERE フィールド名 = 1"

Try

cmd = New OracleCommand(strSql, con)
cmd.ExecuteNonQuery()

Catch ex As Exception
Throw
Finally

If (Not IsNothing(cmd)) Then
cmd.Dispose()
cmd = Nothing
End If

End Try

End Sub

Private Sub UpdateTable(ByVal con As OracleConnection)

Dim cmd As OracleCommand = Nothing

Dim strSql As String = "UPDATE テーブル名 " & _
"SET フィールド名 = 0 " & _
"WHERE フィールド名 = 1"

Try

cmd = New OracleCommand(strSql, con)
cmd.ExecuteNonQuery()

Catch ex As Exception
Throw
Finally

If (Not IsNothing(cmd)) Then
cmd.Dispose()
cmd = Nothing
End If

End Try

End Sub


■参考サイト
Oracle Data Provider for .NETのクラス
http://otndnld.oracle.co.jp/document/products/oracle10g/101/doc_v12/win.101/B15519-01/OracleTransactionClass.htm

木曜日, 11月 22, 2007

[VB2005]印刷関連

▼質問
Excelを使った印刷はしたことがあるんだけど、テキスト文字列を直接印刷したことはないんだ。
どうしたらいいんだい!?

▼回答
PrintDocumentコンポーネント(System.Drawing.Printing名前空間)を使えばできるよ。

サンプルを教えてやるから参考にしてくれ!

ボタンのクリックイベントに下記を記述する。
'印刷処理実行
Me.PrintDocument1.Print()

PrintDocument1コンポーネントのイベントを下記のように記述すればOK!

Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

Dim yPos As Single = 0
Dim count As Integer = 0
Dim line As String = Nothing

'フォント設定
Dim printFont As Font = New Font("MS 明朝", 10)

'ページ余白(内側部分)を取得
Dim topMargin As Single = e.MarginBounds.Top
Dim leftMargin As Single = e.MarginBounds.Left

'ページ行数取得.
Dim linesPerPage As Single = e.MarginBounds.Height / printFont.GetHeight(e.Graphics)

Dim stream As New IO.StringReader(テキスト文字列)

'文字列ストリーム印刷.
While (count < linesPerPage)
line = stream.ReadLine()
If (line Is Nothing) Then
Exit While
End If
yPos = topMargin + count * printFont.GetHeight(e.Graphics)
e.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPos, New StringFormat())
count += 1
End While

'追加ページの印刷があるかチェックする.
If Not (line Is Nothing) Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If

stream.Close()

End Sub

■参考サイト
Windowsアプリケーションで印刷を行うには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/393printdoc/printdoc.html

印刷のテストは、PDFに出力するようにすれば印刷のデバックがやり易くなるので、下記の
ソフトはお奨めだ。しかも、フリーソフトだからお得!?

XLsoft エクセルソフト : activePDF 無料 PDF 作成/変換ソフトウェア PrimoPDF 日本語版 - ホーム
http://www.xlsoft.com/jp/products/primopdf/index.html

水曜日, 11月 21, 2007

[VB2005]フォルダやファイルの列挙方法

▼質問
コンボボックスに決められたフォルダのファイルを一覧で表示したいんだ。どうしたらいいの?

▼回答
次のようにすればできるよ。

For Each strPath As String In System.IO.Directory.GetFileSystemEntries("C:\temp", "*")
Dim strDir() As String = Split(strPath, "\")
ComboBox1.Items.Add(strDir.GetValue(strDir.Length - 1))
Next strPath

■参考サイト
Visual Basic 6.0 と Visual Basic .NET とのフォルダやファイルの列挙方法の違いについて
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/File/

土曜日, 11月 17, 2007

[VB2005]Namespace My(ApplicationEvents.vb)

▼質問
「Namespace My(ApplicationEvents.vb)」って何?

▼回答
・VB2005から新しく導入された機能らしい。
・「My」を使うと、いろいろなことがとても簡単にできるらしい。
・My.Applicationを使うと、開いているすべてのフォームにアクセスしたり、ハンドルしていない
すべての例外をキャッチしたりできるらしい。
↑これはいろいろできそうな機能である。使えそうである!
・My.Computerを使うと、ファイルやフォルダを簡単に制御したり、レジストリにアクセスしたり
できるらしい。

■参考サイト
VB Myの用法 - My, My.Application, My.Computer
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard37.htm

月曜日, 11月 12, 2007

[VBA]リストボックス(ListBox)

▼質問
複数の列を表示するリストボックス(ListBox)を作成するにはどうしたらいいの?

▼回答
ユーザフォーム(UserForm)にリストボックス(ListBox)を貼り付けて次のコードを
UserForm_Initialize()に記述する。

ListBox1.Clear
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = 20 & ";" & 10
Call ListBox1.AddItem(",", 0)
ListBox1.list(0, 0) = "列1"
ListBox1.list(0, 1) = "列2"

これでもいける?

Dim column(1, 1) As Variant
column(0, 0) = "列1": column(1, 0) = "列2"
ListBox1.column() = column

▼質問
見出しを作成するにはどうしたらいいの?

▼回答
次のコードを書いてみたがエラーが発生してしまう。なぜ?

ListBox1.ColumnCount = 2
ListBox1.RowSourceType = "Value List"
ListBox1.RowSource = "列1;列2"
ListBox1.TextColumn = 3
ListBox1.ColumnWidths = 20 & ";" & 10
ListBox1.ColumnHeads = True

エラーの内容は、RowSourceTypeで実行時エラー'13'の「型が一致しません。」が発生する。
RowSourceTypeはAccessしか使えないのかな?

今度は、RowSourceTypeをコメントにして実行してみると次行のRowSourceでエラーが発生する。
エラーの内容は、実行時エラー'380'の「RowSourceプロパティを設定できません。プロパティの
値が不正です。」と・・・。

ダメダメだー!!

諦めよう。。。(T_T)

火曜日, 10月 30, 2007

[VB2005]「Option Strict On では、遅延バインディングを使用できません。」エラー

▼質問
「Option Strict On では、遅延バインディングを使用できません。」のエラーが発生する。

▼回答
問題1
Private Sub TrnPictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox.Click
Dim x as Double
x = sender.MousePosition.X()
End Sub

対応1
x = PointToClient(MousePosition).X

問題2
Dim obj As Object
obj = OraDataBase.CreateDynaset(strSql, 0)
Debug.Print obj.Fields("FIELDS_NAME").Value

対応2
下記の参照を追加する。
参照名:Oracle InProc Server 5.0 Type Libray

Imports OracleInProcServer

Dim obj As OracleInProcServer.OraDynaset
obj = CType(CType(OraDatabase, OracleInProcServer.OraDatabase).CreateDynaset(strSql, 0), OraDynaset)
Debug.Print DirectCast(DirectCast(obj.Fields, OracleInProcServer.OraFields)("FIELDS_NAME"), OracleInProcServer.OraField).Value)

水曜日, 10月 24, 2007

[HTML]INPUTタグのdisabled

▼質問
INPUTタグでdisabledを指定しても有効にならないのはどうしてかな?

▼回答
スタイルシート(CSSファイル)などでcursorにpointerを指定していないか確認してみてくれ!

これをしているとdisabledを指定しても有効にならないんだ。

cursorのpointerをautoにしてみてくれ!!

どうだったかな?

これでも駄目でした(T_T)

FORMタグが悪さしているようです?!

諦めて他の方法にすることにしました。。。。

と、思ったら気がつきました。

下記の関数をフォームロードで処理をしていました。(T.T)

function buttonDisabled( flag ) {
var loop ;
with ( document.form1 ) {
for ( loop = 0 ; loop < elements.length ; loop++ ) {
if ( elements[loop].type == "button" ) {
elements[loop].disabled = flag;
}
}
}
}

これは、FORMタグで囲まれたボタンのみをパラメータフラグの内容でdisabledを
制御している関数で、これが悪さしていたようです。(涙)

■参考サイト
cursor CSS辞典
http://www.seo-equation.com/html/css/cursor

金曜日, 10月 12, 2007

[VB2005]数値入力制限

▼質問
テキストボックスで数値だけを入力できるようにしたいんだ。どうすればいい?

▼回答
KeyPressイベントで下記の関数を呼べばできるよ。

Public Sub KeyNumericOnly(ByRef e As System.Windows.Forms.KeyPressEventArgs)
'数値キーをチェックする.
If (Not e.KeyChar Like "[0-9]") Then e.KeyChar = ""
End Sub

これだけでは駄目なのね(?.?)

これだとバックスペースが使えなくなるのね。

だからこの関数を呼ぶ前に次のコードを記述するのね。

If (Asc(e.KeyChar) = System.Windows.Forms.Keys.Back) Then Exit Sub

他にも、プロパティのMaxLengthを指定しないと入力桁数の制限ができないのね。

これで、OKかな!?