v(・∀-)b VBプログラマ質問スレ(6.0以前) Part25
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG前スレはこちら
Part16 http://pc3.2ch.net/tech/kako/1034/10343/1034302532.html
Part17 http://pc3.2ch.net/tech/kako/1036/10361/1036154952.html
Part18 http://pc3.2ch.net/tech/kako/1038/10381/1038103769.html
Part19 http://pc3.2ch.net/tech/kako/1039/10398/1039859691.html
Part20 http://pc2.2ch.net/tech/kako/1041/10418/1041879465.html
Part21 http://pc2.2ch.net/tech/kako/1044/10440/1044028945.html
Part22 http://pc2.2ch.net/tech/kako/1046/10463/1046354784.html
Part23 http://pc2.2ch.net/tech/kako/1047/10477/1047743187.html
Part24 http://pc2.2ch.net/test/read.cgi/tech/1050151126/
VB.net関連スレ
【老若】VB.net質問スレ【男女】 (Part2)
http://pc2.2ch.net/test/read.cgi/tech/1043629429/
Win32 API関連スレ
Win32API 質問箱 Build10 (979)
http://pc2.2ch.net/test/read.cgi/tech/1047819779/
心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調べてみる。
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
五.荒らしは相手しない。
六. VB情報募集中。
七. VB.NETはスレ違い
0446デフォルトの名無しさん
NGNG>[alt]+[return]の改行コードがあるんですか。
馬鹿にも程度ってもんがあるだろ!
0447デフォルトの名無しさん
NGNGLF だけじゃなかったっけ、たしか
0449デフォルトの名無しさん
NGNG0450デフォルトの名無しさん
NGNG小さなウインドウ(ブック)が開くようなのはどうやったら作れるのですか?
0451デフォルトの名無しさん
NGNGMDIのことだな、多分。
0452デフォルトの名無しさん
NGNGあんたもスゲー人だな。
0453デフォルトの名無しさん
NGNGありがとうございます。
調べてみます。
>>452
??
0454デフォルトの名無しさん
NGNGやはりフレームなどをドラッグしてみて、それにつられてボタンも移動するかどうかで見分けるしかないんでしょうか?
0455デフォルトの名無しさん
NGNG都合により、TrueTypeフォントをプリンタに180度回転させて上下逆にした状態で印刷する必要があるのですが、そのようなことは可能でしょうか?
0456デフォルトの名無しさん
NGNGCreteFontのEscapeMentを1800かな(ためしてないが)
0457デフォルトの名無しさん
NGNGなんでMを大文字にする? escapementって一語だぞ。
0458デフォルトの名無しさん
NGNG大昔ではフォームソース見て包含されているか見て編集していたんだが、今のはどうかな?
テキスト形式で吐ければ何か判るんじゃないの。
0459454
NGNG.frmファイルを見たら
Begin VB.Frame Frame1
Begin VB.CommandButton Command1
End
End
というふうにフレームの入れ子になってるのがフレームに属してるボタンだとわかりました。
0460460
NGNGどういう風にしたらいいでしょうか?
Open ステートメントかまたはそれと同じように
Web上にアップロードしたファイルから読み込むとか出来るますか?
0461デフォルトの名無しさん
NGNGperlかなんかでサーバーサイドに集計プログラム作って、
そのcgiにスコアの引数を送受信する形になってくるだろうな。
むろん、暗号化して。
0462460
NGNG少ない知識で暗号化もがんばってみます
0463デフォルトの名無しさん
NGNG構造体
type Atype
b() as integer
end type
をつくっといて
dim a() as Atype
redim a(2) ←a()のサイズを2に(これは問題ない)
redim a(1).b(3) ←a(1)に属するb()のサイズを3に
とすると、二つめのredimもa()に対するものとして受け取られてしまい、
b()のサイズを変更できません。
どうしたらこの状態でb()のサイズを操作できるでしょうか?
この方法でなくても、これと同じことができればよいのですが。
0464デフォルトの名無しさん
NGNG???
その書き方で動きましたが。
0465デフォルトの名無しさん
NGNGベクターのDelphiのダウンロードページ
http://www.vector.co.jp/soft/win95/prog/se205882.html
VBからDelphiへの移行を支えてくれるサイト
http://www.wwlnk.com/boheme/
0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNG連続して大量に行おうとすると
メモリをどんどん消費してしまいます
コネクションを切った時点でメモリを開放するようなのですが
途中で開放したり
メモリを消費しないようにする方法はあるのでしょうか?
0468デフォルトの名無しさん
NGNGADOを使わないっていうのが一つの手かも
0469デフォルトの名無しさん
NGNG0470デフォルトの名無しさん
NGNGDAOですかね。ちょっと、ADOを指定されてて、まいったなぁ。
再現コードです。ループでメモリがどんどん消費されます。MSGBOXのところで、いったんコネクションを切るとメモリが開放されます。
大量のデータをDBに登録したいとき、みなさんだとどうやりますか?
Private Sub Command1_Click()
Dim fso As New FileSystemObject
Dim cat As New ADOX.Catalog
Dim cn As ADODB.Connection
Dim rs As New ADODB.Recordset
Dim i As Long
Call cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mdb & ";Jet OLEDB:Engine Type=5;")
Set cn = cat.ActiveConnection
cn.Execute "CREATE TABLE XXX(a CHAR(10),b CHAR(10),C CHAR(10),D CHAR(10),E CHAR(10));"
rs.Open "XXX", cn, adOpenKeyset, adLockPessimistic
For i = 0 To 999999
rs.AddNew Array("a", "b"), Array(Format(i, "000000"), "000000")
If i Mod 10000 = 0 Then
MsgBox "refleshしたい"
End If
Next i
End Sub
0472デフォルトの名無しさん
NGNG接続プールを使う。
0473472
NGNG0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNGある
0476bloom
NGNG0477デフォルトの名無しさん
NGNG接続プールって知らない。
ありがとう。それも調べてみるね。
0478デフォルトの名無しさん
NGNGdelphiほど少なくはないんでしょ?
0479デフォルトの名無しさん
NGNGDelphiでなくとも今のうちからC#かなにか覚えておいたほうがいいよ。
0480472
NGNG470のような場合だと意味ないはず。
0481デフォルトの名無しさん
NGNG調べてみた。うん、関係ないか。
コネクションを切っても、即効でつなぎなおすとメモリは開放されないんです。
コネクションを切ったあとにMSGBOX出して1秒ぐらいあけて閉じれば
メモリは開放されるんです。
非同期でやってるわけでもないのに、いったい何をキャッシュしてるんだろう。
しばらく毎にアイドリングしなければだめなのかな。
オプションやプロパティーの設定で回避できるものなのか調べてるけど、さっぱりです。
0482デフォルトの名無しさん
NGNGメモリ管理もろくすっぽやってないDOSとかならともかく。
0483デフォルトの名無しさん
NGNGそうですが、大量のDB登録で
メモリスワップまで発生してパフォーマンスが落ちては問題ですし
途中でコネクションを閉じてアイドリングさせる方法以外に
もっとスマートでオフィシャルな開放方法があるんじゃないかなと思いまして。
ADOって、連続してレコードを追加する際は、合間に休ませろ
なんて仕様なんでしょうか
聞き方が悪いのかgoogleさんは答えてくれないし、困りました。
0484デフォルトの名無しさん
NGNG0485デフォルトの名無しさん
NGNGもう、げんなりですよ。
0486デフォルトの名無しさん
NGNGADOのことはよく知りません。
0487デフォルトの名無しさん
NGNGサーバー側でスクリプトやストアド組むのはダメなの?
0488デフォルトの名無しさん
NGNGええと、サバクラじゃなくて、ローカルアプリケーションの内蔵DBといった用途でして
スピードは問題ないんですよ、メモリをなぜか消費してしまうと。
で、今、adLockBatchOptimisticでrs.BatchUpdateにしたら、ぜんぜんメモリ食わなくなりました。
しかも速度もアップ。Batchでまとめるほうがメモリ食わないんでうすね。
そんなわけで、とりあえず、解決しました。いろいろありがと>みなさん
0489デフォルトの名無しさん
NGNGあのぉー、どこに質問したらいいのか分からない
くらいもしかしたら初歩的な質問かもしれないの
ですが、、、(汗)
自分でサイトを作っているのですが、
リンクを張って、普通にページに飛ぶのではなくて
小さい小窓のようなウィンドウが開くように
するにはどうしたら良いのでしょうか?
スレッド違いだったらホントごめんなさい。
どなたかよろしくお願いします。。
0490デフォルトの名無しさん
NGNGあ、嘘。追加されてなかった。
エラーも出ないのかな????
0491デフォルトの名無しさん
NGNGgoto http://pc2.2ch.net/hp/
0492デフォルトの名無しさん
NGNGエラーの場合,エラーが出るはず。UpdateBatchの前にUpdateしてる?
0493デフォルトの名無しさん
NGNG0494デフォルトの名無しさん
NGNGIf (rs.ActiveConnection Is Nothing) Then
Set rs.ActiveConnection = cn
End If
Call cn.BeginTrans
rs.Fields(flagName).value = "1"
Call rs.Update
Call rs.UpdateBatch
Call cn.CommitTrans
Set rs.ActiveConnection = Nothing
Exit Function
0495デフォルトの名無しさん
NGNG0496470
NGNG>>492
メインで書いてるコードではエラーが起きない
AddNewのあとにはUpdateしてる
小さいシンプルなコードで書いたらエラーでました。
ちょっと、大きなコードのほうは別のエラーも入っていそうなので、
ちょっと精査してます。
0497デフォルトの名無しさん
NGNGええとですね、Connection.Execute で SQL Insert文を連続発行しても、メモリが消費されてしまうんですよ。
で、スピードはAddNewの方が圧倒的に早いのでそっちでためしています。
ですが、メモリの問題がクリアできるなら多少遅くともExecuteでSQL投げます。
0498470
NGNGDim cat As New ADOX.Catalog
Dim cn As ADODB.Connection
Dim rs As New ADODB.Recordset
Dim i As Long
Call cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mdb & ";Jet OLEDB:Engine Type=5;")
Set cn = cat.ActiveConnection
cn.Execute "CREATE TABLE XXX(a CHAR(10),b CHAR(10),C CHAR(10),D CHAR(10),E CHAR(10));"
rs.Open "XXX", cn, adOpenKeyset, adLockBatchOptimistic
For i = 1 To 999999
rs.AddNew Array("a", "b"), Array(Format(i, "000000"), "000000")
rs("c") = "cccc"
rs.Update
If i Mod 1000 = 0 Then
rs.UpdateBatch
End If
Next i
0499デフォルトの名無しさん
NGNGExecute のオプションに adExecuteNoRecords を付けてる?
0500499
NGNG0502470
NGNGSet cn = cat.ActiveConnection
cn.Execute "CREATE TABLE XXX(a CHAR(100),b CHAR(100),C CHAR(100),D CHAR(100),E CHAR(100));", , adExecuteNoRecords
For i = 0 To 999999
cn.Execute "INSERT INTO XXX VALUES( '" & Format(i, "000000") & "', 'b', 'c', 'd', 'e' );", , adExecuteNoRecords
Next i
これでも、どんどんメモリが消費されてしまうんです。
0503デフォルトの名無しさん
NGNG0504デフォルトの名無しさん
NGNG0505デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNG細かいけど,Formatは遅いから1000000回のループだと別の方法の方が
いいと思われ。
0509デフォルトの名無しさん
NGNGいったい何件追加するの?
DBはAccessなんですよね?
大丈夫ですか?
0510デフォルトの名無しさん
NGNG0511470
NGNGん、まぁそう判断してあきらめるのを、どの辺りでするかといったところですかね。
どう判断した場合、何回かごとにコネクションを切断して、数秒アイドリングさせるといったことが必要になります。
できれば避けたいと思っています。
もう少し探してみます。
0512470
NGNG100万件というのも、場合次第なのですが
レコードサイズもフィールド数も大きいので
メモリの消費量も大きくなるみたいです。
先ほどのコードのCHAR(10)ってのをCHAR(100)にすると、がんがんメモリ食います。
0513デフォルトの名無しさん
NGNGConnection を使わずに Recordset をダイレクトに開く・・・
0514デフォルトの名無しさん
NGNG0516デフォルトの名無しさん
NGNGデータベースの形式 <ファイル名> を認識できません。(Error 3343)
0517470
NGNGコネクションを頻繁に切断するものなのでしょうか?
たくさんInsertをしたりするアプリケーションを掻いたことのある人
どうしてましたか?
0519470
NGNGrs.Open "XXX", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mdb & ";Jet OLEDB:Engine Type=5;", adOpenKeyset, adLockPessimistic
ってしても、案の定なんら変わらなかったです。
0520デフォルトの名無しさん
NGNGうちとこAccess97やけん。おかしいと思った、いつもはOLEDB.3.51やもん
やっぱDAOやな。俺はそれしかしらん。
ADOには泣かされた経験多々,がんがれ
0521470
NGNGどうしてもADOだめならDAOもやってみるよ
なんか、コネクション切れば開放されるとか言ったけど
それも違ってたよ、開放されたようにみえて開放されてませんでした
再開したら同じとこまで戻っちゃう。
0522デフォルトの名無しさん
NGNG今ダオってみてるけど。桁が違うだけでリークされちまう・・鬱 ビルゲイツのバカやロウ!
0524デフォルトの名無しさん
NGNGそれは接続プール。
cn.Closed
とすると、実はWindowsが裏でしばらくの間保持していてくれる。つぎにコネ
クションを張ったときにはこのプールされた接続を使う。
0526デフォルトの名無しさん
NGNG> test.vbs
> メッセージを入力して下さい ← これが表示される
> xxxx ← 値を入力する
ソース側で値を受け取る方法も教えて下さい
よろしくお願いします
0527長文御無礼
NGNG'メモリ使用はワークスペースのサイズで、一度膨れたサイズは再利用されてる様子。
'(一回目Cancel→弐回目Cancel として動きを確認 排他制御やインデックスは別問題としてほしい)
'とりあえずうちとこの三勝設定 Microsoft DAO 3.51 Object Library のみ
Private Sub Command1_Click()
Dim db As Database: Dim rs As Recordset: Dim td As TableDef: Dim I As Long
Dim rc As Integer
On Error GoTo eHandle
Set db = Workspaces(0).CreateDatabase(Format(Now(), "HHNNSS") & ".mdb", dbLangJapanese)
Set td = db.CreateTableDef("XXX")
td.Fields.Append td.CreateField("A", dbText, 10)
td.Fields.Append td.CreateField("B", dbText, 10)
td.Fields.Append td.CreateField("C", dbText, 10)
db.TableDefs.Append td
Set td = Nothing
Set rs = db.OpenRecordset("XXX")
For I = 0 To 999999
rs.AddNew
rs.Fields(0) = Format(I, "000000"): rs.Fields(1) = "000000"
rs.Update
If I Mod 10000 = 0 Then
rc = MsgBox("refleshしたい", vbYesNoCancel + vbDefaultButton2)
If rc = vbCancel Then
Exit For
ElseIf rc = vbYes Then
End If
End If
Next I
Exit Sub
eHandle:
MsgBox Err.Description, vbMsgBoxHelpButton, , Err.HelpFile, Err.HelpContext
End Sub
0529デフォルトの名無しさん
NGNG0531デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNGオマエが言うな
0534526
NGNG有難うございます。
inputboxでpop upからの入力は分かりますが
DOSのコマンドプロンプトからの入出力が分か
りません
お手数ですがお願いします
0535デフォルトの名無しさん
NGNGhttp://www2.bbspink.com/test/read.cgi/erog/1053601941/
0536デフォルトの名無しさん
NGNG0538デフォルトの名無しさん
NGNGVCでのそれっぽいやり方を晒せや。それが可能かどうか答えが返ってくるだろ。
0539デフォルトの名無しさん
NGNG●騙された・裏切られた・弄ばれた・逃げられた・捨てられた・
相手に誠意が無い・異性問題・家庭内暴力・不倫疑惑解明・人間関係・金銭トラブル★
● http://www.blacklist.jp/i 【ファイルにコピーして開いて下さい】
別離工作・情報収集・トラブル対策・ボディガ―ド・等々!
●真剣にお悩みの方、安心してご相談下さい。解決へ導きます★
□■各種データ・電話番号調査・住民票・戸籍謄本など調査■□
ジャンプしない場合にはファイルにURLをコピーして開いて下さい★☆★
● http://www.blacklist.jp/i ●別れさせ屋・特殊工作・調査全般
● http://www.blacklist.jp/ ●復讐代行・人生相談・駆け込み寺
--------------------------
リンク⇒ http://okudaira.co.jp 殺人事件簿!!!●●●
●リンク広告主大募集・詳しくは復讐屋まで!!!
0540470
NGNGこれかな
0541526
NGNGpop upが出ます。
cuiで入出力をやりたいんですが...。
0542デフォルトの名無しさん
NGNG他の言語つかえ。
0543デフォルトの名無しさん
NGNG0545デフォルトの名無しさん
NGNGEXEになってたら行もなにもあったもんじゃないだろ?
■ このスレッドは過去ログ倉庫に格納されています