テキスト広告:Amazon Primeday

金曜日, 5月 09, 2008

[VB2005]別ウィンドウ(別EXE)の最前面表示

▼質問
別ウィンドウ(別EXE)で起動したアプリを最前面に表示したいんだ。どうしたらよいのか?

▼回答
次のAPIを使えばできるぞ!

API名は『BringWindowToTop』だ。

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

'ウィンドウを最前面に表示する関数宣言
Declare Function BringWindowToTop Lib "user32.dll" Alias "BringWindowToTop" (ByVal hWnd As Int32) As Int32

'最上位フォーム設定解除
Me.TopMost = False

'プロセスを起動する.
prs = Process.Start(起動EXEパス, パラメータ)

'最上位フォーム設定
BringWindowToTop(CInt(prs.MainWindowHandle))

prs.WaitForExit()
prs.Dispose()
prs.Close()

'最上位フォーム設定
Me.TopMost = True

木曜日, 5月 01, 2008

[VBA]QueryTable

▼質問
Oracleからのデータバックアップで次のプログラムで実行しているんだが・・・。

「Selection.QueryTable.Refresh BackgroundQuery:=False」

どうやってODBCやSQL文の設定をしているかわからん!?

教えてくれ~!!

▼回答
一度「外部データの取込み」をやると、その時の操作が設定してしまい

変更ができないみたいなんだ。

だから、汎用的にやるには次のプログラムがお勧めだよ!?

With Worksheets(シート名).QueryTables.Add(Connection:="ODBC;DSN=データソース名;UID=ユーザ名;PWD=パスワード名", Destination:=Worksheets(シート名).Range("A1"))
.Sql = Array("SELECT * FROM テーブル名")
.Refresh
End With

水曜日, 4月 30, 2008

[VC2005]GetGmtTmとGetLocalTmでエラー

▼質問
GetGmtTmとGetLocalTmメソッドで次のエラーが出る。
「Debug Assertion Failed! Program: パスZZZZ.exe File: パス\atltime.inl Line: 999
Expression: _atl_condVal
For information on how your program can cause an assertion failure. see the Visual C++
documentation on asserts.
(Press Retry to debug the application)」

▼回答
インクルードやデファインを次の様にすれば上手く行くよ!
#pragma warning(disable: 4996)
#define _SECURE_ATL 0
#include
#include
#include
#include
#include
#define ATLTIME_INLINE inline
#include
#include
#define ATLCOMTIME_INLINE inline
#include

■参考サイト
A problem with ATL::CTime.GetLocalTm() - MSDN Forums
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=126206&SiteID=1
ワーニングを抑制する方法 - #pragma warning - VC++
http://www.ailight.jp/blog/sha256/archive/2005/05/04/6684.aspx

木曜日, 4月 24, 2008

[C言語]Run-Time Check Failure #2エラー

▼質問
次のエラーが発生する。
「Run-Time Check Failure #2 - Stack around the variable 'xxx' was corrupted」

▼回答
「xxx」を使っているサイズをチェックすることぐらいかな?!

多分、格納しようとしているサイズが「xxx」より大きいじゃないのかな!?

金曜日, 4月 18, 2008

[VB2005]OO4Oの警告

▼質問
次の警告が出る。どうして?
警告 1 '_IOraBindVariable.GetPersistentPointer' の引数のうち少なくとも 1 つをランタイム マーシャラでマーシャリングできません。したがってこのような引数はポインタとして渡され、アンセーフ コードの使用が必要になります。
警告 2 プロパティ get アクセス操作子 'ResultCode' (有効な戻り値の型のない型 'OracleInProcServer._IExDispatch' 上) がタイプ ライブラリ インポータで見つかりました。インポータはこのプロパティをメソッドとしてインポートすることを試行します。
警告 3 '_IOraBlob._ReadCPP' の引数のうち少なくとも 1 つをランタイム マーシャラでマーシャリングできません。したがってこのような引数はポインタとして渡され、アンセーフ コードの使用が必要になります。
警告 4 'OraBlob._ReadCPP' の引数のうち少なくとも 1 つをランタイム マーシャラでマーシャリングできません。したがってこのような引数はポインタとして渡され、アンセーフ コードの使用が必要になります。
警告 5 '_IOraClob._ReadCPP' の引数のうち少なくとも 1 つをランタイム マーシャラでマーシャリングできません。したがってこのような引数はポインタとして渡され、アンセーフ コードの使用が必要になります。
警告 6 'OraClob._ReadCPP' の引数のうち少なくとも 1 つをランタイム マーシャラでマーシャリングできません。したがってこのような引数はポインタとして渡され、アンセーフ コードの使用が必要になります。
警告 7 '_IOraBfile._ReadCPP' の引数のうち少なくとも 1 つをランタイム マーシャラでマーシャリングできません。したがってこのような引数はポインタとして渡され、アンセーフ コードの使用が必要になります。
警告 8 'OraBfile._ReadCPP' の引数のうち少なくとも 1 つをランタイム マーシャラでマーシャリングできません。したがってこのような引数はポインタとして渡され、アンセーフ コードの使用が必要になります。

▼回答
Oracle InProc Server 5.0 Type Library (oip10.tlb) を追加してリビルドすると1度目はでないようだ。

2度目のリビルドで発生することがわかったが・・・。何の解決にもならない。。。

ん~わからない。

毎回、リビルドするたびに削除してリビルドして追加してリビルドするのか!?

めんどくせー!!

もう少し調べて次の様にすることにした。

プロジェクトプロパティ→コンパイル→「ビルド イベント」ボタンのビルド前と後で次のイベントを
実行するようにした。

ビルド前に実行するコマンド ライン
Copy $(ProjectDir)*.dll $(ProjectDir)\obj\Release
Copy $(ProjectDir)*.cache $(ProjectDir)\obj\Release

ビルド後に実行するコマンド ライン
Copy $(ProjectDir)obj\Release\*.dll $(ProjectDir)
Copy $(ProjectDir)obj\Release\*.cache $(ProjectDir)

完璧じゃないけど・・・少しはましになったかも?!

無視してもいい警告だからリビルドしてビルドするだけども良いかも?!

それにしても、よくわからん!!

火曜日, 4月 15, 2008

[C#]Windowアプリケーションの基本機能

▼質問
フォームに「閉じる」ボタンを貼ったんだけど、「閉じる」ボタンがクリックした時の

イベント処理の方法がわからないんだけど。

VBだとMeなんだけど...

▼回答
C#は、thisを使って次の様に記述するんだ。

this.Close();

■参考サイト
[C#][VB]フォームを閉じる
http://jeanne.wankuma.com/tips/form/close.html

月曜日, 4月 14, 2008

[VB2005]PrintDocumentコントロール

▼質問
印刷の前に出るメッセージの表示名はどうやったら変更できるの?

▼回答
DocumentNameプロパティを変更すれば表示が変わるよ。
Me.PrintDocument1.DocumentName = "表示名"

[VB2005]文字サイズチェック

▼質問
データベースに文字列を格納する時に下記のエラーが出るんだ。

ORA-12899: 列"○×△□"."テーブル名"."フィールド名"の値が大きすぎます(実際: 256、最大: 255)

文字列のサイズをチェックをして、格納サイズより大きい時は

格納サイズより大きい部分は削除したいんだ。どうしたらできるんだい。

文字数のチェックはMaxLengthプロパティに値を入れておけば

自動的にやってくれてはいるんだけど...

▼回答
こんなのできたよ。

Public Shared Function ChkByte(ByVal strValue As String, ByVal byteSize As Integer) As Boolean
If (System.Text.Encoding.GetEncoding("Shift-JIS").GetByteCount(strValue) <= byteSize) Then ChkByte = True
End Function

Public Shared Function GetByte(ByVal strValue As String, ByVal byteSize As Integer) As String
Dim hEncoding As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift-JIS")
Dim bBytes As Byte() = hEncoding.GetBytes(strValue)
Dim count As Long
For i As Long = Len(strValue) To 1 Step -1
If (ChkByte(Mid(strValue, 1, Len(strValue) - count), byteSize)) Then
Return System.Text.Encoding.GetEncoding("Shift-JIS").GetString(bBytes, 0, Len(strValue) - count)
End If
count = count + 1
Next i
Return strValue
End Function

■参考サイト
VB.NET 全角・半角でのLEFT関数 - Insider.NET
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24347&forum=7&start=8

木曜日, 4月 03, 2008

[VB2005]閉じるボタンのキャンセル

▼質問
閉じるボタン(「×」ボタン)をクリックされても閉じないようにするにはどうしたらいいの?

▼回答
FormClosingイベントで次のコードを記述すればできるらしいよ。(^^;

If (e.CloseReason = CloseReason.UserClosing) Then
e.Cancel = True
End If


■参考サイト
ウィンドウの閉じるボタンを押しても終了させない
http://katamari.jp/index.php?dev%2Fvb%2F%A5%A6%A5%A3%A5%F3%A5%C9%A5%A6%A4%CE%CA%C4%A4%B8%A4%EB%A5%DC%A5%BF%A5%F3%A4%F2%B2%A1%A4%B7%A4%C6%A4%E2%BD%AA%CE%BB%A4%B5%A4%BB%A4%CA%A4%A4

日曜日, 3月 30, 2008

[VB2005]ReadOnlyコンボボックス

Public Class useComboBox
Inherits System.Windows.Forms.ComboBox
Private blnReadOnly As Boolean = False
Private iSelectedIndex As Integer = Me.SelectedIndex
'-------------------------------------------------------------------------------
'
' コンストラクタ処理
'
Public Sub New()

End Sub

'-------------------------------------------------------------------------------
'
' デストラクタ処理
'
Protected Overrides Sub Finalize()
MyBase.Finalize()
End Sub

'-------------------------------------------------------------------------------
'
' 概要 : 読み取り専用かどうかを示す値を取得または設定します。
'
' 戻り値 : 読み取り専用の場合は true。それ以外の場合は false。既定値は false です。
'
Public Property ControlReadOnly() As Boolean
Get
Return blnReadOnly
End Get
Set(ByVal value As Boolean)
Me.Enabled = True
If (value) Then
Me.BackColor = SystemColors.Control
iSelectedIndex = Me.SelectedIndex
Else
Me.BackColor = SystemColors.Window
End If
blnReadOnly = value
End Set
End Property

Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
If (blnReadOnly) Then Me.Parent.Focus() : Return
MyBase.OnMouseUp(e)
End Sub

Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
If (blnReadOnly) Then Me.Parent.Focus() : Return
MyBase.OnMouseDown(e)
End Sub

Protected Overrides Sub OnMouseClick(ByVal e As System.Windows.Forms.MouseEventArgs)
If (blnReadOnly) Then Me.Parent.Focus() : Return
MyBase.OnMouseClick(e)
End Sub

Protected Overrides Sub OnGotFocus(ByVal e As System.EventArgs)
If (blnReadOnly) Then Me.Parent.Focus() : Return
MyBase.OnGotFocus(e)
End Sub

End Class

[VB.NET or VB2005]カラー名称

▼質問
システムのカラー名称を指定したいんだけどどうやったらできるの?

▼回答
次の様に指定すればできるよ。
Me.BackColor = SystemColors.Window

■参考サイト
Control.BackColor プロパティ (System.Windows.Forms)
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.backcolor(VS.80).aspx


システムカラー名称 ARGB値
ActiveBorder FFD4D0C8
ActiveCaption FFC0C0C0
ActiveCaptionText FF0E1010
AppWorkspace FF808080
Control FFE0DFE3
ControlDark FF9D9DA1
ControlDarkDark FF716F64
ControlLight FFF1EFE2
ControlLightLight FFFFFFFF
ControlText FF000000
Desktop FF585768
GrayText FFACA899
Highlight FFB2B4BF
HighlightText FF000000
HotTrack FF648BCB
InactiveBorder FFD4D0C8
InactiveCaption FFFFFFFF
InactiveCaptionText FFA2A1A1
Info FFFFFFE1
InfoText FF000000
Menu FFFFFFFF
MenuText FF000000
ScrollBar FFD4D0C8
Window FFFFFFFF
WindowFrame FF000000
WindowText FF000000
Transparent FFFFFF
AliceBlue FFF0F8FF
AntiqueWhite FFFAEBD7
Aqua FF00FFFF
Aquamarine FF7FFFD4
Azure FFF0FFFF
Beige FFF5F5DC
Bisque FFFFE4C4
Black FF000000
BlanchedAlmond FFFFEBCD
Blue FF0000FF
BlueViolet FF8A2BE2
Brown FFA52A2A
BurlyWood FFDEB887
CadetBlue FF5F9EA0
Chartreuse FF7FFF00
Chocolate FFD2691E
Coral FFFF7F50
CornflowerBlue FF6495ED
Cornsilk FFFFF8DC
Crimson FFDC143C
Cyan FF00FFFF
DarkBlue FF00008B
DarkCyan FF008B8B
DarkGoldenrod FFB8860B
DarkGray FFA9A9A9
DarkGreen FF006400
DarkKhaki FFBDB76B
DarkMagenta FF8B008B
DarkOliveGreen FF556B2F
DarkOrange FFFF8C00
DarkOrchid FF9932CC
DarkRed FF8B0000
DarkSalmon FFE9967A
DarkSeaGreen FF8FBC8B
DarkSlateBlue FF483D8B
DarkSlateGray FF2F4F4F
DarkTurquoise FF00CED1
DarkViolet FF9400D3
DeepPink FFFF1493
DeepSkyBlue FF00BFFF
DimGray FF696969
DodgerBlue FF1E90FF
Firebrick FFB22222
FloralWhite FFFFFAF0
ForestGreen FF228B22
Fuchsia FFFF00FF
Gainsboro FFDCDCDC
GhostWhite FFF8F8FF
Gold FFFFD700
Goldenrod FFDAA520
Gray FF808080
Green FF008000
GreenYellow FFADFF2F
Honeydew FFF0FFF0
HotPink FFFF69B4
IndianRed FFCD5C5C
Indigo FF4B0082
Ivory FFFFFFF0
Khaki FFF0E68C
Lavender FFE6E6FA
LavenderBlush FFFFF0F5
LawnGreen FF7CFC00
LemonChiffon FFFFFACD
LightBlue FFADD8E6
LightCoral FFF08080
LightCyan FFE0FFFF
LightGoldenrodYellow FFFAFAD2
LightGray FFD3D3D3
LightGreen FF90EE90
LightPink FFFFB6C1
LightSalmon FFFFA07A
LightSeaGreen FF20B2AA
LightSkyBlue FF87CEFA
LightSlateGray FF778899
LightSteelBlue FFB0C4DE
LightYellow FFFFFFE0
Lime FF00FF00
LimeGreen FF32CD32
Linen FFFAF0E6
Magenta FFFF00FF
Maroon FF800000
MediumAquamarine FF66CDAA
MediumBlue FF0000CD
MediumOrchid FFBA55D3
MediumPurple FF9370DB
MediumSeaGreen FF3CB371
MediumSlateBlue FF7B68EE
MediumSpringGreen FF00FA9A
MediumTurquoise FF48D1CC
MediumVioletRed FFC71585
MidnightBlue FF191970
MintCream FFF5FFFA
MistyRose FFFFE4E1
Moccasin FFFFE4B5
NavajoWhite FFFFDEAD
Navy FF000080
OldLace FFFDF5E6
Olive FF808000
OliveDrab FF6B8E23
Orange FFFFA500
OrangeRed FFFF4500
Orchid FFDA70D6
PaleGoldenrod FFEEE8AA
PaleGreen FF98FB98
PaleTurquoise FFAFEEEE
PaleVioletRed FFDB7093
PapayaWhip FFFFEFD5
PeachPuff FFFFDAB9
Peru FFCD853F
Pink FFFFC0CB
Plum FFDDA0DD
PowderBlue FFB0E0E6
Purple FF800080
Red FFFF0000
RosyBrown FFBC8F8F
RoyalBlue FF4169E1
SaddleBrown FF8B4513
Salmon FFFA8072
SandyBrown FFF4A460
SeaGreen FF2E8B57
SeaShell FFFFF5EE
Sienna FFA0522D
Silver FFC0C0C0
SkyBlue FF87CEEB
SlateBlue FF6A5ACD
SlateGray FF708090
Snow FFFFFAFA
SpringGreen FF00FF7F
SteelBlue FF4682B4
Tan FFD2B48C
Teal FF008080
Thistle FFD8BFD8
Tomato FFFF6347
Turquoise FF40E0D0
Violet FFEE82EE
Wheat FFF5DEB3
White FFFFFFFF
WhiteSmoke FFF5F5F5
Yellow FFFFFF00
YellowGreen FF9ACD32

土曜日, 3月 29, 2008

[Windows]バッチ

▼質問
バッチからイベントログに情報を書込みたいんだ。どうしたらできるの?

▼回答
eventcreateコマンドを使えばできるよ。でも、このコマンドが使えるOSは、Windows XP と
Windows Server 2003だから気をつけてね。



/s computer イベントの出力先であるリモート コンピュータの名前または IP アドレスを指定します。デフォルトのコンピュータは、ローカル コンピュータです。

/u domain\user指定したユーザーのアクセス許可を使用してコマンドを実行します。デフォルトのユーザーは、現在のユーザーです。

/p password /u パラメータで指定したユーザー アカウントのパスワードを指定します。

/l イベントを作成するログの名前を指定します。APPLICATION または SYSTEM のみを指定できます。

/so source nameイベントを生成する "ソース" 名を指定します。任意の文字列を指定できますが、通常はプログラム名が指定されます。

/t 作成するイベントの "種類" を指定します。有効なイベントの種類は、Error (エラー)、Warning (警告)、Infomation (情報) です。

/id EventIDイベントの "イベント ID" を指定します。1 ~ 1000 の範囲の整数である必要があります。ID が一意になる必要はないため、これらを使用して、プログラムからの終了コードなどを識別できるエラー番号を記録することをお勧めします。

/d description 新しく作成されるイベントに使用する "説明" を指定します。文字列に複数の単語を指定する場合は、二重引用符 (") で囲みます。

/? コマンド プロンプトでヘルプを表示します。 注 : /t、/id、および /d の各オプションの値は必須指定であり、/l オプションや /so オプションの値を追加指定できます。

"アプリケーションが失敗しました" という説明が付いたエラー イベントをアプリケーション ログに作成するには、eventcreate /t error /id 1000 /l application /d "アプリケーションが失敗しました" とコマンドを指定します。

■参考サイト
@IT:Windows TIPS -- Tips:イベント・ログに任意の文字列を出力する
http://www.atmarkit.co.jp/fwin2k/win2ktips/489evtout/evtout.html

土曜日, 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