[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 06/03 14:56 / Filesize : 85 KB / Number-of Response : 296
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

VBプログラマ質問スレ(6.0以前) Part52



1 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 17:33:37 ]
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。

○ 質問者の心得
 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。
 二.VBScript、インストーラーなどはこのスレでOK。
 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
 四.荒らしは相手しない。

○ 回答者の心得
 一.答えられない質問は無駄に罵倒せずスルー。無理するな。
 二.代用法を強制しない。
 三.回答する上で必須ではない情報をむやみに聞き返さない。
 四.荒らしは相手しない。
 五.VB情報募集中。
 六.回答は質問者が理解できるよう具体的に。

MSDN Online Japan ホーム
 www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6
 msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Google
 www.google.co.jp/

※「まず自分で調べる」クセを身につけよう。

152 名前:125 [2007/06/08(金) 19:59:32 ]
>>148
だいたいそんな感じですね
正確には

1. 2桁の正の数のみの数値の和の式をランダムで二つ自動生成して
2. その自動生成された式を自分の内部で計算して 大きいほうの数を持つ式を選べば正解として処理

1.2を決められた時間ないひらすら繰り返す

で一回1ポイントとして終了後に合計得点と正答率を示す
ついでに可能だったら合計得点の今までチャレンジした人の中でのランキングも示す

というところまで作りたいんですが、プログラムの基礎もさっぱりな段階なので
全くダメといった感じです・・・

可能ならばどなたかに参考になりそうなアドバイスを頂きたいです
よろしくお願いします


153 名前:デフォルトの名無しさん [2007/06/08(金) 20:01:14 ]
>>152

まずは>>133
が作ってくれてるのうごかしてみ?

154 名前:125 [2007/06/08(金) 20:11:54 ]
>>153
やってみたんですけどエラーが出て実効できないです・・・
多分自分が変数を宣言する場所とかを間違ってるのがいけないと思うんですが・・・

155 名前:デフォルトの名無しさん [2007/06/08(金) 22:07:20 ]
>>154
VB6環境ないんでEXCEL2003のVBAでやってみたがちゃんと動いてくれたぞ?

あれをモジュールにはっつけて

Private Sub CommandButton1_Click()
Call Eq_Sample1
End Sub

Private Sub CommandButton2_Click()
Call Eq_Sample2
End Sub

これでちゃんと数式ができてるいいサンプルだと思うけどなぁ?

どんなエラーがでてどこでエラーが起きてるか出来るだけkwsk書いて
ちょっとそっちで動かないソースここにはりつけてみないか?
貼り付けたのはもちろん>>146の言うとおり21レス目のVBソースが直書きしてあるやつだよな?

156 名前:125 [2007/06/08(金) 23:05:39 ]
今146のやつを標準モジュールに全部貼り付けて
実行するフォームにコマンド1,2を用意して155のソースを書いて実行したら
エラーは出なくなりましたが、画面に何の変化もないといった感じです・・・
標準モジュールに貼り付けるのが何か間違ってますか?

157 名前:デフォルトの名無しさん [2007/06/09(土) 00:04:57 ]
>>156
なにも表示されないよ
ヒント Debug.Print
適当にラベルにでも表示してみれば?

158 名前:125 [2007/06/09(土) 07:34:35 ]
>>157
Debug.Print
というものを調べてみたらファイル操作というもので色々なことに
使われてるみたいだってことは分かったんですが
146のソースにどういう役割で導入すればいいかというのは分からないです・・・
可能ならばもう少しヒントを頂きたいです

159 名前:デフォルトの名無しさん [2007/06/09(土) 09:23:11 ]
>>158
根本的に基礎を勉強しなきゃ話にならないとは思うけど
”イミディエイトウィンドウ”という所に文字を表示する機能がDebug.Print
>>146のソースの中にDebugPrintてあるのは確認用で実際のフォーム内には表示されない
なので表示するためにはラベルやテキストボックスに表示させる必要がある

ぶっちゃけどれ位かけるの?
ボタン押してラベルの文字と色を変更することくらいはできるの?

160 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 11:19:36 ]
むしろ今からVB6を「基礎から」勉強してどうする。



161 名前:デフォルトの名無しさん [2007/06/09(土) 14:50:50 ]
>>160
会社によっては未だにVB5使ってるところもあるんだし、
勉強するのに時代遅れもなにもないんじゃない?

必要だから習得する。
必要なければ習得しない。

こんなもんでしょ?

162 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 15:13:25 ]
むしろこのスレの住人なら
もうバージョンアップしない「 完 成 さ れ た 」この言語を
一生使い続けるぐらいの気持ちで

163 名前:デフォルトの名無しさん [2007/06/09(土) 15:22:47 ]
>>162
そこまでは愛せない俺ガイル

164 名前:125 [2007/06/09(土) 15:36:26 ]
>>159
遅くなってすいません
下の二行に書かれていることはできると思います

本当に簡単なことは多分できるのですが、例えば

Option Explicit

Public Enum ELEVEL
LV_PLS = 1
LV_MIN = 2
LV_MUL = 3
LV_DIV = 4
End Enum

Public Type TMATH
Level As ELEVEL
Max As Long
Min As Long
Length As Integer
Brackets As Byte
End Type

などのソースはいきなり見たことない書き方の連続で
何が何を意味してるとかが全く分からない状況です・・・

165 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 15:49:48 ]
>>164
そんな事すらいちいち教えなきゃいけないのか?
自分で調べる気は毛頭ないのか?
トイレまで他人が手伝ってもらわないといけないのか?
ふざけんなこの野郎

166 名前:デフォルトの名無しさん [2007/06/09(土) 15:51:25 ]
>>164
基礎を勉強してからアプリなり何なり作るといいと思うよ。
処理云々以前の問題。

167 名前:デフォルトの名無しさん [2007/06/09(土) 15:58:10 ]
EnumもTypeも調べられない程度の人間にプログラムは向いてないんだってばっちゃが言ってた!

168 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 18:09:57 ]
>正誤に関らず ・・
という部分が非常に気持ちわりいな
誰か、正誤判定出来るよう修正キボンヌ

169 名前:デフォルトの名無しさん [2007/06/10(日) 01:04:18 ]
>>168
正誤判定はしてるんだろ?
指定された時間が経過したら正解率出すんだし。

答える度に毎回ヴィジュアル的に軽く表現させる程度なら
普通にやるもんだろーと思うが。

質問者が言ってるのは、
正解でも不正解でも次々と問題が表示されていくってことだと思うんだが。

170 名前:デフォルトの名無しさん [2007/06/10(日) 11:31:53 ]
SMTPでメール受信するプログラムをVBで作成しようとかんがえているのですが、受信したメールをポップアップで表示するのは可能ですか?



171 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 11:42:18 ]
>>170
SMTPでメールを受信とは、サーバを作りたいと言ってるの?

172 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 11:50:28 ]
>>170
受信したメールは貴方がメールだと思っているだけで、実はタダの文字列なんじゃないか?

173 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 12:00:44 ]
いい感じに荒れてきた

174 名前:デフォルトの名無しさん [2007/06/10(日) 12:50:39 ]
BSMTPの話?

175 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 12:53:29 ]
>>173
つ アロエ
  肌にいいらしいぞ

176 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 13:14:50 ]
このスレにSMTPは送信用のプロトコルだと勘違いしてるやつがいる。

177 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 14:03:02 ]
あげあしとり出現w

178 名前:125 [2007/06/10(日) 16:15:19 ]
取りあえず今自分なりの書き方でプログラムを作っていて
一個一個順を追って152に書いたことに近づけていっている感じなんですが
取りあえずフォームが開いたらランダムで一つの数式を表示しようということを
やろうとしていて

Randomize
Dim a As Integer
Dim b As Integer
a = 99
b = 10
Label1.Caption = CInt(Rnd(a) * 100)
Label1.Caption = CInt(Rnd(b) * 100)
Label1.Caption = CStr(a) & "+" & CStr(b)

と書いたんですが、これだとaとbの値が変化せずに99+10と表示されてしまい
値が固定化されてしまいます・・・
ランダムの効果を利かせるには何かソースが足りないんでしょうか?

179 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 16:24:35 ]
ワラタ
なんかこうなってくると釣りクサイよなwww

180 名前:デフォルトの名無しさん [2007/06/10(日) 17:08:23 ]
初心者の俺でも分かる。
1行ずつ追っていけよww



181 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 17:10:27 ]
相手にするから付け上がる

182 名前:125 [2007/06/10(日) 17:23:20 ]
いや142さんのをヒントにやってみたつもりだったんですが・・・
2桁同士の加算にしたいから上限99、加減10に設定して
その値をランダムかしてa+bのところに表示
みたなイメージで書いたつもりです

183 名前:デフォルトの名無しさん [2007/06/10(日) 17:29:48 ]
うるさい
だまれ

184 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 17:35:17 ]
(´・ω・)

185 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 17:42:30 ]
>その値をランダムかして
ってランダム化表示してるだけだろ?aとbは元の値のままぢゃん

186 名前:125 [2007/06/10(日) 18:42:37 ]
a = 99
b = 10
のすぐ下の
Label1.Caption = CInt(Rnd(a) * 100)
Label1.Caption = CInt(Rnd(b) * 100)
でランダム化して、その下の
Label1.Caption = CStr(a) & "+" & CStr(b)
でランダム化したa、bをa+bの形式で出力できると思ったのですが
どの辺がおかしいですか?
プログラムを色々前後させてやっても値が0になったりしてしまいます・・・

187 名前:デフォルトの名無しさん [2007/06/10(日) 18:48:48 ]
ヘルプ使えよカス
Rnd()でググるなりしてもすぐ解決するだろうに
いちいちその程度のことを人に聞くなよタコ助が

188 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 18:49:12 ]
>>186
>>165

189 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:35:21 ]
>ランダム化したa、bを
ランダム化してねぇぇぇぇぇぇぇぇ!



...それともRnd()は呼び元で用意しているパラメータの値を書き換えるのか?

190 名前:125 [2007/06/10(日) 19:49:48 ]
すいません、調べてもあまり出てこないし
ヘルプも自分はインストールしてなかったし今手元にCDもないんです・・・

Dim a As Integer
Dim b As Integer
をDim arandom As Integer
とか色々書き換えてみましたが違うみたいで
Label1.Caption = CInt(Rnd(a) * 100)
Label1.Caption = CInt(Rnd(b) * 100)
でa、bをランダムかしてるのかなと思ったんですが
Rnd(a)とかの表現がおかしいですか?



191 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:56:51 ]
質問は手元にCDがある状態になってからにしてくれ
このままではお前のくだらない質問だらけでスレがいくつあっても足りない
はっきりいって迷惑なんだよ

192 名前:デフォルトの名無しさん [2007/06/10(日) 20:13:14 ]
くだらないはないんじゃないか?
もともとVBに関する質問をするスレなんだから
初心者はホントに簡単なプログラムでも微妙なとこ
どうすればいいとかわからんもんだよ
お前も慣れるまではそうだっただろ?
何なら俺が125の実現したい機能全部書いてやってもいいけどね


193 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:17:01 ]
> Rnd(a)とかの表現がおかしいですか?
いいえ。
a,bの値を書き換えるようにしていないのがダメなだけです。

194 名前:デフォルトの名無しさん [2007/06/10(日) 20:18:56 ]
>>192
125とあなたでメールでやり取りしてくれ
せいぜい125の辞書にでもなればいい

195 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:32:38 ]
とりあえずマニュアルを入手するのが第一。
これはVBScriptのだけど、VB6でも同じだからよく読んでみろ。
www.mhl.janis.or.jp/~winarrow/vbscript/htm/vbs176.htm


196 名前:デフォルトの名無しさん [2007/06/10(日) 20:33:34 ]
だからF8キーで1行ずつやってどういう動きをするか見ればいいのに。
Label1.Caption = CInt(Rnd(a) * 100) で、
たとえばLabel1は55と出たとする。
その時のaの値は???  99だろ?
いい加減気づいてよ…。


197 名前:125 [2007/06/10(日) 20:48:58 ]
すいません、193さんのコメントで数式はランダムで
上手く出てくるようになりました
明日以降からはしっかりとMSDNをインストールして来れると思うので
最後に今日中にもう一つだけ教えていただきたいのですが
2桁の整数同士を加算したいから142をヒントにして
Ransuu = Int((hi - Lo + 1) * Rnd + Lo) をa、bに置き換えてみたんですが
一桁の整数がまだ出てきてしまいます
多分ここがポイントになってると思うんですが、この式は何を行うための
式なんですか?


198 名前:デフォルトの名無しさん [2007/06/10(日) 20:59:45 ]
>>197
ステップ実行すりゃいくらでも分かるだろ
何故それをしない?

>>142の式はRansuuに1〜10の値をランダムに代入してるだけだ

199 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:01:03 ]
上限と下限の間の乱数を得る式

200 名前:125 [2007/06/10(日) 21:01:57 ]
>>198
ステップ実行って何ですか?



201 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:03:58 ]
やってみればわかる

202 名前:デフォルトの名無しさん [2007/06/10(日) 21:31:01 ]
例えばコマンドがクリックされるたびに
数字が一つ増えていくといったような機能は
VBで作ることは可能ですか?

203 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:32:23 ]
はい

204 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:46:41 ]
Wubi - Ubuntu installer for Windows
pc11.2ch.net/test/read.cgi/software/1181387720/l50

205 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 22:07:53 ]
あまりにも初歩的な質問はこっちの方が親切に答えてくれるぞ

くだすれVB6.0以前(超初心者向け)
pc11.2ch.net/test/read.cgi/tech/1165574205/

住人は共通化もしれんが

206 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 22:10:36 ]
このスレだって、相手のためになるように親切に答えてるじゃないか。失礼だな。

207 名前:デフォルトの名無しさん [2007/06/11(月) 00:42:45 ]
1から全部教えるのは可能だが、
それじゃ人に教えられたことしか出来なくなるからな。

理解せずに"書き方"としてコードを覚えて貰っても意味がない。
同じことの繰り返しになるだけ。

208 名前:デフォルトの名無しさん [2007/06/11(月) 09:16:10 ]
これ一度わんくまで質問してもらいたいな
どんな素晴らしい回答が帰ってくるのか
いや・・・それすらないかもしれんw

>>125
現在全てのソースで現状何処までできて何処がどう理解できないのか
折角だからkwsk書いてみ?

それの判らない事は教えないと思うけど調べる為の術はきっと優しいお兄さん方が教えてくれるかもしれないw
でも・・・・判らない事を適切に調べることができるのもPGとしてのスキルだと思うぜ

209 名前:デフォルトの名無しさん [2007/06/12(火) 11:01:28 ]
>>202
こんな感じか?
このくらいVBでなくとも余裕だと思うが。

Private m_lCnt As Long

Private Sub Command1_Click()
m_lCnt = m_lCnt + 1&
Label1.Caption = CStr(m_lCnt)
End Sub

Private Sub Form_Load()
m_lCnt = 0&
Label1.Caption = CStr(m_lCnt)
End Sub


210 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 14:24:13 ]
VB6でテキストボックスからフォーカスを他へ移さないようにしたいのですが、どうしたらいいんですか?
後、カーソルを左端じゃなくて右端に固定したいのですが…




211 名前:デフォルトの名無しさん [2007/06/13(水) 15:41:21 ]
なんのためのプロパティだ。

212 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 15:54:20 ]
どうして複数のスレで聞くんだろうな
答える人間は一緒なのに

213 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 16:56:23 ]
スペシャルヒント
ろすとふぉーかす
せっとふぉーかす
あらいんめんと

214 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 22:01:45 ]
ご冗談を。

215 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 08:29:36 ]
validateでいいんでね

216 名前:デフォルトの名無しさん [2007/06/14(木) 19:37:29 ]
エクセルのデータを読込むために以下のスクリプトを作りました。

Set pExlApp = CreateObject("Excel.Application")
Set pExlBook = pExlApp.Workbooks.Open(strFileName)

1段目は正常に動くのですが
2段目が
OfficeXP時は正常に動き
Office2000時にエラーがでてしまいます。

どのような理由が考えられますか?

217 名前:デフォルトの名無しさん [2007/06/14(木) 20:41:52 ]
2つ質問です。

自作のActivX DLL を exe から呼んでるんですが、

1、プロジェクト→参照 でDLLを参照すると、DLLの配置ディレクトリを
  フルパスで設定しているように見えるんですが、この認識はあってますか?

2、他のマシンに自作プログラムを持っていくとき、exeとdllの配置場所を任意に
  したいのですが、どうしたら可能ですか?



218 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 00:09:41 ]
>>217
1、ActiveXコンポーネントはレジストリ登録して使えるようになる訳だから、
当然場所はフルパスで設定されている。

2、ActiveX DLLはどんな場所にインストールしようと構わない。
インストーラでActiveXコンポーネントを登録をするようにするだけ。

219 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 00:36:15 ]
>>218
なるほど、ありがとうございます。
うすうす勘付いてはいましたが、やっぱレジストリ登録するのか。

ということは、DLLの位置は気軽に移動することはできないってことですね?
Win32APIのLoadLibrayEx だといくつかのサーチパス候補のどれかにあれば
いい、・・・というようなやり方は無理と。

220 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 00:37:52 ]
× いい、・・・というようなやり方は無理と。
○ いいという仕様ですが、そういうやり方は無理と。



221 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 05:57:23 ]
Msxml2.XMLHTTPとかWinHttp.WinHttpRequest.5.1などを使用して
Webページをリクエストした時に
送られてくるクッキーを取得したいのですが
これは可能なのでしょうか?

222 名前:デフォルトの名無しさん [2007/06/15(金) 09:56:07 ]
質問ですが
例えば、コマンドボタンが3つありそれをある規則に従って
順番にクリックしてもらった後に次の処理が実行される
といったコードを書きたいんですが、
コマンドが1、2、3と順に押されたことの判定と
最後のコマンドが押された瞬間に行わせたい処理はどこに記述すればいいのでしょうか?
コマンドが押される順番は毎回決まってないといった感じなので、
特定のコマンド内に書くやり方ではうまくいかないと思うのですが
何かやり方をご存知の方がいたらご教授よろしくお願いします

223 名前:デフォルトの名無しさん [2007/06/15(金) 10:35:08 ]
>>222 こんないい加減なコードとかどうよ?www 動作は環境ないから試してないけど
private m_ButtonFlag(1 to 3) as long
private m_cnt as long

private sub form_load
 m_cnt = 0
end sub
private sub Button1_click
 m_ButtonFlag(1) = cnt+1
end sub
private sub Button2_click
 m_ButtonFlag(2) = cnt+1
end sub
private sub Button3_click
 m_ButtonFlag(3) = cnt+1
end sub
private sub ButtonManage
 dim i as long
 for i = 1 to 3
  if m_ButtonFlag(i) =0 then
   exit sub
  end if
 next i
 
 if m_ButtonFlag(1)= 1 and m_ButtonFlag(2) = 2 and m_ButtonFlag(3) = 3 then
  msgbox "ボタンが123の順に押されました"
 end if
end sub

private sub Button4_Click
 erase m_ButtonFlag:m_cnt=0
end sub

224 名前:デフォルトの名無しさん [2007/06/15(金) 10:37:42 ]
書き忘れてた
ボタンのクリックで ButtonManage を最後に追加しないと判定しないわw

225 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 11:55:18 ]
>216
エラーメッセージくらい書けよ

226 名前:デフォルトの名無しさん [2007/06/16(土) 02:40:44 ]
>>223
変数cntが未定義&インクリされてない件について

それじゃどの順番でボタン押しても、
配列の値はみんな同じじゃね?w

227 名前:デフォルトの名無しさん [2007/06/16(土) 02:43:19 ]
m_cntにも0しか代入してねぇwwwワロタwwwww

228 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 04:59:00 ]
第三者が通知を受けてチェックすれば言いだけジャン。

Private m_IdQue As String
Private m_ValidOrder As String

Private Sub Form1_Load()
  m_IdPool = "  "      'ダミーの3桁データを入れておく
  m_ValidOrder = "123"  ' 最初の規則は123の順
End Sub

Private Sub Button1_Clock
  AddEventToQue "1"
End Sub
Private Sub Button2_Clock
  AddEventToQue "2"
End Sub
Private Sub Button3_Clock
  AddEventToQue "3"
End Sub

Private Sub AddEventToQue(id As String)
  m_IdQue = Right(m_idQue, 2) & id
  If m_IdQue <> m_ValidOrder Then
    Exit Sub
  End If

  ' 規則の順に押された。
  DoNextProc  ' 次の処理

End Sub

規則を変えたくなったら、好きなタイミングでm_ValidOrder を変更すればいい。

229 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 05:05:38 ]
ミスった、コードの中の m_IdPool  は m_IdQue に置き換えて読んでくれ。
修正漏れがあった。

230 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 05:07:30 ]
しかも、Clock になってた oRzz



231 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 11:57:16 ]
>>222
クラス使ってステートマシン作るのがいいと思う。
実際書いてみたんで要望があれば言ってちょ。

232 名前:デフォルトの名無しさん [2007/06/16(土) 14:55:25 ]
VBからAccessにデータを追加する場合
オートナンバーの項目はどうすればいいのでしょうか?

wrkSql = wrkSql & "INSERT INTO MSTDB VALUES("
wrkSql = wrkSql & "" & & "," 'オートナンバー
wrkSql = wrkSql & "" & wYear & "," '年
wrkSql = wrkSql & "" & wMonth & "," '月
wrkSql = wrkSql & "" & wDay & ")"    '日

'クエリ実行
gConnDB.Execute wrkSql

これの一番上のオートナンバーの追加がわかりません。

233 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 18:36:29 ]
>>232
オートナンバーはINSERTの対象にしなけりゃいいんだよ。
勝手に値が入る。


234 名前:デフォルトの名無しさん [2007/06/16(土) 21:25:30 ]
ありがとうございます


235 名前:222 [2007/06/17(日) 10:11:22 ]
遅くなってすいません、なぜか規制がずっとかかっていて書き込めませんでした・・・
みなさんいろいろありがとうございます

>>228
buttonをcommandに変えてそのまま実行してみたんすが
Private Sub AddEventToQue(id As String) というところの
AddEventToQueでsubまたはfunctionが定義されていませんという表示が出てしまいます・・・
ここを変数宣言してみたり色々やってみたりしたんですが、まだうまくいかないので
アドバイス頂けると助かります

>>231
ありがとうございます
クラス使ってステートマシンというのについてよろしければ
もう少し具体的に教えていただけませんか?
取りあえず今はコマンドが3つ押されたことを認識したら
例えば画面上にあるラベル内の数値などが変更されるといったようなことを目指してます



236 名前:231 mailto:sage [2007/06/17(日) 12:39:24 ]
>>235
こんな感じ

'---- クラスモジュール CInputOrderValidator ----
Private mInputCount As Integer
Private mValidInputOrder() As eInput
Private mInivalidInputEntered As Boolean
Public Event ValidationFinished(result As eValidationResult)

Public Enum eState
  Initial = 0
  DuringInput = 1
  ValidationFinished = 2
End Enum

Public Enum eInput
  Button1 = 1
  Button2 = 2
  Button3 = 3
End Enum

Public Enum eValidationResult
  Indeterminate = 0
  Invalid = 1
  Valid = 2
End Enum

Private Sub Class_Initialize()
  mValidInputOrder = GetDefaultValidInputOrder()
  Me.Reset
End Sub

237 名前:231 mailto:sage [2007/06/17(日) 12:40:54 ]
Private Function GetDefaultValidInputOrder() As eInput()
  Dim vValids() As Variant
  vValids = Array(eInput.Button1, eInput.Button2, eInput.Button3)
  Dim valids() As eInput
  Dim i As Integer
  Dim lastIdx As Integer
  lastIdx = UBound(vValids)
  ReDim valids(lastIdx)
  For i = 0 To lastIdx
    valids(i) = vValids(i)
  Next
  GetDefaultValidInputOrder = valids
End Function

Public Sub Reset()
  mInputCount = 0
  mInivalidInputEntered = False
End Sub

Public Property Get State() As eState
  If mInputCount = 0 Then
    State = Initial
  ElseIf mInputCount >= Me.ValidInputLength Then
    State = ValidationFinished
  Else
    State = DuringInput
  End If
End Property

238 名前:231 mailto:sage [2007/06/17(日) 12:42:08 ]
Public Property Get ValidInputLength() As Integer
    ValidInputLength = UBound(mValidInputOrder) + 1
End Property

Public Property Get ValidationResult() As eValidationResult
  If Me.State = ValidationFinished Then
    If mInivalidInputEntered Then
      ValidationResult = Invalid
    Else
      ValidationResult = Valid
    End If
  Else
    ValidationResult = Indeterminate
  End If
End Property

Public Sub SetNextInput(nextInput As eInput)
  If Me.State = ValidationFinished Then
    Exit Sub
  End If
  If mValidInputOrder(mInputCount) <> nextInput Then
    mInivalidInputEntered = True
  End If
  mInputCount = mInputCount + 1
  If Me.State = ValidationFinished Then
    RaiseEvent ValidationFinished(Me.ValidationResult)
  End If
End Sub

239 名前:231 mailto:sage [2007/06/17(日) 12:43:38 ]
'---- Form1 ----
Private WithEvents mValidator As CInputOrderValidator

Private Sub Form_Load()
Set mValidator = New CInputOrderValidator
End Sub

Private Sub Command1_Click()
  mValidator.SetNextInput (Button1)
End Sub

Private Sub Command2_Click()
  mValidator.SetNextInput (Button2)
End Sub

Private Sub Command3_Click()
  mValidator.SetNextInput (Button3)
End Sub

Private Sub mValidator_ValidationFinished(result As eValidationResult)
  If result = Valid Then
    MsgBox ("OK !")
  Else
    MsgBox ("NG !")
  End If
  mValidator.Reset
End Sub

240 名前:222 [2007/06/17(日) 14:30:34 ]
ありがとうございます
まだコードを実行してないんですが、これを実行する場合って
Buttonのフォームが必要ですよね?
本を見た感じだと画面左のコマンドやらラベルやらを引っ張ってくる場所から
ボタンも引っ張ってこれるようになってるっぽいんですが、自分のVB6.0には
入ってないっぽいんですよね・・・画面色々いじくって表示させられないか試したりもしたんですが・・・
あとこれを実行して上手く自分の目的の機能を実現するためには、コマンドやボタン
以外にもフォーム上に引っ張ってくるべきアイテムはありますか?



241 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:39:51 ]
>>240
必要な操作は、

(1) プロジェクトにクラスモジュールを追加して、プロパティグリッドで名前を"CInputOrderValidator"
  に変更して>>236以降のコードを貼り付ける。

(2) Form1にコマンドボタンを三つ(Command1、Command2、Command3)貼り付けて
  >>239のコードを貼り付ける。

これだけだよ。

242 名前:デフォルトの名無しさん [2007/06/17(日) 19:04:45 ]
>>235
まさかとは思うが、
DoNextProc
これもコードとしてそのまま書いたのか?

243 名前:デフォルトの名無しさん [2007/06/17(日) 23:04:21 ]
>>242
そのまま書いていました・・・

>>241
実行できましたありがとうございます
この場合だとコマンド1、2、3の順で押された場合はAの処理
他の順で押される5通りの場合はBの処理が行われるといった感じになっていて
これを全てバラバラに考えて(例えば、2、1,3の順で押されたらCの処理)
といったようにしたいと思ってクラスモジュール内でこの機能を実現するために
関係してきそうな部分を探して考えてみたんですがいまいちどこをいじればいいかが分かりません・・・
何度も申し訳ありませんが、これに関してアドバイスいただけると助かります
よろしくお願いします

244 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 09:09:47 ]
>>243
一連の流れを眺めてみたけどさ、もっと本質を理解したほうが良いと思うよ
VB6以前なら強力なデバッグ実行機能もあるんだしさ

・暗記すべき部分はきっちり暗記汁(VBの予約語等
・エラーが出たら、メッセージ良く嫁
・デバッグ実行でどんな処理がどこで行われているか調べるべし
・コードの全体をイメージ出来るまでひたすら読んだり書いたりデバッグ実行したり汁
・つーか、ちっとは自分で考えろw

245 名前:デフォルトの名無しさん [2007/06/18(月) 17:16:16 ]
>>243
Select Caseも知らんのか。

あと>>242で言ってるのは要約すると、
サンプルとして挙げられたソースに記述してあるコメントくらい普通に理解しろってことなんだが…

分かるか?

246 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 19:56:33 ]
ここ1,2週間で聞いてきてるやつは全部同一人物っぽいな・・・

247 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 19:59:25 ]
終わった言語をいまさらスタートする奴なんてそんなにいないしな

248 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 22:03:55 ]
勝手に終わってろカオス

249 名前:デブオ [2007/06/19(火) 16:58:10 ]
すみません。VB(6.0)で指定されたURLにファイルをPOSTする。
又、指定されたURLからファイルをダウンロードすことってできますか?
できるとすればどのようにすればいいのでしょうか?
どなたか教えてください。

250 名前:デフォルトの名無しさん [2007/06/19(火) 17:00:28 ]
>>249
WEBBROWSERコントロールでも使ってろよw



251 名前:デブオ [2007/06/19(火) 17:16:19 ]
WEBBROWSERコントロールというのは標準で入っていないようなのですが?
MSWebDVDコントロールのことでしょうか?

252 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 17:24:11 ]
マジレスすると
メニュー>プロジェクト>コンポーネント>コントロールで
該当するやつのチェック外せばいいよ
どのコントロールかぐらいは自分で調べろ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<85KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef