VB初心者質問スレ Part4
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1000523122/
0175デフォルトの名無しさん
NGNGファイルを全部読み込んで改行文字をカウント。
でも多分スマートじゃない。
0176デフォルトの名無しさん
NGNGこれなら元の方がマシだと思う。
いっそ wc 拾ってきてそいつに数えさせるとか。
0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNG今、以下のよう感じで「名前がwao かつ 年が10」のデータを抽出しています。
Set RS = DB.OpenRecordset(" SELECT * " & _
" FROM Hoge " & _
" WHERE Name = wao AND Age = 10;")
これを分解して、まず名前がwaoのデータを全部抽出して、そのデータベースから
年が10のデータを取り出したいのですが、どうやればいいのでしょうか。
0179デフォルトの名無しさん
NGNG任意の場所にDrag&Dropすることで、
そのコントロールの位置を移動させたいのですが、
FormのDragDropイベントで取得する X, Y を Top , Left に設定しても
見当違いのところに移動します。
どうすればマウスのDrag&Dropで思った場所に
コントロールを移動できるのでしょうか?
0180デフォルトの名無しさん
NGNGなんでそんな事したいか不明だが...
素直にワークテーブルに書出したら?
0181178
NGNGそもそもクエリーの意味を履き違えているんでしょうか。
Set QD = DB.CreateQueryDef("", " SELECT * " & _
" FROM Hoge " & _
" WHERE Name = wao;")
こうやってwaoのデータを抽出して
Set RS = QD.OpenRecordset(" SELECT * " & _
" FROM Hoge " & _
" WHERE Age = 10;")
さらに年が10を探す。
0182172
NGNGとにかく行数だけがわかればいいので、無駄に文字を取ってきているきがして
もっといい方法があるのかなと思ったんです。
0183デフォルトの名無しさん
NGNG固定長のファイルだったら簡単だけどねぇ。
0184新規
NGNGプレーヤーの左右の動かし方のプログラミングがわかんないんです。
わかる方教えていただきたい!!ちなみにプレーヤーはコアファイター
です。敵がザクちゃん
0185デフォルトの名無しさん
NGNG行数だけを調べたくても結局ファイルの中身は
全部調べないと駄目なんで何やっても同じ。
フォーマットを決めてるんなら別だけど。
気持ちは分かるが。(w
0186デフォルトの名無しさん
NGNGRecordsetのFilterプロパティ参照
あまりオススメしないけどね・・・
0187デフォルトの名無しさん
NGNGttp://www.sala.or.jp/~itagaki/vb/kouza.htm
0188デフォルトの名無しさん
NGNGもらえるんですか?
0189デフォルトの名無しさん
NGNGここにソースをUPしたので、どこを直したらよいかアドバイス
お願い致します。
http://www2.makani.to/akutoku/upload/index.html
0190169
NGNG亀レススマソ
>データを送って
>きた相手のIPなどがわかる、ということなのでしょう
RemoteHost → 接続先のホスト名
RemoteHostIP → 接続先のIP
RemotePort → 接続先のポート
だよ。もちろんこの値をDataAraivalイベントで拾えば
送信元の情報になるね。
Winsockコントロールを使ったUDP通信のサンプルは
ここを参考にしてみてくれ。
ttp://www.comel.or.jp/%7Eakira/soft/udp_s1/udp_s1.html
0191168
NGNGお教えいただいた事とサイトで、さらに
通信プログラムを勉強したいと思います。
ありがとうございました!
0192192
NGNGが、変更するたびにリストボックスの高さが縮んでしまいます。
リストボックスの高さを変えずに、画面上でフォントサイズを変える方法を
教えてください。
0193デフォルトの名無しさん
NGNGあんまり件数が増えると、取り出すのにえらい時間がかかって、
ハングしたかと思っちまいます。
そこで、よく市販アプリのインストール時に出るような、
残り処理時間ゲージを付けたいんですけど、
VBでできますでしょうか。
よろしくお願いします。
0194デフォルトの名無しさん
NGNGフォント変えるたびにリストボックスのサイズも設定しなおせば?
でもリストボックスだと勝手に補正されちゃうんだよね。
リストビューだとサイズはかわらんよ。
0195デフォルトの名無しさん
NGNGプログレスバーじゃ不満?
0196デフォルトの名無しさん
NGNGとりあえず、データベースからそこまで沢山のデータを
一気に取り出す必要があるのかという事から考えた方が
いいと思われ。
抽出条件つけるとかして件数を絞り込むとか...
0197デフォルトの名無しさん
NGNGMEの時までは使えてたソフトが使えなくなってしまって困ってます。
通常のバージョンアップでは使えていたんですが、
フォーマットして最初からインストールしたらランタイム系が
軒並みインストールできなくなってたんです。
0198193
NGNGレスありがとうございます。
データの抽出件数に関しては、仕事上、仕方ないのです。
これでも出来る限り不必要なデータ抽出げずったんですよ・・・。
あと、プログレスバーコントロールってのは、どこから
出すんでしょうか。参照設定にそれらしいの無いんですが・・・?
0199デフォルトの名無しさん
NGNG自分で見るだけならステータスバーの使用をお勧め。
SysCmdで文字とかステータスバーのプログレスの
表示を操作出来る。
んで一応、プログレスバーはフォームデザイン画面で
ツールバーのコントロールの選択→MicroSoft Progress Bar
を選んで配置すると使える。
VBAのフォームって個人的に好かんけど。
0200デフォルトの名無しさん
NGNGVBじゃなかったっけ?なら
Microsoft Windows Common Controls 6.0 (MSCOMCTL.OCX)
TextBoxやLabelのなかに一回り小さい色の付いたLabelを配置して
Widthを少しずつ増やしていくだけでも代用できますが。
そんなにレコード数多いの?
何分もかかる様なら%も表示したほうがよさげか
0201198
NGNGありがとうございます。
>んで一応、プログレスバーはフォームデザイン画面で
>ツールバーのコントロールの選択→MicroSoft Progress Bar
>を選んで配置すると使える。
ツールバーってのはツールボックスのことでしょうか(あの「TextBox」とか
のアイコンがある)。デフォルトでは、そのコントロールは無いっぽいです。
うう。
0202デフォルトの名無しさん
NGNGお、ありがとうございます!
>Microsoft Windows Common Controls 6.0 (MSCOMCTL.OCX)
これが何か分かりません。ヘルプでも出ないんですが?
レコード数もさることながら、仕事場のPCの性能がアレで
小一時間かかったりもします。マジでハングったりも。
0203199
NGNGそのツールボックスを右クリックしてコンポーネントをクリック。
もしくはいきなりCtrl+Tで出てくるYO。
インデックス張ったりSQL見直したりは・・したよね(w
>レコード数もさることながら、仕事場のPCの性能がアレで
うちはその点最低でもCerelon400だから助かってます。
0204203
NGNG鬱氏。
0205デフォルトの名無しさん
NGNGほんとうにくだらないことで申しわけないのですが、
Formの縁を無くすにはどうしたら良いのでしょうか。
FormのAppearanceを0にもしたのですが、
やはり外側に3Dっぽい縁が出来てしまうんです。
0206デフォルトの名無しさん
NGNGAppearanceでなくBorderStyle。
0207202
NGNGありました。ありがとうございます。
ちょっと研究してみます。
申し訳ないのですが、分からなかったらまた聞きに来ます。
あと、インデックスも張ってますし、SQLも改良しました。
実は、もともと、他人が作ったもので、その人に
「適当に使いやすくして使って」って言われているものなのです。
僕、初心者なのになー・・・。
0208199
NGNG>ツールバーってのはツールボックスのことでしょうか
>(あの「TextBox」とか のアイコンがある)。
コントロールの選択ってのはツールバーの中にある、
「TextBox」とか、「Label」とかと一緒に、
「コントロールの選択」ってのがあるんよ。
(一番右下。)
分かりにくかったかな?スマソ。
>>204
気にすんな。(w
0209205
NGNGありがとうございます。0にしたら無くなりました。
ちなみに、その状態でタイトルバーだけ表示って
無理ですか?
0210205
NGNGFormの出現位置を画面右上や、画面右下とかには
出来ないでしょうか?
0212デフォルトの名無しさん
NGNG無理。移動したいなら、WM_NCHITTESTを使いましょう。
0213箱入り息子
NGNGを作りたいのでありますが、どんなコントロールを
使えばいいのやら皆目見当もつきません!
ご教授ねがいます!以上っ!(敬礼)
0214デフォルトの名無しさん
NGNGVC か Delphi で「箱入り娘」コントロールを作ってもらって
それを VB に張れば1分で完成。
0215デフォルトの名無しさん
NGNGそれだけでは教えたくてもさっぱり分からん。
もうちょっとこんな感じでこうしたいとか・・・
詳しく書こうぜ。
0216デフォルトの名無しさん
NGNGないでしょうか?
0217箱入り息子
NGNG>>215
すみませんでした。
えーと、現状では、「娘」とか「父」とかいう文字を書いたimageコントロールを
フォーム上でマウスでドラッグアンドドロップで移動させることは
できたんです。でも、きちんと枠内でその一つ一つの「駒」を移動
させ、移動できない方向には移動させない、といった制御が難しくてできません。
でも、なにも制限がなかったらゲームにならない(当たり前ですが)ので、
そのimageコントロールの動きを制御しなければ「箱入り娘」になりません。
214さんの言うように、「箱入り娘」コントロールみたいなものはあれば、
簡単なんですけど・・・。
どうやったらいいのでしょうか?
0218デフォルトの名無しさん
NGNG一応、line inputで一行ずつtxtを文字変数として読み込んで
InStrで場所を特定して・・って感じで考えているのですが
0219215
NGNGその箱入り娘ってのがどんなのかは知らないけど
移動先の枠の座標は分かるよな?
で、移動できる枠と移動できない枠も分かるよな?
そしたら、移動完了の時に判定できるでしょ。
移動できないんなら元に戻す、みたいなかんじで。
0221デフォルトの名無しさん
NGNG将棋やオセロと同じで、マス目を配列変数で用意する。
何もいなければ0、何かいれば1にする。
1点の位置が決まれば、大きさや形にしたがって、
いくつかのマス目も1になる。
もし動き先が1なら、そこには動かせないということになる。
0222デフォルトの名無しさん
NGNGテキストボックスの色を変えたいです。
テキストボックスのMouseMoveイベントに色変えるの書いたのですが、
カーソルが外出た時に色戻すイベントの取り方がわかりません。
お願いしますー。
0223箱入り息子
NGNGどうもありがとうございました。
0224デフォルトの名無しさん
NGNGPictureBoxを使って自前で描画してはどうでしょう。
0225デフォルトの名無しさん
NGNG"Alt+R"を押したら、Retrunを押したというメッセージを送りたいのですが、
上手くゆきません。
keybd_event(vbKeyReturn,0,0,0)を使ってやってるのですが、
フルスクリーン化してしまいます。
どうすればよいでしょうか?
0226デフォルトの名無しさん
NGNG0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNGなどと入力してプログラムの起動時に引数を渡す処理を、
VBで行うには、どうすればいいのでしょうか?
0229ヒッキー@プログラミング
NGNGShell関数を使ってはどうでしょうか?
ヘルプで探してみてください。
0230ヒッキー@プログラミング
NGNG0231デフォルトの名無しさん
NGNGCommand()
0232228
NGNGVBで作ったアプリで、他のアプリに引数を渡す方法です。
ご指摘の通り、Shell関数で簡単に出来ました。(汗
ありがとうございます。
0233デフォルトの名無しさん
NGNGFormのMouseMoveイベントで色を戻す処理を書く。
0234デフォルトの名無しさん
NGNG0235ありゃ??
NGNGメニュー画面のフォームからコマンドボタンをクリックし、次のフォームを
表示させるには、どういうコーディングをすればいいのでしょうか??
メニュー画面も次の画面も用意してxxxx.showと指定しているのですが
(参考書にはこれで展開すると・・・)うまくいきません。
0236デフォルトの名無しさん
NGNGただそのときに既にALTが押されているので"Alt+Retrun"でフルスクリーン化
という動作になってしまっているのでしょう。
keybd_event(vbKeyReturn,0,0,0)
の前に
Public Const KEYEVENTF_KEYUP = &H2
keybd_event(vbKeyMenu,0,KEYEVENTF_KEYUP,0)
なんかやってみたらどうでしょう。
(試してませんがうまくいけばめっけものです。)
それかReturn押下時の処理を関数化し、"Alt+R"押下時に
その関数を呼ぶとか。(ベタですが...)
0237デフォルトの名無しさん
NGNGただそのときに既にALTが押されているので"Alt+Retrun"でフルスクリーン化
という動作になってしまっているのでしょう。
keybd_event(vbKeyReturn,0,0,0)
の前に
Public Const KEYEVENTF_KEYUP = &H2
keybd_event(vbKeyMenu,0,KEYEVENTF_KEYUP,0)
なんかやってみたらどうでしょう。
(試してませんがうまくいけばめっけものです。)
それかReturn押下時の処理を関数化し、"Alt+R"押下時に
その関数を呼ぶとか。(ベタですが...)
0238デフォルトの名無しさん
NGNG>xxxx.show
・xxxxの名前が違う。
・showが全角
0239perl2vb
NGNG$date = "2001/12/11";
@job = ("mail","meeting","test","coding","design");## PERLの配列
myfunction( $date, @job);
sub myfunction{
my ($str, @array) = @_;
## 以下省略
}
なんて形にするけど、VB だとどうなるのか教えてください。
ヘルプはたくさん書いてあるわりには検索に時間がかかるばかり
でぜんぜんわかんねー。
0240デフォルトの名無しさん
NGNG配列の先頭アドレスを渡す。
0241デフォルトの名無しさん
NGNGParamArray使う。
0242デフォルトの名無しさん
NGNGそろそろ手をつけるかとプロジェクトを読み込み、デバッガで走らせようとしたら
RDOの関係のモジュールがすべてエラーになってしまうのです。
参照設定では、MSRDO20.DLLはちゃんと指定してあるので困りました。
Win2K(SP2)+VB6(SP4)の環境です。渡された当初は当然ですが問題なかった。
最近やった大きいことはというと、IEを6.0にしたことと、Delphyパーソナルを
入れたことか。
助言を願います。馬鹿ですみません。
0243perl2vb
NGNG参照がわはaramArrayを使えばいいのはわかったけど、
参照元はハードコーディングでなく呼び出す方法はないの?
知ってる人、おしえてくださーい。
0244デフォルトの名無しさん
NGNGこんなんダメ?
private function Job(str() as string) as Variant
Job=str
end function
0245242
NGNGrdoErrorsやrdoConnectionのデータ定義からしてだめ。
オブジェクトブラウザーにRDOは見えているのに。
とりあえず、VisualStudioのSP5を落としながらWebサーチをします。
お心当たりあれば引き続きよろしくお願いします。
0246デフォルトの名無しさん
NGNGエラーNoと内容を見せれ
0247242
NGNGError$を評価すると、
"コンパイルエラーsubまたはFunctionが定義されていません。Error35"
が帰ってくる。
DLLの参照に関するエラーでしょうけど、MSRDO20.DLLは「ある」し「指定されている」
んですよ。悩む。
0250222
NGNGありがとうございます。
でも、すでに試してますが、それダメでした。。。
なんで戻らないんだろう。
てか、なんでMouseOutイベントが無いんだろう。
0251デフォルトの名無しさん
NGNG色がえ
end if
とかじゃだめ?
0252242
NGNG原因は不明ですが ^^;
急がば回れで、こういうときは、すんなりと開発環境のアンインストールと
再インストールをやってしまうのが時間のロスも神経をすり減らすのも少ないか。
知恵はつかないままだが。
0253デフォルトの名無しさん
NGNGNtQuerySystemInformationの宣言とか引数、戻り値を教えてくだされ
海外サイトで
NtQuerySystemInformation (SYSTEMINFOCLASS sic,
PVOID pData,
DWORD dSize,
PDWORD pdSize);
というのを見つけて、自分で書いてみたのがこれ
Public Declare Function NtQuerySystemInformation Lib "ntdll" _
( , pData As Any, ByVal dSize As Long, ByVal pdSize As Long) As Long
↑ここに入るのは分からん
VB自体始めて日も浅いし、上のも間違ってるかも
ダレか教えて下さい
0254225
NGNGありがとうございます。
ご指摘の通りやってみたのですが、なぜか上手くゆかないときがあります。
上手くゆくときもある、というのが謎なのですが、Altキーは押しっぱなし状態で
keybd_event(vbKeyMenu,0,KEYEVENTF_KEYUP,0) とやっても
次回のGetKeyState()呼び出しのとき、Altキーが押されていると認識
されているみたいなので、
keybd_event(vbKeyMenu,0,KEYEVENTF_KEYUP,0)
keybd_event(vbKeyReturn,0,0,0)
この2つの命令の間で、Altが押されたメッセージが送られるてるのでは
ないかと思ってます。
一気に、リターンだけしか押されていないという状態を送るような便利な
関数はないでしょうか?
0255222
NGNGありがとうございます。
しかし、それどこに書けば良いのですか?
つか、マウスオーバーでwidthが変わるんですか?
0256デフォルトの名無しさん
NGNGMouseMoveで、マウスの位置のxはテキストボックスの幅width
を超えることはありえるかなと思ったもので。
確かスプリットバーを作ったときは、できたような気がする。
0257デフォルトの名無しさん
NGNGそれって、ドラッグの最中だけじゃないですか?
>>222
タイマーでGetCursorPosして判定とかは。
0258デフォルトの名無しさん
NGNGForm2.Left = (Screen.Width - Form2.Width) / 2
Form2.Top = (Screen.Height - Form2.Height) / 2
とやってもうまくいかないんです。どうすればいいのでしょうか?
0259258
NGNGパスワードがない状態では利用できないようにしたいのですが
テキストファイルを読んでパスワードと一致するか比較して
違ったらExit subとする、ぐらいしか思いつかないのですが
もっとスマートな方法はあるのでしょうか?
0260デフォルトの名無しさん
NGNGFormのロードイベントの所にそのコードをコピペして試したけど、
きちんと動いたよ。
ところで、FormのStartUpPositionプロパティで「画面の中央」じゃ駄目なの?
0261デフォルトの名無しさん
NGNG基本的にはそれで良いかと思います。
パスワードを暗号化して保存するぐらいは
やったほうが良いかもしれませんが。
0262デフォルトの名無しさん
NGNGScaleModeはTwipにしてある?
0263クリスタルレポート
NGNG参照先のDB名を変更出来なくこまっています。
下記のコードのように幾つか試しているのですがうまくいきません。
ご存知の方がいらっしゃいましたら、是非教えて下さい。
バージョンは、VB6.0、Crystal Reports8.5
DBは、DB2、バージョン7で、RDO接続です。
初心者ではありませんが、どうかよろしくお願いします。
Dim Report As New CrystalReport1
Public rEn As rdoEngine
Public rEv As rdoEnvironment
Public rCn As rdoConnection
Public rRs As rdoResultset
Public sCnct As String
Public str_SQL As String
Private Sub test_Click()
sSQL = SQL_MAKE() 'SQL作成
sCnct = "DSN=DB2TEST2; UID=ADMINISTRATOR; PWD=******" ' システムDSN
Set rEn = rdoEngine
Set rEv = rEn.rdoEnvironments(0)
Set rCn = rEv.OpenConnection("", rdDriverNoPrompt, False, sCnct)
Set rRs = rCn.OpenResultset(sSQL)
'レコードセットを与える
Report.Database.SetDataSource rRs, 3, 1
'システムDSNを与える
Report.Application.OpenReport("Report1.rpt").Database.Tables.Item(1).SetLogOnInfo (sCnct)
CRViewer1.ReportSource = Report
CRViewer1.ViewReport
CRViewer1.Zoom (2)
End Sub
0264デフォルトの名無しさん
NGNGテキストボックスにマウスが入ったら
キャプチャーして、出て行ったら色直して
解放してやるのが一番無難ではないかと思われ。
0265デフォルトの名無しさん
NGNGPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Debug.Print "Form_KeyDown"; KeyCode; Shift; GetKeyState(vbKeyMenu)
If KeyCode = vbKeyR And (Shift And 4) = 4 Then
Debug.Print "Enterを押下したことにする"; KeyCode; Shift; GetKeyState(vbKeyMenu)
Call KIS_keybd_event(vbKeyMenu, 0, KEYEVENTF_KEYUP, 0)
Call KIS_keybd_event(vbKeyReturn, 0, 0, 0)
Call KIS_keybd_event(vbKeyMenu, 0, 0, 0)
ElseIf KeyCode = vbKeyReturn And (Shift And 4) = 4 Then
Debug.Print "フルスクリーン"; KeyCode; Shift; GetKeyState(vbKeyMenu)
ElseIf KeyCode = vbKeyReturn And (Shift And 4) <> 4 Then
Debug.Print "Enter押下時の処理"; KeyCode; Shift; GetKeyState(vbKeyMenu)
End If
Exit Sub
どうもGetKeyStateは254さんの思ったとおりの動作をしていないようです。
使用しないほうがよさげ。
0266デフォルトの名無しさん
NGNGScaleModeは関係ないかと
0267デフォルトの名無しさん
NGNG確かに。スマソ。鬱氏。
0268デフォルトの名無しさん
NGNG>ところで、FormのStartUpPositionプロパティで「画面の中央」じゃ駄目なの?
これで解決しました。勉強不足でした。
>>261
>パスワードを暗号化して保存するぐらいは
暗号化とはどういうことをするのでしょうか
初心者ですので、もしできれば詳しく説明してただければと思います
レスサンクスです
0269デフォルトの名無しさん
NGNG初心者だからと行って何でも許されるわけではない。
0270デフォルトの名無しさん
NGNGパスワードを逆にしたり全バイト1足したり
Xor使ったり色々。
要は暗号化後には暗号前が分からなくすれば良い。
どう実装するかは自分で考えようね。
0271デフォルトの名無しさん
NGNG接続しているデータベース・テーブルが更新・追加等された際の
イベントってあるんでしょうか?
これがわからない為に、ロード時にadodb.connectionを
バインドして、タイマー毎にadodb.commandでsp_whoやsp_lock、自前の
ストアドを走らせて確認し、イベントを発生させています。
ここが出来れば、ADO関係はActiveXDLLにして
実行プログラム自体にはraiseeventしてやるだけで
済むので大分楽になるなーっていう手抜きしたさのみでこれに
ついて調べています。
日本語が不自由ですみませんがこの辺実践してる方
いましたらご教示ください。お願いいたします。
0272271
NGNG0273268
NGNG暗号化の目的がよく理解できないんですが
例えばパスワードが1234としたら
テキストファイルには4321と書いて保存すると言うことですよね
1234と暗号化しないで書いても特に不都合はないように思うのですが
0274デフォルトの名無しさん
NGNGパスワードなんて物騒なもんが平文でその辺に置いてあることの
危険性が理解できない奴の作ったプログラムなんか使えねえよ。
■ このスレッドは過去ログ倉庫に格納されています