したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

VBでつくられた2chブラウザ

2011 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/25(金) 22:20:28 ID:INERpPZw
いままで
Array(0,0)="1"
Array(0,1)="a"
Array(1,0)="2"
Array(1,1)="b"
と配列で扱っていたものをデータセット内のテーブルとして扱えば実に扱いやすい。
ID 値
1  a
2  b
↑を並び替えるメソッドも用意されているからクイックソートやバブルソートなどのアルゴリズムを書かなくとも並び替えができてしまう。
VB6.0も好きでVB6.0の方が優れている点もかなり多いのだががこういったことを見てしまうと.NETに移行せざるを得ないのである。

2021 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/25(金) 22:29:41 ID:INERpPZw
メモリの中にテーブルを作成するコードを掲載しておく。
Dim Dt As New DataTable("Creature")
Dt.Columns.Add("ID")
Dt.Columns.Add("Name")
Dim NewRow As DataRow = Dt.NewRow
NewRow("ID") = 1
NewRow("Name") = "みるきーぱい"
Dt.Rows.Add(NewRow)
Dim NewRow2 As DataRow = Dt.NewRow
NewRow2("ID") = 2
NewRow2("Name") = "スーチーパイ"
Dt.Rows.Add(NewRow2)
'データセット内の値の変更
'Dt.Rows(0)("Name") = "みるきーぱい2"
Dim Ds As New DataSet
Ds.Tables.Add(Dt)
DataGrid1.DataSource = Ds.Tables(0) 'またはDt 、 テーブルがひとつだけのときはデータセットを使わないでデータテーブルDtでよい
DataGrid1.DataBind()
DataGrid1.Visible = True

2031 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/25(金) 22:47:53 ID:INERpPZw
データベースを設計する場合にフィールド(列)に型を指定するとおり、メモリ内テーブルにも型を指定する。
Dt.Columns.Add("ID", Type.GetType("System.Int64"))'←IDを数値型のうちのひとつに指定
Dt.Columns.Add("Name", Type.GetType("System.String"))'←名前フィールドは文字列型

2041 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/25(金) 23:12:14 ID:INERpPZw
用語について注釈しておく。
フィールド=列=Column=カラム
レコード=行=Row=ロー

ドットdt=ピクセルpx<>ポイントpt
ポイントは画面解像度によって値が変わってしまうので<>

2051 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/26(土) 02:13:23 ID:INERpPZw
[実行結果]
メモリ内テーブルCreature
ID  Name
1  みるきーぱい
2  スーチーパイ
データベースを持っていなくてもデータをデータベース的に扱うことができるようになった。
これで多次元配列の混雑さから開放された。
もちろん、メモリ内のデータはいつか消えるので任意のタイミングで
データベースやXMLやテキストやCSVとして記録しておく。
ちなみにデータセットはApplicationオブジェクトとして常駐させないとページごとにデータセットが作成されパソコンをいたわる意味がなくなる。
あとは排他ロックなども必要なときは使ってデータの整合性を保つこと。

2061 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/26(土) 15:08:39 ID:INERpPZw
ところでプログラミング中に変数の中を見てみたいことがあるが、
その変数が配列だと画面に表示するためには
For i=〜
For j=〜
 出力 多次元配列
Next
Next
みたいに配列を総当りで読み込むプログラムが必要だ。
しかしデータをデータセットで扱っていたなら
デバッグ用データグリッドコントロールのデータソース = データセット
としてデータグリッドにデータをバインド(連結)表示させるだけだ。

207& </b><font color=#FF0000>(wNEVt54c)</font><b>:2005/03/26(土) 16:19:44 ID:I1tMITBc
あのー、モzyいや、なんでもない

208名無しさん:2005/03/26(土) 17:33:00 ID:bMcCgW.w
俺様のチラシの裏

VBコーナー
ttp://www.geocities.co.jp/SilkRoad/4511/vb/vb.htm

2091 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/26(土) 19:22:20 ID:INERpPZw
日本対イランがどうしたって?

2101 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/26(土) 19:42:32 ID:INERpPZw
ところでテーブルと聞くと机や食卓しか想像できない方もいるだろう。
で、HTMLをかじると表を作るためのテーブルタグだとわかってくる。
さらにデータベースと出会うとデータを格納するための行と列を持った表だと知る。
今までの解説でも特にどのテーブルかは言っていないが、文脈からデータベースやHTMLや机を区別できているだろう。

211名無しさん:2005/03/26(土) 21:43:11 ID:I1tMITBc
行、列よりもどこでも配置、机最強説を唱えます。

2121 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/26(土) 22:09:07 ID:INERpPZw
         ,..-──- 、
        /. : : : : : : : : : \
       /.: : : : : : : : : : : : : : ヽ
      ,!::: : : :,-…-…-ミ: : : : :',
   r、r.r {:: : : : :i '⌒'  '⌒'i: : : : :}
  r |_,|_,|_,|{: : : : |  ェェ ェェ|: : : : :}
  |_,|_,|_,|/.{ : : : :|    ,.、 |:: : : :;!    なるほどなるほど・・・
  |_,|_,|_人そ(^i :i   r‐-ニ-| : : :ノ
  | )   ヽノ |イ!  ヽ二゙ イゞ
  |  `".`´  ノ\ ` ー一'丿 \
  人  入_ノ   \___/   /`丶´
/  \_/ \   /~ト、   /    l \
      /    \/l::::|ハ/     l-7 _ヽ
     /i    ⊂ニ''ー-ゝ_`ヽ、    |_厂 _゙:i
    /|    >‐- ̄`    \.  | .r'´  ヽ
    / |    丁二_     7\、|イ _/ ̄ \

2131 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/27(日) 01:20:09 ID:INERpPZw
C++を勉強することにした。ゲームプログラミングの本はほとんどC++(VC++含む)だからだ。
C++はハードウェアを直接制御できるネイティブコードを作成できるのがよい。
これからC++の本を見に行くとしよう・・・

214名無しさん:2005/03/27(日) 11:34:02 ID:QPmiSey6
MozillaのXPCOM使ってマルチプラットフォームに仕上げてくれ

2151 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/27(日) 14:18:42 ID:INERpPZw
ひまができたらな。

2161 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/27(日) 23:38:49 ID:INERpPZw
ではアップローダで良く使われるSessionやApplicationオブジェクトについて
初学者が知らない重要事項を述べておく。
どちらも変数として使う分には同じ構造なのでSessionについての例にする。

2171 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/27(日) 23:43:43 ID:INERpPZw
変数にはスコープ(適用範囲)があるが、Sessionは各クライアント内で有効な変数で、
Applicationはアプリケーション全体で有効である。
Webアプリの場合はあるページから別のページにジャンプするときにジャンプもとのページの情報はジャンプ先に引き継がれない。
したがって、ページどうしで値を送受信するいくつかの方法のうちのひとつがSessionやApplicationである。
Sessionの値はサーバ内にあり、クライアントには送信されないのでパスワードなどを格納しておくときはSessionが良い。
フォームやクエリストリングで渡すのは見られても良いデータである。

2181 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/27(日) 23:54:13 ID:INERpPZw
SessionやApplicationはコレクションであり、つまりその中には複数の要素が格納されている。
コレクションをひとつずつ操作することはできず、セッションを配列として扱いたいときに、
Session("A")(0)=1と値を代入するとエラーになる。
なので、いったん通常の配列を使い、それを丸ごとセッションに代入する。
Dim A(2) as Integer ={1,2,3}
Session("A")=A
これでセッションで配列を扱えるようになったとおもう。
あとはメモリに余裕があるならセッションが消えるまでの時間を長くする。
Session.Timeout=60(分)
これでキミも大物アップロダの管理人だ!

2191 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/07(木) 16:20:59 ID:cJyFducs
2chねらーの一部にはやさしくしてやりたいが、
スレ内でいいことをすると
ダメ2chねらーにも利益が行ってしまうから困ったもんだ。

220名無しさん:2005/04/07(木) 16:31:17 ID:juyXAnEU
自分のサイトに誘導してIP抜けば良いよ

2211 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/09(土) 23:09:36 ID:NeXcfvRM
ふーむ

2221 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/10(日) 00:34:48 ID:NeXcfvRM
記事を読み込むプログラム。
Dim myWeb As New WebClient
Dim b() As Byte
b = myWeb.DownloadData(URL)
Dim bStr As String = Encoding.UTF8.GetString(b)
画像などのファイルの場合はbのバイナリのままでよいが、掲示板の記事は文字列bStrに変換。
これが.NETのWebClientを使ったときのインターネットドキュメント取得方法である。
上記クラスを使うときは名前空間
System.Net
System.Text
をインポートします。
System.Net=WebClientクラス用
System.Text=文字コードのエンコード用

2231 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/10(日) 00:52:36 ID:NeXcfvRM
2chの場合は
Dim bStr As String = Encoding.GetEncoding("Shift-Jis").GetString(b)
シフトジスで文字列を得て、
それからさらにUTF-8にコンバートするのがよい。

2241 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/11(月) 04:10:18 ID:NeXcfvRM
2chに貼られているttp://abc.jpgにアクセスしたとしよう。
さてこれはなんだろうか?見かけは画像ファイルだが、クライアントに画像が送られてこないことの方が多い。
404のファイル無しの場合や503のサーバービジー状態の場合などである。
さらに、どこか画像とは関係ないアダルトページに飛ばされることもある。
これはサーバー側がリダイレクト機能を有効にして別ページにジャンプさせているのである。
正常なjpgだけを保存するには一旦ピクチャボックスに読み込ませてエラーになるかならないかを見てからがよい。
On Error Resume Nextを使ってエラートラップする。
PictureBox image=abc.jpg
Err.Number<>0のときはエラーなのでその.jpgは保存しない。
エラー判別しおわったら
Err.Clear
On Error Go To 0
でエラーが起こったらプログラムが止まる状態にしておいてデバッグしやすいようにしておく。

225名無しさん:2005/04/11(月) 16:45:18 ID:juyXAnEU
1.HTTPヘッダをチェック(Locationヘッダがあったらリダイレクト、404/403/500だったらファイルが存在しない)
2.画像かどうかのチェック
とやるのが良いのでは?

アプロダって直ぐに消えちゃうからP2Pの仕組みを付けてふたばブラウザのような仕組みを付けるべき。
ウェブページにも同様のことが言える。

2261 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/11(月) 23:49:25 ID:NeXcfvRM
>>225オレがすでにつくりおわてるのはそうしてあるが、あまりここではすべてのことは言わないようにしてるだけ。
---------------
おまいらエラーのでる.jpgも偽装ファイルとしてのちゃんとしたファイルかもしれんから
捨てずに保存しておくのがよいかもよ。エラーが出たら
偽造.jpgみたいにリネーム保存するのがよいかもよ。

227名無しさん:2005/04/12(火) 00:18:49 ID:juyXAnEU
極窓との連携とかすれば?
うpろだは*.jpg.htmlのようなものがあるけどあれって*.jpg.htmlをリファラに設定して*.jpgにアクセスすれば一発で見れそうだけど実際どうなんだろうか

2281 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/12(火) 02:31:47 ID:NeXcfvRM
極窓で判別できるファイルなら極窓コンポーネントをプログラムで利用すれば簡単だが、
最近の2chでの偽装は極窓では対応できないのがほとんどだから、結局2chのスレを読まないと正常なファイルに変換できない。

*.jpgのあるディレクトリをアップロダを観察してみてわかた場合は*.jpgに直接アクセスするためのアドレス文字列を作成するのは簡単。

2291 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/12(火) 02:58:14 ID:NeXcfvRM
abc[001-099].jpgというカキコミを自動的に
abc001.jpg

abc099.jpg
という名前に直してアクセスする操作も必要だな。

それに、自動取り込みソフトにはタイマーをつけたほうがいいぞっと。
〜時〜分にあるスレのファイルを取り込むといった時間指定取り込みがすぐにファイルが消える2chでは必要。

現行スレと過去スレを自動的に分ける機能も必須。
過去スレはどんどん別の記憶装置やDVD-Rに移動させちまおう。

まだまだこちらのアイデアはあるが機嫌がいいときに教えてやろう。

230名無しさん:2005/04/12(火) 16:43:55 ID:vcnCr0mk
掲示板システムで思ったがWinnyの掲示板システムを改良してShareの拡散うpっぽく他の人に任せちゃえば良いのではないかと思った。
その人がやめたらその時点で終わりだけど

#すれ違いスマソ

2311 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/12(火) 18:16:44 ID:NeXcfvRM
あえて シェアーと言ってみる

2321 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/13(水) 05:00:17 ID:NeXcfvRM
2chはShift-JisとUnicodeが混ざっているようなので
しばらくは文字コードについてしらべてみる。
スレはスレタイトルから?<>/などのWindowsのフォルダ名に禁止されている文字を消したり置き換えたりしたスレタイトルで保存する場合が多いが、
スレタイトルにまれにUnicodeが使われてるのを数回経験したことがある。
2chをShift-Jisと決めてかかると自作プログラムのどこが間違ってるのかわからないようなエラーに悩まされてうんざりすることは言っておく。

233名無しさん:2005/04/13(水) 17:14:03 ID:UgwMDIk.
内部でunicodeを使うべきでは?
ファイル名のエスケープは大変だろうね。
古いWindowsだとUnicode文字使えないし。
スレはスレ名が被る事もあるからそれも配慮しないと。
#余談だがVB6からも.NETのモジュールが使えるらしい

2341 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/14(木) 04:19:26 ID:B846RqWk
スレは
スレ名+スレIDで保存して重複を避けている。

2351 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/15(金) 11:55:14 ID:B846RqWk
スレタイトル 1234567890
スレタイトル(1234567890)

保存フォルダ名の作成にはいくつかパターンがあるがそこらへんは好みでよい。
上記例はどちらもスレタイトルとIDをいつでも文字列関数を駆使して分離できるのでマル
コンピュータの扱える形式で保存しておけばある程度プログラマの自由でよい。

236名無しさん:2005/04/16(土) 21:23:41 ID:ua06WDaY
クローラー&過剰リロード対策スレ2【新バーボン】
http://qb5.2ch.net/test/read.cgi/operate/1113647422/

厄介ですね

2371 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/16(土) 23:39:03 ID:DbGBN3FQ
機能制限のしすぎは嫌われる原因さ。
ほりえもんあたりが掲示板つくってくんないかな。

2381 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/16(土) 23:54:01 ID:DbGBN3FQ
雑談などはあまりしないリンク先のファイルにしか興味の無いオレたちのほうが
雑談中心の2chねらーよりはるかに2ch読み込み回数は少ないと言うことに気づけなかったみたいだね、2chの中の人は。
記事を丸ごと取り込むのは2chと裁判した一部の企業とかであってその組織は2chを高速で保存しまくるだろうが、
オレたちはリンク先のファイルのダウンロードの遅さに悩まされるから2chにはあまりアクセスしない。

2391 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/17(日) 00:05:28 ID:DbGBN3FQ
たとえば警察の自宅からのアクセスが禁止になったとしよう。
そうしたらその警察は2chにたいして機嫌が悪くなって
2chの悪い部分を見つけて2chを法律的に規制するだろう。
サーバがアクセス過多で止まるのはユーザーもしょうがないなと我慢できるが、
2chにアク禁にされたり規制されるのはサーバにやさしくなったとしてもユーザーからはうらまれる。
そこらへんのユーザー心理を2chはもっとうまく処理しないと2ch関係者はいつか刺されてしまうかもしれない。

240名無しさん:2005/04/17(日) 02:24:48 ID:dd7xbrxU
>>237
ここ?
>>239
>2chはもっとうまく処理しないと
そこでWinnyの掲示板ですよ

2411 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/17(日) 03:43:14 ID:DbGBN3FQ
まあねん

2421 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/17(日) 08:19:39 ID:DbGBN3FQ
このスレの下のほうになぜかVBグッズの商品リンクがあるからみんな将来の自分のために買ってみてくれ。
もれは金持ちになる1年後に買う余裕が出てくるが。

2431 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/17(日) 08:21:21 ID:DbGBN3FQ
『Webプログラマのための正規表現実践のツ...』をライブドアデパートで購入

さまざまなジャンルの選りすぐりアイテムがここに集結。お気に入りの商品がすぐに見つかる!じっくり選んで快適ショッピング。
depart.livedoor.com 『Visual Basicプログラマのため...』をライブドアデパートで購入

さまざまなジャンルの選りすぐりアイテムがここに集結。お気に入りの商品がすぐに見つかる!じっくり選んで快適ショッピング。
depart.livedoor.com

リンクはランダムだから何回かページ更新して見れ

244名無しさん:2005/04/17(日) 14:12:43 ID:eeUqVda2
言語仕様が標準化されてるC#マンセー

ところでmonoってどうよ>1

2451 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/17(日) 19:25:46 ID:DbGBN3FQ
WindowsServerが高いから開発用クライアントはWindowsXP ProfessionalでサーバーにはLinux+monoが使われるのが流行る可能性はある。
が、一生Windows系だけいじって生活していきたいのが多くのマイクロソフト好きの望み。

246名無しさん:2005/04/17(日) 21:07:52 ID:eeUqVda2
オープンソースマンセーな俺には関係ない話ダガヤ

2471 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/17(日) 21:09:37 ID:DbGBN3FQ
特許とかからめるとやはり隠蔽も必要だが技術発展には公開も必要だから悩ましいもんだ。

248名無しさん:2005/04/17(日) 21:21:16 ID:eeUqVda2
そこでインストール時にビルドですよ
ダウソサイズも大きくなるしインストールも時間かかるけど特許侵害防げるし

2491 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/18(月) 02:22:01 ID:DbGBN3FQ
うーむ・・

2501 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/18(月) 06:21:24 ID:DbGBN3FQ
とりあえずDiscとDiskについて調べておくことをおすすめする。

2511 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/19(火) 16:35:50 ID:hn0ZmOIA
まずアプリを立ち上げてから実行するのは
ディスクの空き容量をチェックするプログラムがおススめだ。
容量チェックはSystem.IOでもFile System Objectでもよい。

2521 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/21(木) 09:26:44 ID:94QWdl1w
VB6.0からVB.NETになってめんどうになったのが大文字小文字を分ける部分があることです。
DataTable オブジェクトにアクセスするときは、
条件付きで大文字と小文字が区別されることに注意してください。
たとえば、"mydatatable" という名前の DataTable と "Mydatatable"
という名前のテーブルがある場合は、
この 2 つのーブルのどちらかを検索する文字列は大文字と小文字を区別すると見なされます。
ただし、"mydatatable" という名前は存在するが "Mydatatable" という名前が存在しない場合は、
検索文字列は大文字と小文字を区別しないと見なされます。

2531 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/21(木) 14:44:45 ID:94QWdl1w
メモリ内でテーブルを扱うようになっていろいろ実験しているが、メモリ内テーブルをSQLステートメントのようなコマンドの実験の様子。
下記の例は.NETをやるなら一生役立つので各行の意味を1秒眺めただけで理解できるようでないなら
データベース、SQLの勉強が必要だ。
Dim mySort As String
'mySort = "FileSize,FileName"
mySort = "index"
Dim myFileter As String
'myFileter = "FileSize>=0"
'myFileter = "index>10"
'myFileter = "Flg is null"
myFileter = "FileName Like '%.zip%'"

Dim DataRows As DataRow() = Dt.Select(myFileter, mySort, DataViewRowState.CurrentRows)

2541 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/21(木) 15:11:12 ID:94QWdl1w
最初はDataTableのSelectメソッドによる返り値もテーブルだと便利かなと思っていたが、
しかしADOのレコードセットに相当するものが出力されることを考えるとDataRowコレクションが戻り値なのもうなずける。

2551 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/25(月) 21:59:45 ID:94QWdl1w
DataTableに何行ものレコードがあるとする。
そのデータから必要なデータを抜き出した場合はその抜き出されたデータは
DataRow()またはDataViewどちらに格納しても良い。
DataRowは1行のレコードだが、DataRow()は複数のレコードで動的配列である。
データの更新が行う場合はDataRow()で、表示に特化させたい場合はDataViewが良い。
データテーブルはスキーマ(構造)の作成に何行かの記述が必要なため
配列変数よりも使用に手間がかかるが機能が豊富なので積極的に使っていきたい。

2561 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/05/06(金) 11:43:32 ID:pt6.P2oE
VB.NETのFormオブジェクトをグローバルで宣言しておくとVB6.0のような
開発性でVB.NETを扱えた。
VB6.0の便利さをVB.NETで実現するためには自分なりの工夫をすればよい。

2571 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/05/10(火) 03:34:02 ID:na6kNfbY
あまり働かないでずっと掲示板にいるのが神だとは悲しいものだ。

2581 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/05/18(水) 00:13:58 ID:T8FibFIw
クライアントアプリにもSQL Serverを採用する時代が来たようだ。

259名無しさん:2005/05/18(水) 01:59:02 ID:StC70F4g
まぢですか?
庶民はAccess付属のMSDEでいいでしょ

2601 ◆ExGQrDul2E:2005/05/23(月) 21:55:19 ID:T8FibFIw
2chで神になろうとしなければMSDEでもよいが。

2611 ◆ExGQrDul2E:2005/05/24(火) 00:14:19 ID:T8FibFIw
2chで必要なのは何日間もファイルが流れないで多量アクセスにも余裕で答えられるアップロダであり、
Webサーバ+MSDEだと5人までしか同時アクセスできん。

2621 ◆ExGQrDul2E:2005/05/24(火) 00:22:47 ID:T8FibFIw
庶民のクライアントアプリも同時アクセス5だと
インターネットから自動的にファイルや情報を集めるアプリだとすると
そのアプリはほとんどの情報をスルーしてしまうことになり、自動的にお宝を集めるアプリを目指してるキミにはものたりたりないはずだ。

263名無しさん:2005/05/25(水) 09:05:39 ID:4Z1r0KjE
> MSDEだと5人までしか同時アクセスできん。
100でもいくつでもアクセスできるよ
しょうもない記事を鵜呑みにしてないで自分で試してから書け

それにクライアント側での最近の流行はユーザ側でSQL鯖(含むMSDE)を建てないで済むSQLiteだよ
これはDLL配布だけで済むし基本的なSQL文は解釈してくれるし言うことない
身近なところではRSSリーダーや2chブラウザに組み込んで使用される実例が増えている

勉強不足だ
しっかり汁

2641 ◆ExGQrDul2E:2005/05/27(金) 19:30:42 ID:rY7x7oOg
( ^▽^)このスレおもしろーい

2651 ◆ExGQrDul2E:2005/07/12(火) 22:45:14 ID:ihzvuwJE
日本にお金持ちが現れて2chのような掲示板をつくり、そこは2chよりもユーザ思いのシステムであろうと予測される。
数十年後の予言である。

2661 ◆ExGQrDul2E:2005/07/19(火) 21:55:13 ID:y8dbjjbM
ホントこのモナジラBBSはくそスレばっかだな

2671 ◆ExGQrDul2E:2005/10/13(木) 02:38:24 ID:GRrXdLqk
さて、ネットにあるテキストドキュメントをダウンロードしてディスクに保存するプログラムを作ったので紹介する。
まずは名前空間のインポートを行う。
Imports System.Net
Imports System.Text
Imports System.IO
---------------
サーバへの送受信を行うクラスを使用する。
Dim WC As New WebClient
このクラスは先ほどインポートしたSystem.Netに含まれているものだ。
---------------
そしてアドレス文字列を準備する。
Dim UStr As String = "とりこみ対象ページのアドレス"
たとえばhttp://www.abcd.net/efg.htmlなど。
-----------------------------------------
ネットドキュメントをバイナリデータとして読み込む。
Dim DownLoadData As Byte() = WC.DownloadData(UStr)
-----------------------------------
今回はEUCコードのページをUTF-8に変換する例を挙げておく。
Dim UTF8Bytes As Byte() = Encoding.Convert(Encoding.GetEncoding("EUC-JP"), Encoding.UTF8, DownLoadData)
(画像ファイルなどはこのコード変換作業は不要だ。WindowsXPではUTF-8のドキュメントが扱いやすいようなのでUTF-8にしてみた。私がフランス語やドイツ語も使うこともあるのであえてShift-JISは見送った。)
----------------
エンコード後のバイナリデータをディスクに書き込むところ。
Dim fs As New FileStream(AppPath & "\DownLoad.html", FileMode.Create)
Dim w As New BinaryWriter(fs)
w.Write(UTF8Bytes)
w.Close()
fs.Close()

268名無しさん:2005/10/13(木) 05:15:15 ID:N4pIWB/U
わーい、1さん、おかえりなさい

2691 ◆ExGQrDul2E:2005/10/13(木) 07:41:32 ID:GRrXdLqk
うむ

2701 ◆ExGQrDul2E:2005/10/13(木) 19:09:37 ID:GRrXdLqk
ちなみにバイト配列をファイルとして保存しないで、
メモリ内に文字列変数としておいておきたい場合は
S = Encoding.UTF8.GetString(UTF8Bytes)
みたいにGetStringメソッドを使えばよい。

2711 ◆ExGQrDul2E:2005/10/14(金) 08:07:08 ID:wkvnVpxM
ネットドキュメントで取得すべきは
ズバリ競馬データである。
競馬で生活していくためには過去のレース結果を収集して分析しなければならない。

2721 ◆ExGQrDul2E:2005/10/15(土) 06:58:58 ID:wkvnVpxM
今はパソコンで馬券を買えるので
JRAホームページで無料会員に入ること。
土日は自宅で競馬をすればよい。

2731 ◆ExGQrDul2E:2005/10/15(土) 15:54:59 ID:FNbh/Qr2
競馬データを解析するプログラムを何千行も書いた。
そしてバグがありうまくうごかない。ノイローゼになるほど探したがどこが悪いのか見つからない。
泣く泣く0行目から新規に書くことにした。つらすぎる・・・・

プログラムのデバッグはVB.NETよりVB6.0のほうが優れているというのが体験的に感じられた。

2741 ◆ExGQrDul2E:2005/10/15(土) 16:28:55 ID:FNbh/Qr2
しかし、今日は競馬で3万勝てたので
プログラムの書き直しも苦にならないほど機嫌がいいのだ。競馬は毎月8回あるから
いつもこれぐらい勝てれば毎月20万ぐらいになる。
だからなんとしてでも競馬ソフトを開発しなければならない。
大事なのは、どの人気番の馬券が来たか、である。
人気番の解析ができるソフトを作れれば高い確率で当たり馬券を買えるのだ。

2751 ◆ExGQrDul2E:2005/10/16(日) 07:14:46 ID:FNbh/Qr2
.NETではメモリ内データベースであるDataTableをよく使うが、
Dt.Columns.Add("abc",GetType(String))
で列を加えて、
Dim Row1 as DataRow = Dt.NewRow
Row1("abc")="あいうえお"
Dt.Rows.Add(Row1)
で行を加える。
列はフィールド、行はレコードともいう。

書き込んだデータをすべて削除するメソッドはClearである。
Dt.Clear()
テーブル構造さえも消去するメソッドはResetである。
Dt.Reset()
先ほど加えた特定の列を削除するメソッドはRemoveである。
Dt.Columns.Remove("abc")

2761 ◆ExGQrDul2E:2005/10/16(日) 08:40:47 ID:FNbh/Qr2
プログラミング自体は簡単だ。
問題はシステム設計、仕様だ。
とくにデータを蓄積する場合はデータベースの設計が悩ましい。
競馬ソフトでは日付ごとに格納するか、馬券の式別ごとに格納するか、それの決定が微妙なのだ。
ハードディスクに余裕があるなら両方採用でもよい。
馬券で儲けることが目的ならまずは式別ごとに格納しよう。
あと1時間半で馬の発走時間になってしまうので私も急ピッチでコーディング中だ。

2771 ◆ExGQrDul2E:2005/10/16(日) 21:58:32 ID:WLy9nzRo
バグでプログラムが動かない件については
VB.NETのバグだとわかった。
インテリセンスinstrrev関数の-1が1になっていたり
dim lng1 as long
do while instr(lng1+,......

loop
では
ループの前にlng1=0と書いておかないとダメなことなど
VB.NET自体に修正すべきところがある。
バグがあったら自分と言語両方を疑おう。

2781 ◆ExGQrDul2E:2005/10/17(月) 07:16:32 ID:WLy9nzRo
テーブルにNull値を代入するにはDBNull.Valueを入れる。
Nullかどうかの検査はIsDBNull関数を使う。

2791 ◆ExGQrDul2E:2005/10/17(月) 20:45:29 ID:kmK7nyDQ
完成図
http://www.interq.or.jp/guitar/lead/up/2005_10_17_keibasoft.png

競馬場に毎日通ってるおじさんたちはこういったデータを手入力しているのだが
競馬データは膨大で一生かかっても入力できるものではない。
しかし私たちプログラミング経験者はボタンをクリックしただけで自動的にデータを集めるソフトを作れてしまうのだ。
私はネットドキュメントをインターネットから取得してそれをバイナリのままあるいは任意の文字コードの文字列に変換する方法を解説した。
それからメモリ内データベースであるデータテーブルの作り方も述べた。
それらを使って競馬データも取得するのだ。
あとはその競馬データを自分なりに解析して競馬でのもうけかたをあみだす。
マーチンゲールに最適な馬券の買い方を見つけるのだ。
たとえばX番人気を掛け金をY倍にしながら買い続ける。など。
とりあえず
ギャンブル マーチンゲール
で検索すればわたしの言っている意味もわかるだろう。そしてお金持ちになれる可能性も沸いてくるだろう。
私との出会いがあなたの人生を良い方向に変えたはずである。

2801 ◆ExGQrDul2E:2005/10/25(火) 20:31:17 ID:yyu0AzNw
最近2ch板リストページのアドレスがiij4uから別のに変わったのはまだ漏れしか知らないみたいだね

281名無しさん:2005/10/25(火) 21:30:54 ID:PwzqRQvE
>>280
かなり前からですよ

2821 ◆ExGQrDul2E:2005/10/29(土) 22:29:37 ID:ajdWMgkE
((((((;゚д゚)))))

2831 ◆ExGQrDul2E:2005/10/29(土) 22:41:33 ID:ajdWMgkE
Dtというメモリ内テーブルが定義されていたとする。
その列(フィールド、カラムともいう)のコレクションを得るにはどうするか?
Dim DC() as DataColumn
のなかにテーブル内の列情報を格納することはできないのだ。
DataColumnCollectionというオブジェクトがありそれに代入する。
Dim DC as DataColumnCollection
DC=Dt.Columns

これで列コレクションをテーブルから独立して扱えるようになった。
そのあとは
dim dc2 as datacolumn
For each dc2 in DC
列名取得
列に定義されているデータタイプ取得
Next

SQL="Create Table メモリ内テーブルと同じ構造定義"
Execute SQL

などのコードを書いてテーブルと同じ構造でSQL Serverにテーブルを自動的につくったりする。
メモリ内テーブル(データテーブル、DataTable)とSQL Serverの両方でテーブル作成するのは大変なので
これでデータテーブルのみ設計すればSQL Serverではわざわざ列を手動で作る必要は無くなった。

2841 ◆ExGQrDul2E:2005/10/29(土) 23:09:18 ID:ajdWMgkE
こちらはすでに作り終わってるのでもうちょっと紹介してみると
カラムをFor EachでまわしてDC.DataType.ToStringの戻り値がSystem.Int32だったら
SQL=SQL & "int"
などとしてSQL文に列定義をどんどん追加していけば最後にはDataTableと同じ構造をくれるようなSQL文ができあがるので
それを実行すればSQL ServerにDataTableと設計が同じなテーブルが作成される。

2851 ◆ExGQrDul2E:2005/10/29(土) 23:14:57 ID:ajdWMgkE
日本のギャンブルでは払戻最高額は2億円までと決められているとのことで、
配当のデータ型はint型 -2^31 (-2,147,483,648) から 2^31 - 1 (2,147,483,647) までの整数
で扱うことにした。
ナイチンゲールの法則の計算などはbigintやそれ以上の
万億兆京がいじょじょうこうかんせいさいごくごうがしゃあそうぎなゆた
という大きな数が扱えるデータ型にすること。

2861 ◆ExGQrDul2E:2005/10/30(日) 07:39:32 ID:ajdWMgkE
さてメモリ内データテーブルをハードディスクのSQL Serverに保存するところをやっているわけであるが、
ADO.NETでは
レコードセット.EOFに相当するものはデータリーダー.HasRow
である。
HasRowがTrueかFalseかによってSQL文は
InsertにするかUpdateにするかを決める。

2871 ◆ExGQrDul2E:2005/10/30(日) 11:38:42 ID:ajdWMgkE
データベースをいじるときは
Where文を書き忘れないこと。書き忘れるとデータベース全部が削除されたり上書きされたりしてしまう。

2881 ◆ExGQrDul2E:2005/10/30(日) 19:56:09 ID:2lbTmlQA
競馬データには
'95インターナショナルジョッキーズ
というクオーテーションを含んだ文字列がありこの'はSQL文では予約記号なので
SQL文で扱える形にエスケープさせること。

2891 ◆ExGQrDul2E:2005/10/30(日) 20:10:41 ID:2lbTmlQA
SQLエスケープ
「'」→「''」
「\ 」→「\ \ 」

2901 ◆ExGQrDul2E:2005/10/30(日) 21:16:46 ID:2lbTmlQA
\0 ASCII 0 (NUL)
\n 改行文字
\t タブ文字
\r リターン文字
\b バックスペース文字
\z ASCII 26 (Control-Z)。
\' シングルクォート( ' )
\" ダブルクォート( " )
\\ バックスラッシュ( \ )文字
\% % 文字
\_ _ 文字

2911 ◆ExGQrDul2E:2005/11/01(火) 07:56:40 ID:2lbTmlQA
前回はDataTableのテーブル構造をSQL Serverに自動作成するプログラムを書いた。
次はSQL Serverのテーブル構造をDataTableなどに自動作成するために必要なスキーマの取得をしてみる。
Dim CS As String = "Data Source=(local);Initial Catalog=Keiba;User ID=kimagure;Password=kimagure"
Dim conn As New SqlConnection(CS)
Dim SQL As String
SQL = "Select * From Race Where ID=20000105100000"
Dim cmd As SqlCommand = New SqlCommand(SQL, conn)
conn.Open()
Dim DR As SqlDataReader = cmd.ExecuteReader
DR.Read()
Dim schemaTable As DataTable = DR.GetSchemaTable()
Dim myRow As DataRow
Dim myCol As DataColumn
SS = ""
For Each myRow In schemaTable.Rows
For Each myCol In schemaTable.Columns
SS = SS & myCol.ColumnName & " = " & myRow(myCol).ToString() & CL
Next
Next
DF_.RTB1.Text = SS : DF_.Show()
LnanComp2:
DR.Close()
conn.Close()
LandComp:
Button1.Enabled = True
App.DoEvents()

2921 ◆ExGQrDul2E:2005/11/01(火) 07:58:53 ID:2lbTmlQA
このプログラムではSQL ServerがWindows認証になっていないのでセキュリティをアップさせる必要があるような大事なことはWindows認証でSQL Serverを扱うこと。

2931 ◆ExGQrDul2E:2005/11/01(火) 08:01:39 ID:2lbTmlQA
上記プログラムでschemaTableがどのような構造になっているかはデータグリッドに表示させるとわかりやすいだろう。
DataGrid1.DataSource = schemaTable

2941 ◆ExGQrDul2E:2005/11/01(火) 08:07:03 ID:2lbTmlQA
schemaTableの戻り値で特に大事なのは
ColumnName
ColumnSize
DataType
で、これらを取得すればSQL Serverのテーブルと構造が同じなDataTableを自動作成できる。

今回と前回のことを知っていれば、
DataTableあるいはSQL Serverどちらか一方だけのテーブル設計をすればよくなる。
両方とも手動で設計していたのではテーブル設計の仕様変更のたびに両方とも修正しなければならなくメンテナンス製に乏しくなる。

2951 ◆ExGQrDul2E:2005/11/01(火) 11:05:12 ID:2lbTmlQA
ユニーク列(主キー)があるばあいはそのこともスキーマ作成時に付加すること。

2961 ◆ExGQrDul2E:2005/11/09(水) 12:15:32 ID:oxEmRE/U
データビューのRowFilterやSortには私たちの目的を達成できるほどの柔軟性がないので
結局はデータテーブルから自前でデータを加工することになりその結果をまた別のデータテーブルに保存するであろうから、
そのときもフィールド名を自動的に取得してくれる今回のサンプルは役立つはずだ。

2971 ◆ExGQrDul2E:2005/11/11(金) 02:11:57 ID:oxEmRE/U
.NETになってコーディングが厳密になったとささやかれているとはいえ、
デフォルトプロパティに甘えることは許されている。
レコードのフィールドを厳密に指定するなら
Row.Item(indexまたはフィールド名)
だが、Itemというプロパティがデフォルトなため省略してしまって
Row.(indexまたはフィールド名)
と書いてもよい。
そのほか大文字小文字を区別しないですむ仕様などは私の好みであるしグラマーの労力軽減に役立っている。
Windows携帯がついに発売されるとのことで、VB6.0、VB.NETを信じてきたグラマーに希望の光が見えてきた感じである。

2981 ◆ExGQrDul2E:2005/11/24(木) 20:31:41 ID:FyL9DViM
問題
vbCrLf,vbLf,vbCrの改行コードの混じったテキストの改行コードをすべてvbCrLfにするコードを書きなさい。

299名無しさん:2005/11/24(木) 21:04:43 ID:Fl3fPTYk
なんでまじっちゃったの?

3001 ◆ExGQrDul2E:2005/11/26(土) 03:24:12 ID:oxEmRE/U
(?_?)

3011 ◆ExGQrDul2E:2005/11/26(土) 03:32:46 ID:oxEmRE/U
データグリッドコントロールでもっともいじりたいのは列の幅ではないだろうか。
整数値の列は幅が狭いだろうし、String列は幅の広さが必要だ。
デフォルトではすべての幅が均等に表示されてしまう。

DataGridの任意の列の幅を変更するコードを作ってみた。
DataGridには
dim Dt2 as new DataTable("Dt2")
とDt2という名前のデータテーブルを作ってそれを表示する。
そしてDt2にはColumns.AddやDt2.Rows.Add(DataRow)で列と行が追加してある。
今回存在する列名はo、oSの2つであるとする。
参考:Dt2.Columns.Add("o",gettype(Single))
↑oというなまえの列をSingle数値型で追加
Dt2の列を定義したらデータグリッドの列幅も操作できる。

3021 ◆ExGQrDul2E:2005/11/26(土) 03:33:22 ID:oxEmRE/U
Dim ts As New DataGridTableStyle
ts.MappingName = Dt2.TableName
Dim DTS As DataGridTableStyle
Dim StyleName As String
Dim StyleExist As Short = 0
For Each DTS In DataGrid1.TableStyles
StyleName = DTS.MappingName
If StyleName = "Dt2" Then StyleExist = 1
Next
If StyleExist = 0 Then
DataGrid1.TableStyles.Add(ts)
End If

'Try
'DataGrid1.TableStyles.Add(ts)
'Catch
'End Try

DataGrid1.DataSource = Dt2
DataGrid1.TableStyles(Dt2.TableName).GridColumnStyles("o").Width = 35
DataGrid1.TableStyles(Dt2.TableName).GridColumnStyles("oS").Width = 35

3031 ◆ExGQrDul2E:2005/11/26(土) 03:38:24 ID:oxEmRE/U
最後の行に
.Width = 35
があるが、単にWidthを操作するにもVB6.0とは違って事前準備が必要なのだった。
しかしこれでDataGridの幅を好きに設定できてめでたしである。

3041 ◆ExGQrDul2E:2005/11/26(土) 04:36:18 ID:oxEmRE/U
テキストボックスでリターンキーを押したときに
ボタンを自動押下する例
If e.KeyCode = Keys.Return Then
Button12_Click(sender, e)
End If

3051 ◆ExGQrDul2E:2005/11/26(土) 06:43:28 ID:oxEmRE/U
テキストボックス内の文字列の一番右にカーソルがあるときに→キーを押すと次のテキストボックスにフォーカスが移動する例
Dim T As TextBox
T = CType(sender, TextBox)
If e.KeyCode = Keys.Right Then
If T.SelectionStart = T.Text.Length Then
o2.Focus()
End If
End If

3061 ◆ExGQrDul2E:2006/05/23(火) 04:52:22 ID:MziW6YcM
ASP.NET2.0からはIISがなくても開発できるようになり、すなわちWindowsXP HomeEditionでも開発できる。
ASPをつかったブラウザタイプの2chブラウザというのはまだないが、これからぼちぼちと出始めてもよいころではある。

307名無しさん:2006/05/25(木) 00:39:21 ID:X78H8gwM
明けましておめでとうございます、1さん

3081 ◆ExGQrDul2E:2006/05/26(金) 21:22:21 ID:MziW6YcM
ほぉ自分以外にこのスレに人がいるのかね。
---------------------------------------------------
さて今はVisual Studio 2005の時代になった。
マイクロソフト→開発ツール というホームページサーフィン(ネットサーフィン)
とうかただ単にホームページを見るということだが、それをすると
.NET2.0を開発するツールで無料のが見つかる。
Visual Web Developer 2005 Express Editionは無料で役立つので良いとしよう。
しかしSQL Server 2005 Express Editionは開発環境でしか動作しないので上位エディションのSQL Server 2000や2005を持っているのなら最初からそれを使ったほうがあとでデータベースを移行しなくてすむ。
このスレではデータベースを丸ごとコピーするコードを>>291で紹介したのでデータベースの移行などは恐れる必要はないし後でやってもいいことである。
ニュースなのはマイクロソフトが無料でつかえる開発環境を打ち出してきたことである。
マイクロソフトの配布してる無料ツールを使うユーザーが増えると言うことはWindowsやWindowsサーバーのユーザーが増えることにつながるのでそこがねらいだろう。

3091 ◆ExGQrDul2E:2006/05/27(土) 00:04:35 ID:MziW6YcM
.aspxファイルに名前空間をインポートする方法
<%@ Import namespace="value" %>
------------------
(特注)
2chブラウザに関係ないような書き込みは実はすべて2chブラウザを作るための準備である。

3101 ◆ExGQrDul2E:2006/05/27(土) 00:28:49 ID:MziW6YcM
では環境も.NET1.1から.NET2.0に変わったことだし基本的なことからまたはじめたい。
.NET2.0では便利なコントロールが増えたり従来のコントロールに新たなプロパティやメソッドが加わったが基本的なことは今までどおりのコードで良い。
まずはデータベースのなかのひとつのテーブルをホームページに表示するプログラムをやってみたい。

メモ帳でもVisual Web Developer 2005 ExpressでもなんでもよいのでUTF-8でコードを書いていく。
ページの先頭は次のように書く。今書いているファイルは.aspxファイルである。
<%@ Page Language="VB" %>
<%@ Import namespace="System.Data.SqlClient" %>

System.Data.SqlClientはデータベースを利用するための名前空間だ。
ページロードイベントでもボタンクリックイベントでもどこでもいいので次のコードを書く。

Dim ConnectionString As String = "Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI;"
Dim SQL As String = "Select * From Products"
Dim conn As New SqlConnection(ConnectionString)
Dim cmd As New SqlCommand(SQL, conn)
conn.Open()
Dim DR As SqlDataReader = cmd.ExecuteReader
GridView1.DataSource = DR
GridView1.DataBind()
DR.Close()
conn.Close()

3111 ◆ExGQrDul2E:2006/05/27(土) 00:36:54 ID:MziW6YcM
ConnectionStringはデータベースへの接続文字列である。
Integrated Security=SSPIはデータベースへのログインをWindows認証で行うと言う意味だ。
接続文字列を正しく書いて、さらにデータベース側でASP.NETユーザーにアクセス権限を持たせれば無事接続できる。
接続さえしてしまえばあとは好きなようにデータを取ってこれる。
うまくホームページにテーブルのデータがずらずらと表示された。

3121 ◆ExGQrDul2E:2006/05/27(土) 00:51:31 ID:MziW6YcM
無料版のSQL Server とはMSDEの後継版ことだった!

従来のSQL Server 2000 に付属していた MSDE が Express Edition として新しくなりました。MSDE には GUI ベースの管理ツールは付属していませんでしたが、Express Edition にはサービスの起動を管理できる SQL Computer Manager が追加され、更に SQL Server 2000 のクエリアナライザとほぼ同等の機能を持つ SQL Server 2005 Express Manager が使用できるようになりました。SQL Server 2005 Express Manager は無償でダウンロードすることができます。これにより、Express Edition を利用したデータベース アプリケーションの開発がより簡単になります。

3131 ◆ExGQrDul2E:2006/05/27(土) 00:57:59 ID:MziW6YcM
Visual Web Developer 2005 Express Editionという無料のサーバーサイドアプリ開発ツールをインストールすると
SQL Server 2005 Express Editionも同時にインストールされる。
そのあとさらにマイクロソフトのページに行き
Microsoft SQL Server 2005 Express Edition with Advanced Services
をインスコする。
そうするとWindowsのスタート→プログラムメニューに
SQL Server 2005 Management Studio Express
のショートカットができる。これはなにかというと、上位SQL ServerのEnterprise Manegerのようなものでグラフィカルにデータベースを操作できるのだ。

3141 ◆ExGQrDul2E:2006/05/27(土) 01:11:54 ID:MziW6YcM
これからやる実験は、SQL Server ExpressでApp_Dataに作ったデータベースを
SQL Server 2005 Management Studio Expressでつくった別のデータベースにコピーする実験である。

Visual Web Developer 2005 Express Editionでプロジェクトを開始する。
するとソリューションエクスプローラの一番上の項目はフォルダ名になっているが、
Visual Web Developer 2005 Express Editionではこのフォルダをプロジェクトと呼んでしまってよい。
ソリューションエクスプローラのプロジェクトを右クリックしてASP.NETフォルダの追加→App_Data
を行う。次にApp_Dataを右クリックして新しい項目の追加を選択する。
するとSQL Serverを追加できる。
これこそがまさにApp_Dataの中にできたSQL Serverデータベースである。
このデータベースは開発環境でしか動かないのでこれから公開用のデータベースにデータを移行しようというのが今回の作業である。
もちろん学習用としてプロジェクトを作ったなら移行しなくてよい。
肝心なのは.NET2.0でSQL Serverをいじってみれる環境が誰でも手に入るのが今という時期なのである。
Visual Web Developer 2005 Express EditionでASP.NETをやれば
Windows XP Home EditionでもASP.NETファイルを動作させることができる。
いままではXPプロフェッショナルエディションでしかASP.NET開発できなかったがこれからは
ASP.NETに興味をもったばかりの人もすぐにASP.NETに取り掛かれてしまうのだ。

3151 ◆ExGQrDul2E:2006/05/27(土) 01:15:25 ID:MziW6YcM
ちなみにVisual Basic の無料版もあるのでそれもチェックしてみよう。

3161 ◆ExGQrDul2E:2006/05/27(土) 01:45:45 ID:MziW6YcM
SQL Serverのデータベースファイルは.mdfである。

App_Dataにある.mdfをローカルデータベース、
SQL Serverサービスにある.mdfをサーバーデータベースと呼ぶことにする。

App_Dataにあるデータベースはまさにローカルで開発する時用のデータなのである。

3171 ◆ExGQrDul2E:2006/05/27(土) 02:13:49 ID:MziW6YcM
いいかね?データベースのデータをWEBページに表示できるかどうかでプログラミングをつづけるかやめるかが決まると思ってよい。
データベースを読み込めないときっとあなたは泣きたくなるだろう。
これから書くことは私が一文字ずつ書いたものでありどの本にも載ってないのでぜひ読んでおくべきだ。

あなたはVisual Web Developer 2005 Express EditionでApp_Dataの中にSQL Serverを作ったとする。
さらにそのデータベースに1個テーブルを作り、テーブルにもフィールドを1個つくり、そこまでしたらいったん保存ボタンを押して保存しそのテーブルデザイン画面を閉じ、
Visual Web Developer 2005 Express Editionの右にあるデータベースエクスプローラの中にそのテーブルがあり、
テーブルを右クリックしてテーブルデータの表示をしてからいくつか値を入力する。
これでApp_Dataデータベース作成→テーブル作成→データ入力をしたことになり、
実験用データベースができあがった。先ほど入力したデータがホームページに表示されれば実験成功というわけである。

3181 ◆ExGQrDul2E:2006/05/27(土) 02:32:33 ID:MziW6YcM
App_Dataのデータベースを表示するのは簡単だ。
Webページを新規につくり、データベースエクスプローラを開き、データベースの中の方の階層にあるテーブルをWEBページにドラッグするだけだ。

テーブルをドラッグするだけというのが画期的である。
今回は凝ったことをやりたいのでもっと汎用性のあるデータベース操作をしてみる。

3191 ◆ExGQrDul2E:2006/05/27(土) 03:59:13 ID:MziW6YcM
まずデータベースエクスプローラからデータベースを右クリックしてデタッチというのを実行する。
これで現在のプロジェクトからデータベースは隔離された。
次にSQL Server 2005 Management Studio Expressを立ち上げてデータベースを右クリック→アタッチ→追加ボタンを押してしばらく待つ、を行う。
アタッチするファイルはプロジェクトフォルダのなかのApp_Dataフォルダの中の.mdfデータベースファイルである。
こうしてアタッチするとこの.mdfはローカルではなくサーバーで動作している状態である。
SQL Serverにはローカルデータベースとサーバーデータベースがあるが、
将来Webページを公開するときはサーバーにデータがないとだめなわけでそれでローカルからサーバーに移行する日がいつかくる。
SQL Serverのローカルデータベースは一生自分しか見ることはできない。
なぜかというと、SQL Server 2005 Express Editionは無料版ゆえの制限がありデータをネットで公開できないように制限がかかっているからだ。
SQL Server 2005 Management Studio Expressで先ほどアタッチしたデータベースもローカルデータベースをアタッチしたのだから公開はできないが、
将来公開するときにそなえてサーバー側っぽい挙動をさせてみた。

3201 ◆ExGQrDul2E:2006/05/27(土) 04:36:26 ID:MziW6YcM
アタッチしたデータベースの表示

Dim ConnectionString As String = "Data Source=.\sqlexpress;Initial Catalog=DATABASE.MDF;Integrated Security=SSPI;"
Dim SQL As String = "Select * From aaa"
Dim conn As New SqlConnection(ConnectionString)
Dim cmd As New SqlCommand(SQL, conn)
conn.Open()
Dim DR As SqlDataReader = cmd.ExecuteReader
GridView2.DataSource = DR
GridView2.DataBind()
DR.Close()
conn.Close()

アタッチすると通常のSQL Serverのように扱える。

3211 ◆ExGQrDul2E:2006/05/27(土) 10:39:29 ID:MziW6YcM
VBプログラマ質問スレ(6.0以前) Part39
http://pc5.2ch.net/test/read.cgi/tech/1099737063/l50

910 名前: デフォルトの名無しさん [sage] 投稿日: 04/12/11 10:03:35
ADOである名前のテーブルが存在するかどうかはどうやってしらべるのでしょう?
SQL="Table Exist('NorthWind')"
conn.execute(SQL)
みたいなものだと予想してます
911 名前: デフォルトの名無しさん [sage] 投稿日: 04/12/11 11:50:22
>910
え?
912 名前: デフォルトの名無しさん [sage] 投稿日: 04/12/11 11:54:37
>>910
ADOXを使うとか。
ADODB.ConnectionオブジェクトのOpenSchemaメソッドを使うとか。
新着レス 2004/12/11(土) 12:16
913 名前: デフォルトの名無しさん [sage] 投稿日: 04/12/11 12:16:10
自己解決してたけどどーも


Const adSchemaTables = 20
rc = conn.openschema(adSchemaTables)
で、データベース内のいくつものテーブル名はコレクションとしてとりだされるから
rc("TABLE_NAME").valueをさらにFor EachとかDo whileで1個ずつとりだせた。


do until rc.eof
S+=rc("table_name").value
rc.movenext
loop

debug.print S

914 名前: デフォルトの名無しさん [sage] 投稿日: 04/12/11 12:56:56
>913
さすが

3221 ◆ExGQrDul2E:2006/05/27(土) 12:36:47 ID:MziW6YcM
データベースの中にどんなテーブルがあるか列挙したい場合がある。

dim Dt as new DataTable("Dt")
'Const adSchemaTables = 20
Dim ConnectionString As String = "Data Source=.\sqlexpress;Initial Catalog=MyDataBase;Integrated Security=SSPI;"
Dim conn As New SqlConnection(ConnectionString)

'Dt = conn.getschema(adSchemaTables)
conn.open
Dt = conn.GetSchema("Tables")
gridview3.DataSource=dt
gridview3.DataBind
conn.Close()

接続文字列にあるとおりMyDataBaseというデータベースのテーブル一覧を取得する例である。

次は各テーブルの構造を取得するコードを作ってみる。

3231 ◆ExGQrDul2E:2006/05/27(土) 13:22:15 ID:MziW6YcM
テーブルの構造取得は>>291に書いた。

ハードディスクの中身をしるにはフォルダの階層構造とフォルダの中のファイルを取得するわけであるが、
それと同じ要領でデータベースの構造とデータを取得したわけである。
これができれば、データベースの移動、コピー、バックアップができる。
したがって、SQL Server 2005 Express EditionからSQL Server 2000などへデータを移行できるようになった。

3241 ◆ExGQrDul2E:2006/05/27(土) 18:43:07 ID:MziW6YcM
.NET2.0でテーブル構造取得プログラムを作ってみた。
Dim ConnectionString As String = "Data Source=.\sqlexpress;Initial Catalog=DATABASE.MDF;Integrated Security=SSPI;"
Dim SQL As String = "Select Top 1 * From ESODATA"
Dim conn As New SqlConnection(ConnectionString)
Dim cmd As New SqlCommand(SQL, conn)
conn.Open()
Dim DR As SqlDataReader = cmd.ExecuteReader
DR.Read()
Dim schemaTable As DataTable = DR.GetSchemaTable()
Dim myRow As DataRow
Dim myCol As DataColumn
Dim SS As String = ""
For Each myRow In schemaTable.Rows
For Each myCol In schemaTable.Columns
SS = SS & myCol.ColumnName & " = " & myRow(myCol).ToString() & "<br>"
Next
SS += "----------------------------------------------" & "<br>"
Next
DR.Close()
conn.Close()
Label2.Text = SS

3251 ◆ExGQrDul2E:2006/05/27(土) 18:43:51 ID:MziW6YcM
↑を実行するとホームページにテー部構造が次のように表示される。
ColumnName = 日付
ColumnOrdinal = 0
ColumnSize = 8
NumericPrecision = 23
NumericScale = 3
IsUnique = False
IsKey =
BaseServerName =
BaseCatalogName =
BaseColumnName = 日付
BaseSchemaName =
BaseTableName =
DataType = System.DateTime
AllowDBNull = True
ProviderType = 4
IsAliased =
IsExpression =
IsIdentity = False
IsAutoIncrement = False
IsRowVersion = False
IsHidden =
IsLong = False
IsReadOnly = False
ProviderSpecificDataType = System.Data.SqlTypes.SqlDateTime
DataTypeName = datetime
XmlSchemaCollectionDatabase =
XmlSchemaCollectionOwningSchema =
XmlSchemaCollectionName =
UdtAssemblyQualifiedName =
NonVersionedProviderType = 4

3261 ◆ExGQrDul2E:2006/05/27(土) 18:46:54 ID:MziW6YcM
同じテーブルを自動的に作成するSQLを作りたい場合は上記情報をSQL文に挿入すればよい。

あるデータベースから別のデータベースにデータを移動させたい場合に移動ユーティリティが存在しない場合は
今回のように自分でデータ移動プログラムを書くということである。

3271 ◆ExGQrDul2E:2006/05/27(土) 20:39:42 ID:MziW6YcM
そしてこれがテーブルをつくるためのSQLである。

Dim ConnectionString As String = "Data Source=.\sqlexpress;Initial Catalog=DATABASE.MDF;Integrated Security=SSPI;"
TableName = ""
Dim SQL As String = "Create Table TABLU (Field1 datetime,Field2 nvarchar(50))" 'datetime型を作るときにはサイズを指定しない
Dim conn As New SqlConnection(ConnectionString)
Dim cmd As New SqlCommand(SQL, conn)
conn.Open()
Dim num As Integer = cmd.ExecuteNonQuery
conn.Close()

実行してからデータベースをみてみるとテーブルとフィールドがきちんと作成できたのが確認できる。

3281 ◆ExGQrDul2E:2006/05/27(土) 20:48:33 ID:MziW6YcM
これぐらいできるようになれば
どのメーカーのデータベースをつかってもよい。
上記プログラムでいつでも別のデータベースにデータを移動できるからだ。

3291 ◆ExGQrDul2E:2006/05/28(日) 00:51:04 ID:MziW6YcM
データベース構造のコピー実験

Dim TableName As String
TableName = "ACCESS"

Dim ConnectionString As String = "Data Source=.\sqlexpress;Initial Catalog=DATABASE.MDF;Integrated Security=SSPI;"
Dim SQL As String = "Select Top 1 * From " & TableName
Dim conn As New SqlConnection(ConnectionString)
Dim cmd As New SqlCommand(SQL, conn)
conn.Open()
Dim DR As SqlDataReader = cmd.ExecuteReader
DR.Read()
Dim schemaTable As DataTable = DR.GetSchemaTable()
Dim myRow As DataRow
Dim myCol As DataColumn
Dim SS As String = ""
Dim SQL2 As String
SQL2 = "Create Table " & TableName & " ("
For Each myRow In schemaTable.Rows
Dim c1 As Integer
If Not c1 = 0 Then
SQL2 += ","
End If
Dim DType As String = ""
Dim Size As Integer
For Each myCol In schemaTable.Columns 'AAAAAAAAAAAAAAAAAAAA
'SS = SS & myCol.ColumnName & " = " & myRow(myCol.ColumnName).ToString() & "<br>"

If myCol.ColumnName = "ColumnName" Then
SQL2 += myRow(myCol.ColumnName).ToString
End If

If myCol.ColumnName = "ColumnSize" Then
Size = myRow(myCol.ColumnName)
End If

If myCol.ColumnName = "DataType" Then
Select Case myRow(myCol.ColumnName).ToString
Case "System.String"
DType = "nvarchar"
SQL2 += " " & DType & "(" & Size & ")"
Case "System.Int64"
DType = "bigint"
SQL2 += " " & DType
Case "System.DateTime"

DType = "datetime"
SQL2 += " " & DType
End Select

End If
'サイズ取得のほうがタイプ取得より前なのでここに書くと失敗
'If myCol.ColumnName = "ColumnSize" Then
' If DType = "nvarchar" Then
' SQL2 += "(" & myRow(myCol.ColumnName).ToString & ")"
' Else
' End If
'End If

Next 'AAAAAAAAAAAAAAAAAAAA
SS += "----------------------------------------------" & "<br>"
c1 += 1
Next
SQL2 += ")"

DR.Close()
conn.Close()
Label3.Text = SQL2

Dim ConnectionString2 As String = "Data Source=(local);Initial Catalog=AoM;Integrated Security=SSPI;"
Dim conn2 As New SqlConnection(ConnectionString2)
Dim cmd2 As New SqlCommand(SQL2, conn2)
conn2.Open()
Dim num2 As Integer = cmd2.ExecuteNonQuery
conn2.Close()
'↑ここまでがコピー先データベースのテーブル設計が終わった段階である。つぎはデータのコピーを行う。

3301 ◆ExGQrDul2E:2006/05/28(日) 00:54:11 ID:MziW6YcM
今回はSQL Server Express 2005のテーブルをSQL Server 2000にコピーしてみた。
無事成功。
SQL Serverはバージョンが違うと互換性が乏しく自作のプログラムでデータ移行する必要があったのだ。

3311 ◆ExGQrDul2E:2006/05/28(日) 01:12:03 ID:MziW6YcM
そして、ローカルマシンにしか表示できないApp_Dataデータベースをサーバーに移してネットで公開できるようになったことも意味する。
マイクロソフトはローカルマシンでしか扱えないようにしたり、高いお金を払った製品はネットで扱えるなどの差別化をしているので
こんかいのサンプルを利用すれば最初は安いローカルマシンで開発して、将来サーバー製品を買ったときにデータを移行して外部公開できるのである。

3321 ◆ExGQrDul2E:2006/05/28(日) 01:15:39 ID:MziW6YcM
プログラミングする前に最初からサーバー向けのデータベースを用意しなくても済むというのは
金銭的にも労力的にも大きいはず。データベースコピープログラムが書けるからこその恩恵だ。

3331 ◆ExGQrDul2E:2006/05/28(日) 02:34:51 ID:MziW6YcM
フィールド名に予約語や数字のみの名前をつけたいときは[ ]でくくる。
If myCol.ColumnName = "ColumnName" Then
SQL2 += "[" & myRow(myCol.ColumnName).ToString + "]"
End If

3341 ◆ExGQrDul2E:2006/05/28(日) 04:17:57 ID:MziW6YcM
↑の方ではテーブルの構造をコピーしたので今度はデータをコピーするプログラム。
'データベースA→データリーダーに読み込み→データベースBに書き込み
ConnectionString = "Data Source=.\sqlexpress;Initial Catalog=DATABASE.MDF;Integrated Security=SSPI;"
ConnectionString2 = "Data Source=(local);Initial Catalog=AoM;Integrated Security=SSPI;"
SQL = "Select * From " & TableName
conn = New SqlConnection(ConnectionString)
conn2 = New SqlConnection(ConnectionString2)
cmd = New SqlCommand(SQL, conn)
conn.Open()
DR = cmd.ExecuteReader
DR.Read()
schemaTable = DR.GetSchemaTable()
SS = ""
Dim i As Integer

'For Each myRow In schemaTable.Rows
' SQL2 = "Insert into " & TableName & "("

' For Each myCol In schemaTable.Columns
' 'SS = SS & myCol.ColumnName & " = " & myRow(myCol).ToString() & "<br>"

' Next
' 'SS += "----------------------------------------------" & "<br>"
'Next
Dim SQL2b As String
'While DR.Read 'WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW'いったんリードしてるのでここではリードしない
Do
SQL2 = "Insert into " & TableName & "("
SQL2b = ") Values ("
For i = 0 To DR.FieldCount - 1
If Not i = 0 Then
SQL2 += ","
SQL2b += ","
End If
SQL2 += "[" & DR.GetName(i) & "]"
'文字列は' 'で囲むので列のタイプがわからないといけない。
schemaTable = DR.GetSchemaTable()
For Each myRow In schemaTable.Rows
For Each myCol In schemaTable.Columns
If myCol.ColumnName = "DataType" Then
If myRow(myCol.ColumnName).ToString = "System.DateTime" Or myRow(myCol.ColumnName).ToString = "System.String" Then
If Not IsDBNull(DR(i)) Then
SQL2b += "'" & DR(i) & "'"
Else
SQL2b += "Null"
End If

End If
GoTo LandB
End If
Next
Next
LandB:
' If schemaTable.Rows(DR.GetName(i))("DataType") Then
'SQL2b += schemaTable.Rows(0)("DataType").ToString
Next
'GoTo LandA
SQL2 += SQL2b & ")"
cmd2 = New SqlCommand(SQL2, conn2)
conn2.Open()
num2 = cmd2.ExecuteNonQuery
conn2.Close()
'End While 'WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
Loop While DR.Read
' GridView5.DataSource = DR
' GridView5.DataBind()
LandA:
DR.Close()
conn.Close()
Label3.Text = SQL2

3351 ◆ExGQrDul2E:2006/05/28(日) 04:21:01 ID:MziW6YcM
↑データをコピーするときはSQL のInsertコマンドを使ってみた。
こうしてテーブル構造もデータもコピーできたのであった。

336名無しさん:2006/05/29(月) 04:45:30 ID:x4fpfJRM
めでたし めでたし

3371 ◆ExGQrDul2E:2006/06/03(土) 00:30:00 ID:PfJOdz9g
     _____
   /。    \
  /        \
 / ┏━━━━━┓   コ
 |  ┃ ⊂⊃|⊃|   /
 |  ┃ | \__/| |   ホ
 \┃ \___ / |  /
   \        /

338名無しさん:2006/07/18(火) 17:55:34 ID:AUWg3sMw
http://ime.s2ch.net/log.php

3391 ◆ExGQrDul2E:2006/07/29(土) 02:10:27 ID:SEZ8PBeg
ファイルをゴミ箱に移動させる方法
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/SHFileOperation/

3401 ◆ExGQrDul2E:2006/08/04(金) 02:20:45 ID:SEZ8PBeg
パチンコおもすれーーーー

341名無しさん:2006/08/20(日) 07:24:45 ID:9yx2a7Ek
1って、>>338みたいなの作れる技量あるの?

3421 ◆ExGQrDul2E:2006/08/20(日) 10:46:33 ID:SEZ8PBeg
ノーコメント

3431 ◆ExGQrDul2E:2006/09/06(水) 01:32:00 ID:oJIhamyE
Visual Basic 言語リファレンス
ユーザー定義の日付/時刻書式 (Format 関数)
参照 使用例
すべて折りたたむ すべて展開 言語のフィルタ : すべて 言語のフィルタ : 複数 言語のフィルタ : Visual Basic 言語のフィルタ : C# 言語のフィルタ : C++ 言語のフィルタ : J# 言語のフィルタ : JScript
Visual Basic (宣言)
Visual Basic (使用法)
C#
C++
J#
JScript

ユーザー定義の日付/時刻書式を作成するときに使用できる文字を次の表に示します。以前のバージョンの Visual Basic とは異なり、これらの形式指定文字の大文字と小文字は区別されます。

文字 説明
(:)
時刻の区切り記号。ロケールによっては、時刻の区切り記号を表すのに別の記号が使用されます。時刻の区切り記号は、時刻値を表すときに、時、分、および秒を区切ります。書式指定された出力で、実際に時刻の区切り記号として使用される記号は、システムの LocaleID 値によって決まります。

(/)
日付の区切り記号。ロケールによっては、日付の区切り記号を表すのに別の記号が使用されます。日付の区切り記号は、日付値を表すときに、年月日を区切ります。書式指定された出力で、実際に日付の区切り記号として使用される記号は、ロケールによって決まります。

(%)
後に続く文字には関係なく、次の文字を 1 文字書式指定として読み取る必要があることを示すために使用します。1 文字書式指定をユーザー定義の書式として読むことを示すためにも使用します。詳細については、以下の説明を参照してください。

d
先行するゼロを付けずに日付を表示します (たとえば、1)。ユーザー定義の数値書式でこれが唯一の文字である場合は、%d を使用します。

dd
先行するゼロを付けて日付を表示します (たとえば、01)。

ddd
曜日を短縮形で表示します (たとえば、Sun)。

dddd
曜日をそのまま表示します (たとえば、Sunday)。

M
先行するゼロを付けずに月を表示します (たとえば、1 月は 1)。ユーザー定義の数値書式でこれが唯一の文字である場合は、%M を使用します。

MM
先行するゼロを付けて月を表示します (たとえば、01/12/01)。

MMM
月を短縮形で表示します (たとえば、Jan)。

MMMM
月をそのまま表示します (たとえば、January)。

gg
時代/年号を示す文字列を表示します (たとえば、A.D.)。

h
先行するゼロを付けずに、時を 12 時間制で表示します (たとえば、1:15:15 PM)。ユーザー定義の数値書式でこれが唯一の文字である場合は、%h を使用します。

hh
先行するゼロを付けて、時を 12 時間制で表示します (たとえば、01:15:15 PM)。

H
先行するゼロを付けずに、時を 24 時間制で表示します (たとえば、1:15:15)。ユーザー定義の数値書式でこれが唯一の文字である場合は、%H を使用します。

HH
先行するゼロを付けて、時を 24 時間制で表示します (たとえば、01:15:15)。

m
先行するゼロを付けずに、分を表示します (たとえば、12:1:15)。ユーザー定義の数値書式でこれが唯一の文字である場合は、%m を使用します。

mm
先行するゼロを付けて、分を表示します (たとえば、12:01:15)。

3441 ◆ExGQrDul2E:2006/09/06(水) 01:32:14 ID:oJIhamyE

s
先行するゼロを付けずに、秒を表示します (たとえば、12:15:5)。ユーザー定義の数値書式でこれが唯一の文字である場合は、%s を使用します。

ss
先行するゼロを付けて、秒を表示します (たとえば、12:15:05)。

F
秒の小数部を表示します。たとえば、ff は 100 分の 1 秒を表示し、ffff は 10,000 分の 1 秒を表示します。ユーザー定義の書式では f 記号を 7 つまで使用できます。ユーザー定義の数値書式でこれが唯一の文字である場合は、%f を使用します。

T
12 時間制を使用し、午前は大文字の A、午後 (11:59 P.M. まで) は大文字の P を表示します。ユーザー定義の数値書式でこれが唯一の文字である場合は、%t を使用します。

tt
12 時間制を使用し、午前は大文字の AM、午後 (11:59 P.M. まで) は大文字の PM を表示します。

24 時間制を使用するロケールの場合、何も表示されません。

y
先行するゼロを付けずに、年を 1 桁の値 (0 〜 9) で表示します。ユーザー定義の数値書式でこれが唯一の文字である場合は、%y を使用します。

yy
先行するゼロを付けずに、年を 2 桁の数値で表示します。

yyy
年を 4 桁の数値書式で表示します。

yyyy
年を 4 桁の数値書式で表示します。

z
標準時との時差を先頭にゼロのない数値として表示します (たとえば、-8)。ユーザー定義の数値書式でこれが唯一の文字である場合は、%z を使用します。

zz
標準時との時差を先頭にゼロのある数値として表示します (たとえば、-08)。

zzz
標準時との時差を完全な形で表示します (たとえば、-08:00)。


使用例
December 7, 1958, 8:50 PM, 35 seconds を使ったユーザー定義の日付/時刻書式の例を次に示します。

形式 表示
M/d/yy
12/7/58

d-MMM
7-Dec

d-MMMM-yy
7-December-58

d MMMM
7 December

MMMM yy
December 58

hh:mm tt
08:50 PM

h:mm:ss t
8:50:35 P

H:mm
20:50

H:mm:ss
20:50:35

M/d/yyyy H:mm
12/7/1958 20:50

3451 ◆ExGQrDul2E:2006/09/06(水) 20:52:28 ID:oJIhamyE
文字コードの判別
http://dobon.net/vb/dotnet/string/detectcode.html

346あぼんぬ:あぼんぬ
あぼんぬ

3471 ◆ExGQrDul2E:2007/11/05(月) 01:29:51 ID:PDUtZqkU
2chブラウザはWindowsフォームというアプリケーションなわけであるが、フォームの表示位置をコードで操作するプログラムを自作したので解説する。

3481 ◆ExGQrDul2E:2007/11/05(月) 01:33:07 ID:PDUtZqkU
FormのStartPositionプロパティにManualやCenterScreenという値があるが、今回は自分が指定した位置にフォームを表示させるのでManualにしておく。
そしたらForm1_Loadのプロシージャに次のコードを書く。

3491 ◆ExGQrDul2E:2007/11/05(月) 01:38:05 ID:PDUtZqkU
じゃなかった、フォームの中にリンクラベルコントロールをずらずらとならべるプログラムを書く。
リンクラベルを実行時に動的に生成する場合はコード中でリンクラベルの表示位置をX,Yで指定する。
VB6ではLabel1.LeftとLabel1.TopというプロパティがありX,Yの指定はカンタンだったが.NETではさてどうするかという問題。

3501 ◆ExGQrDul2E:2007/11/05(月) 01:39:20 ID:PDUtZqkU
Dim LinkLove As LinkLabel = New LinkLabel
LinkLove.Name = "LinkLove" & i
LinkLove.AutoSize = True
LinkLove.Text = S2(0)
If i = 1 Then 'HHHHHHHHHHHHHHHHHHHHHH
PX = 0 : PY = 0
Else 'HHHHHHHHHHHHHHHHHHHHHH
Dim o As Object
Dim LB As LinkLabel
For Each o In Me.Controls 'DDDDDDDDDDDDDDDDD
If o.Name = "LinkLove" & i - 1 Then
'CType
LB = CType(o, LinkLabel)
PX = 0
PY = LB.Location.Y + LB.Height
End If 'HHHHHHHHHHHHHHHHHHHHHH
Next 'DDDDDDDDDDDDDDDDD
End If
LinkLove.Location = New Point(PX, PY)
'→エラー'Form1.Controls.Add(LinkLove)'↓Form1でなくMeキーワードを使う
Me.Controls.Add(LinkLove)
'LinkLove.Visible = True
'ListBox2.Items.Add(FileString)
AddHandler LinkLove.LinkClicked, AddressOf LinkLove_LinkClicked

3511 ◆ExGQrDul2E:2007/11/05(月) 01:44:30 ID:PDUtZqkU
Dim LinkLove As LinkLabel = New LinkLabel
LinkLove.Name = "LinkLove" & i
LinkLove.AutoSize = True
LinkLove.Text = "←リンクラベルに表示する文字列"

ここらへんは動的にコントロールを作っている部分。Dimでコントロールを宣言したら各種プロパティの設定を行っている。
.Name コントロールの一意に定める名前で、コントロールにアクセスするときはこのNameを指定する。いわゆるコントロールのIDなので私の好みをいうと.IDと言うプロパティにしてほしかったがVB.NETでは.Nameである。
.AutoSize 表示文字の長さにあわせて自動伸縮
.Text 表示文字列

3521 ◆ExGQrDul2E:2007/11/05(月) 01:47:39 ID:PDUtZqkU
Dim o As Object
Dim LB As LinkLabel
For Each o In Me.Controls
If o.Name = "LinkLove" & i - 1 Then
'CType
LB = CType(o, LinkLabel)

ここらへん、凝っているが、LinkLabel1.Text="abc"ならできるが、
i=1
(LinkLabel & i).Text="abc"という変数iを使ったコントロールの指定ができないから特殊テクニックを使った。

3531 ◆ExGQrDul2E:2007/11/05(月) 02:15:41 ID:PDUtZqkU
ここらへんがフォームの位置座標を扱っているコード。
PY = LB.Location.Y + LB.Height

LinkLove.Location = New Point(PX, PY)
など。
Locationというキーワードを使うのもVB6.0の頃にはプログラマーが書かないでも自動でやってくれていたし、
New Point(PX, PY)というのも目新しく使いこなすのに慣れが必要だとおもふ

3541 ◆ExGQrDul2E:2007/11/11(日) 09:21:30 ID:PDUtZqkU
New Point(PX, PY)
などは構造体という言葉が思いつくであろう。

3551 ◆ExGQrDul2E:2007/11/12(月) 02:47:09 ID:PDUtZqkU
VB6.0のヘルプファイルはMSDNライブラリという膨大なものだが、
このライブラリのナンギガバイトものデータをハードディスクにインストールする余裕が無い場合は
Windowsスクリプトのヘルプファイルをマイクロソフトからインストールすると10MBぐらいですむようだ

3561 ◆ExGQrDul2E:2008/02/10(日) 12:04:43 ID:YyQ2hNss
VB.NETであるフォームから別のフォームのテキストボックスに値を表示するコード
Dim frmDebug As Form = New Debug
frmDebug.Controls.Item("RTB1").Text = S
frmDebug.Show()

3571 ◆ExGQrDul2E:2008/02/10(日) 19:23:55 ID:YyQ2hNss
ディレクトリの中身ごとディレクトリをコピーするすばらしぃメソッド
My.Computer.FileSystem.CopyDirectory(コピー元ディレクトリ, コピー先ディレクトリ, True)
第3引数のTrueはコピー先に同じ名前のものがあったら上書きするためのもの

3581 ◆ExGQrDul2E:2008/02/10(日) 19:35:22 ID:YyQ2hNss
しかし、あるファイルのみをコピーしたいなど細かい制御が必要な場合は
やはりファイルを1コずつ扱うのだ。
-----------------------------------
Dim Moto As String
Dim Saki As String
Moto = "コピー元ディレクトリ"
Saki = "コピー先ディレクトリ"
Dim di As New DirectoryInfo(Moto)
Dim fi As FileInfo() = di.GetFiles()
Dim fiTemp As FileInfo

For Each fiTemp In fi
My.Computer.FileSystem.CopyFile(Moto & "\" & fiTemp.Name, Saki & "\" & fiTemp.Name, True)
Next fiTemp

3591 ◆ExGQrDul2E:2008/02/11(月) 13:04:41 ID:YyQ2hNss
Process.Startという便利なメソッドがある。
便利だが、単にProcess.Start("http://〜")でサイトを開くとすでに開いているウィンドウに新たなページが表示されてしまう。
新しいウィンドウにページを表示したくば次のようにするのだ。
Dim URL As String
Dim i As Integer
Try
i = ListBox1.SelectedIndex
URL = URLDt.Rows(i)("URL")


Dim myProcess As New ProcessStartInfo
myProcess.FileName = BrowserPath
myProcess.Arguments = URL
myProcess.CreateNoWindow = False
myProcess.UseShellExecute = False
myProcess.Verb = "open"
Process.Start(myProcess)
Catch

End Try

3601 ◆ExGQrDul2E:2008/02/20(水) 12:31:25 ID:RHGP7ogY
これはWEBサイトを作る時の話題だが、
ASP.NETでサイトを作ったらデフォルトではすべてのページはUTF-8であり、日本語の文字はきれいに表示されてくれない。
各ページのBODYタグにスタイルシートで文字コードを指定するのは常道ではあるが、各ページに記述するのはとても大変なことである。
そこで、サイト全体をシフトジスにするには、ルートフォルダにあるweb.configの
<system.web>
</system.web>
の間に
<globalization requestEncoding="shift_jis" responseEncoding="shift_jis" />
と書くのだ。
参考ページ
http://www.atmarkit.co.jp/fdotnet/aspexp/aspexp14/aspexp14_03.html

3611 ◆ExGQrDul2E:2008/03/12(水) 14:07:49 ID:8CJQ35mI
String 関数
類似 Space 関数
必要条件
バージョン 1
指定した繰り返し回数を使用して文字列を返します。

String(number, character)
引数
number
文字をいくつ並べるのかを指定します。引数 number に Null 値が含まれる場合は、Null 値を返します。
character
文字の文字コードまたは文字列式を指定します。この文字列の先頭文字を number 回繰り返した値を返します。引数 character に Null 値が含まれる場合は、Null 値を返します。
解説
引数 character に 256 以上の数値を指定すると、String 関数では次の式を使って数値を有効な文字コードに変換します。

character Mod 256
次のコードは、String 関数を使って指定された文字数だけ並べた文字列を返す例です。

Dim MyString
MyString = String(5, "*") ' " *****" を返します。
MyString = String(5, 42) ' "*****" を返します。
MyString = String(10, "ABC") ' "AAAAAAAAAA" を返します。

3621 ◆ExGQrDul2E:2008/04/08(火) 16:21:35 ID:YhrDhYBI
>>179の@パラメータを使用していた場合は下記の問題を回避できるのだ。
@がSQL予約語を自動的にエスケープしてくれるからだ。

【社会】中国国内から「SQLインジェクション」…カード番号など流出した可能性 - サウンドハウス
http://mamono.2ch.net/test/read.cgi/newsplus/1207525293/l50

3631 ◆ExGQrDul2E:2008/04/13(日) 13:32:34 ID:TCJv6qJ2
Webページを保存して開いてみると文字化けしている場合があるが、
それは文字コードの指定がないhtmlファイルの場合がほとんどだ。
ファイル自体が壊れているわけではないので文字コード指定を追加してやる。
<head></head>
の間に
<meta http-equiv="Content-Type" content="text/html; charset=x-sjis">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
を書く。

3641 ◆ExGQrDul2E:2008/04/13(日) 15:34:54 ID:TCJv6qJ2
コンストラクタはクラスのインスタンス作成と初期化を同時に行うもののことだ。
Dim sw As StreamWriter = New StreamWriter(FileName)
はテキストをハードディスクに書き込むためのStreamWriterクラスのインスタンスであるが、
コンストラクタの便利なところは引数に在る。
StreamWriter(FileName)
以外にも、
StreamWriter(FileName,True)

StreamWriter(FileName,True,System.Text.Encoding.GetEncoding("UTF-8"))
などが記述でき、
FileNameはパスまで含んだファイル名
Trueは同じファイルがあったときに上書きするかどうか
System.Text.Encoding.GetEncoding("UTF-8")はどんな文字コードで保存するか、
の指定である。
ファイルのパスを表す引数以外は省略できるが、省略したばあいはデフォルトの値が使用される。
デフォルトの値は.NETの仕様書、ヘルプファイルに載っている。
たとえば文字コードを指定しなければUTF8で保存される。

3651 ◆ExGQrDul2E:2008/05/06(火) 08:01:20 ID:TCJv6qJ2
RichTextBox1という名前が長いので、コントロールはRichTextBox1という名前のままで
プログラム中ではRTB1という短い名前で扱う工夫
--------
Dim RTB1 As RichTextBox = CType(RichTextBox1, RichTextBox)
RTB1.SelectionStart = RTB1.TextLength
----------------
↑CTypeは便利

3661 ◆ExGQrDul2E:2008/05/06(火) 08:02:53 ID:TCJv6qJ2
VbCrLFを毎回書くのは労力なのでカンタンにする工夫
Dim CL As String = VbCrLf

CLの2文字で改行を扱えるようになった。

3671 ◆ExGQrDul2E:2008/06/05(木) 13:58:46 ID:LvivE98s
「大事なアドレス」

192.168.1.1はルータへ、
170.0.0.1はローカルマシンへ。

ルータへのログインIDを忘れたら悲惨

3681 ◆ExGQrDul2E:2008/06/08(日) 01:02:55 ID:LvivE98s
VB.NETでexeファイルを作成するとデフォルトではbin\Releaseというフォルダに作成されてしまう。
VBプロジェクトと同じフォルダにexeファイルを作りたい場合は、
メニュー→プロジェクト→プロパティ→コンパイル→ビルド出力パス
のところに.\と書いておく。

3691 ◆ExGQrDul2E:2008/06/08(日) 01:41:46 ID:LvivE98s
アプリ.exeを起動する時に/abcなどの
コマンドラインをDOSプロンプトなどに記述して、起動された側がそれを受け取るプログラム
Dim CommandLine As String
CommandLine = Command()
TextBox1.Text = CommandLine

3701 ◆ExGQrDul2E:2008/06/08(日) 01:48:05 ID:LvivE98s
逆に、あるアプリをこちらのアプリからコマンドライン付きで起動したい場合は
Process.Start (String, String)
と書く。
Process.Start (String)
はおなじみで、Stringに起動させたいexeなどをフルパスで指定したわけだが、
コマンドラインを含ませて起動したい場合は
Process.Start (String, String)
と第2引数にコマンドラインを書く。
つまり、
Process.Start (String)
を使って
Process.Start ("あぷり.exe /abc")
だと指定したファイルが見つからないというエラーになるので、
コマンドラインを利用する場合は
Process.Start ("あぷり.exe","/abc")
と第2引数にコマンドラインを書いた形式でプロセススタートする。

3711 ◆ExGQrDul2E:2008/06/08(日) 01:50:27 ID:LvivE98s
Process.Start ("あぷり.exe","/abc")

訂正
/abcの/はいらない
Process.Start ("あぷり.exe","abc")

3721 ◆ExGQrDul2E:2008/06/08(日) 13:16:53 ID:LvivE98s
日付データを文字列として、年を4桁、月を2桁、日を2桁で出力する
Format(Date, "yyyy/MM/dd")

3731 ◆ExGQrDul2E:2008/06/08(日) 13:22:08 ID:LvivE98s
2008/1/3の1月部分などを1ではなく01とし、2008/01/03としたい場合がよくあり、このときLeft関数やRight関数を使う場合がある。
X="01"とすると
このときうっかりLeft("0" & X,2)とすると戻り値は00になってしまう。
Right("0" & X,2)が正しく、ちゃんと01の値を取り出せる。

3741 ◆ExGQrDul2E:2008/06/11(水) 05:06:25 ID:LvivE98s
ところであるアプリを別のアプリからコマンドライン付きで起動するべきものはなんであろうか。
グローバル変数を多く使ったアプリは初期化の書き忘れなどが多々あり、そういったアプリは作業が一回終わったら一旦終了して、またアプリを起動しないと使えない。
そこで、アプリの終了や再起動が頻繁に必要なアプリは外部アプリからの立ち上げが便利だ。何回も手動で再起動する必要が無くなる。

3751 ◆ExGQrDul2E:2008/06/25(水) 15:30:33 ID:FyL9DViM
Microsoft Windows Vista で SendKeys を使用するための Microsoft .NET Framework 1.1 Service Pack 1 更新プログラム
http://www.microsoft.com/downloads/details.aspx?FamilyID=59b18749-74f9-4891-8cb5-b22970b58aa9&amp;DisplayLang=ja

3761 ◆ExGQrDul2E:2008/08/22(金) 11:01:19 ID:Ijg2xTc6
なぞのエラーが出たらハードディスクがいっぱいの可能性がある

3771 ◆ExGQrDul2E:2008/08/30(土) 12:51:12 ID:rE00umOE
CheckBox コントロールには、Checked および CheckState という 2 つの重要なプロパティがあります。Checked プロパティは、true または false を返します。CheckState プロパティは、Checked または Unchecked を返します。ThreeState プロパティが true に設定されている場合、CheckState も Indeterminate を返すことがあります。中間状態では、ボックスが淡色表示されてオプションを使用できないことが示されます。

3781 ◆ExGQrDul2E:2008/08/30(土) 14:48:51 ID:rE00umOE
SJIS、JIS、EUC、UNICODE(UTF-16)、UTF-7、UTF-8の文字コード判定/変換(コマンドライン可)
http://homepage2.nifty.com/nonnon/Download/NonCode/index.html

3791 ◆ExGQrDul2E:2008/08/30(土) 15:25:18 ID:rE00umOE
http://chaichan.web.infoseek.co.jp/vbtips/VBMemo2006082201.htm
◆ VBSでのコマンドライン引数の取得
VB6では、Commmand関数でコマンドライン引数を取得できますが、VBSでは、Commmand関数がありません。ではどうするかというと、以下の感じです。ちなみに、VBAでのコマンドライン引数取得はここを参照してください。

Set args = WScript.Arguments
msgbox "引数の数は" & args.Count & "で、第1引数は" & args.item(0) & "で、第2引数は" & args.item(1) & "です。"

'起動方法(DOSコマンドラインまたは、「ファイル名を指定して実行」ダイアログから)
wscript.exe "C:\args.vbs" "abc" "123"

3801 ◆ExGQrDul2E:2008/08/30(土) 18:21:37 ID:rE00umOE
DateAdd 関数 (Visual Basic)
DateDiff 関数 (Visual Basic)
DatePart 関数 (Visual Basic)
Day 関数 (Visual Basic)
Format 関数
Now プロパティ
Weekday 関数 (Visual Basic)
Year 関数 (Visual Basic)
日付型 (Date) (Visual Basic)

3811 ◆ExGQrDul2E:2008/08/30(土) 18:30:28 ID:rE00umOE
文字列→日付型
CDate

3821 ◆ExGQrDul2E:2008/08/30(土) 18:39:47 ID:rE00umOE
S=CStr(D)
のほかに
S=D.ToString
もおk

3831 ◆ExGQrDul2E:2008/08/30(土) 18:48:27 ID:rE00umOE
おススメはこちら
S=Format(D, "yyyy_MM_dd")

3841 ◆ExGQrDul2E:2008/08/31(日) 03:37:33 ID:rE00umOE
9−4.VB6のItemDataプロパティと同じような動作
最後にVB6を使用していプログラマ向けに情報を提供します。

VB6のListBoxにはItemDataというプロパティがあり、表示している一覧とは別に表示されない一覧を持つことができました。この2つの一覧はたとえば、学籍番号と学生の名前のように対になっている値を管理するのに便利でした。ただし、ItemDataの一覧には数値項目しか設定できないのが難点でした。

VB.NET2002以降では一覧はあくまでもItemsプロパティの一覧だけになりましたが、文字列以外の値も設定できるようになったためVB6のItemDataプロパティよりも柔軟に対になっている値や連動する値を管理することができます。

以下のVB6のItemDataプロパティの使用例を示します。

http://homepage1.nifty.com/rucio/main/dotnet/ClassLibrary/L007_System.Windows.Forms.ListBox.htm

3851 ◆ExGQrDul2E:2008/08/31(日) 14:43:06 ID:rE00umOE
Dim S1, S2 As String スカラー変数
Dim Sa1, Sa2 As String() 配列変数

3861 ◆ExGQrDul2E:2008/09/01(月) 12:21:04 ID:rE00umOE
フォルダのサイズを取得する
あるフォルダ以下のすべてのファイルの合計サイズを取得する方法を紹介します。ヘルプにも同様の方法が紹介されていますので、そちらもご覧ください。

下記のメソッド(GetDirectorySizeメソッド)は、DirectoryInfoオブジェクトで対象フォルダを指定し、サイズを取得しています。なお、ファイル数、サブフォルダ数が多いと、かなり時間がかかります。
http://dobon.net/vb/dotnet/file/foldersize.html

3871 ◆ExGQrDul2E:2008/09/16(火) 15:23:56 ID:COmXOrqI
ランダムクラスについて
http://jeanne.wankuma.com/tips/vb.net/random/next.html
乱数 (ランダムな数) を取得する
' Random クラスの新しいインスタンスを生成する
Dim cRandom As New System.Random()

' 0 以上の乱数を取得する
Dim iResult1 As Integer = cRandom.Next()

' 0 以上 512 未満の乱数を取得する
Dim iResult2 As Integer = cRandom.Next(512)

' 256 以上 512 未満の乱数を取得する
Dim iResult3 As Integer = cRandom.Next(256, 512)

' 取得した乱数を表示する
MessageBox.Show( _
iResult1.ToString() & System.Environment.NewLine & _
iResult2.ToString() & System.Environment.NewLine & _
iResult3.ToString() _
)

http://jeanne.wankuma.com/tips/vb.net/random/nextdouble.html
乱数 (ランダムな数) を浮動小数で取得する
VB.NET 全般
' Random クラスの新しいインスタンスを生成する
Random cRandom = new System.Random()

' 0.0 以上 1.0 以下の乱数を取得する
Dim dRandom As Double = cRandom.NextDouble()

' 取得した乱数を表示する
MessageBox.Show(dRandom.ToString())

http://jeanne.wankuma.com/tips/vb.net/random/nextbytes.html
VB.NET 全般
' Random クラスの新しいインスタンスを生成する
Dim cRandom As New System.Random()

' バイト型の配列を確保する
Dim btBytes(5) As Byte

' バイト型の配列の乱数を取得する
cRandom.NextBytes(btBytes)

' 取得した乱数をすべて表示する
For Each btByte As Byte In btBytes
MessageBox.Show(btByte.ToString())
Next btByte

3881 ◆ExGQrDul2E:2008/09/17(水) 11:55:57 ID:COmXOrqI
Random.Next () 0 以上の乱数を返します。
.NET Compact Framework によってサポートされています。

Random.Next (Int32) 指定した最大値より小さい 0 以上の乱数を返します。
.NET Compact Framework によってサポートされています。

Random.Next (Int32, Int32) 指定した範囲内の乱数を返します。
.NET Compact Framework によってサポートされています。

Int32 値型は、-2,147,483,648 から +2,147,483,647 までの値の符号付き整数を表します。

3891 ◆ExGQrDul2E:2008/09/22(月) 08:17:35 ID:R4XJd84M
文字コード判別など
http://homepage2.nifty.com/nonnon/SoftSample/index.html

390名無しさん:2008/09/25(木) 23:18:35 ID:CvMDidiE
もう5年かよ・・・。
尊敬してしまう・・・。

3911 ◆ExGQrDul2E:2008/09/27(土) 03:36:24 ID:R4XJd84M
オッス。

3921 ◆ExGQrDul2E:2008/09/29(月) 11:52:58 ID:R4XJd84M
配列変数の宣言の仕方は次の2通り
Dim Arr1() As String
Dim Arr1 As String()
/////////////////////////////
同じサイズの配列を複数宣言するときに便利な方法
Dim Arr1,Arr2,Arr3 As String()

3931 ◆ExGQrDul2E:2008/09/30(火) 14:45:39 ID:R4XJd84M
IsNumeric 関数
IsNumeric は、Expression のデータ型が Boolean、Byte、Decimal、Double、Integer、Long、SByte、Short、Single、UInteger、ULong、または UShort の場合に True を返します。また、Expression が、数値に正しく変換できる Char、String、または Object である場合にも True を返します。

Expression が Date 型の場合、IsNumeric は False を返します。Expression が、数値に正しく変換できない Char、String、または Object である場合にも False を返します。

3941 ◆ExGQrDul2E:2008/11/23(日) 14:57:29 ID:EKrM8ywA
とりあえず自分のパソコンでしか動かない2chブラウザならできたけど
ハードディスクが壊れてソースごとあぼ〜ん

3951 ◆ExGQrDul2E:2008/12/08(月) 10:14:59 ID:8OfZBncA
不景気だ・・・日本も世界も

3961 ◆ExGQrDul2E:2008/12/14(日) 23:40:53 ID:8OfZBncA
>>349に関連した記事
---------------------------
Form の新しいインスタンスを作成し、ShowDialog メソッドを呼び出して、フォームをダイアログ ボックスとして表示するコード例を次に示します。この例では、FormBorderStyle、AcceptButton、CancelButton、MinimizeBox、MaximizeBox、StartPosition の各プロパティを設定してフォームの外観と機能を変更し、ダイアログ ボックスとして表示します。この例では、フォームの Controls コレクションの Add メソッドを使用して、2 つの Button コントロールも追加します。また、HelpButton プロパティを使用して、ダイアログ ボックスのキャプション バーにヘルプ ボタンを表示します。

Visual Basic コードのコピー
Public Sub CreateMyForm()
' Create a new instance of the form.
Dim form1 As New Form()
' Create two buttons to use as the accept and cancel buttons.
Dim button1 As New Button()
Dim button2 As New Button()

' Set the text of button1 to "OK".
button1.Text = "OK"
' Set the position of the button on the form.
button1.Location = New Point(10, 10)
' Set the text of button2 to "Cancel".
button2.Text = "Cancel"
' Set the position of the button based on the location of button1.
button2.Location = _
New Point(button1.Left, button1.Height + button1.Top + 10)
' Set the caption bar text of the form.
form1.Text = "My Dialog Box"
' Display a help button on the form.
form1.HelpButton = True

' Define the border style of the form to a dialog box.
form1.FormBorderStyle = FormBorderStyle.FixedDialog
' Set the MaximizeBox to false to remove the maximize box.
form1.MaximizeBox = False
' Set the MinimizeBox to false to remove the minimize box.
form1.MinimizeBox = False
' Set the accept button of the form to button1.
form1.AcceptButton = button1
' Set the cancel button of the form to button2.
form1.CancelButton = button2
' Set the start position of the form to the center of the screen.
form1.StartPosition = FormStartPosition.CenterScreen

' Add button1 to the form.
form1.Controls.Add(button1)
' Add button2 to the form.
form1.Controls.Add(button2)

' Display the form as a modal dialog box.
form1.ShowDialog()
End Sub

3971 ◆ExGQrDul2E:2009/01/09(金) 17:45:11 ID:8OfZBncA
起動しているメモ帳をすべて終了するプログラムをつくってみた。
参考ページはこちら
http://jeanne.wankuma.com/tips/vb.net/process/

Dim hProcesses As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("notepad") '大文字のNotepadでも機能する
Dim hProcess As System.Diagnostics.Process
For Each hprocess In hProcesses
hProcess.Kill()
Next hProcess
−−−−−−−−−−−−−−−−−−−−−−−−−−
ウィンドウズアクセサリのnotepad.exeを起動するといくつ起動してもすべてnotepadというプロセスネイムなのですべてのメモ帳を終了することができる。
特定のメモ帳だけを制御したいばあいはプロセスIDを採用する。

3981 ◆ExGQrDul2E:2009/01/09(金) 17:52:35 ID:8OfZBncA
特定のファイルを開いているプロセスのみを制御しているサンプル
http://hanatyan.sakura.ne.jp/dotnet/App05.htm

ByVal e As System.EventArgs) Handles Button3.Click
'指定のExcelファイルを起動しているExcel.EXEを探し終了させる
Dim localByName As Process() = Process.GetProcessesByName("Excel")
Dim p As Process
Dim fn As String = "Microsoft Excel - " & "Test.xls"
'起動中のExcelを取得
For Each p In localByName
'指定のファイル名(Test.xls)で起動中のExcelがあれば終了する
If System.String.Compare(p.MainWindowTitle, fn, True) = 0 Then
'指定のウィンドウにクローズ メッセージを送信して、プロセスを終了
p.CloseMainWindow()
End If
Next

3991 ◆ExGQrDul2E:2009/01/23(金) 17:31:42 ID:jZhBOYY2
http://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200211/02110055.txt
コントロールを最前面に移動するには?
[戻る]
--------------------------------------------------------------------------------
Oran [E-Mail] 2002/11/26(火) 21:08:30
VB 初めて 2ヶ月ほど。なかなか進歩しないもんです。
初 VB が .NET なんですが、やはりみなさん 6 なんでしょうか。

と。本題。
コントロールを最前面に配置したいのですが、デザイナー上であれば右クリックで出来ることは分かっています。
しかし、コントロールを動的に配置した場合、デザイン時に配置したコントロールの下に隠れてしまうんですよ。困ったことに・・・
ソースがまずいのかなぁ。どなたか教えてください。
以下は便宜上、フォームロード時、テキストボックスの場合です。

Private Sub MainForm_Load(ByVal sender As System.Object,
           ByVal e As System.EventArgs) Handles MyBase.Load
Dim txtBox As New TextBox()
txtBox.Location = New System.Drawing.Point(100, 100)
txtBox.Size = New System.Drawing.Size(50, 20)
Me.Controls.Add(txtBox)
txtBox.Show()
End Sub

--------------------------------------------------------------------------------
Say 2002/11/26(火) 22:19:01
VB6ならZOrderで変更できますが、
VB.Netではできませんか?

--------------------------------------------------------------------------------
Oran 2002/11/27(水) 00:32:19
[[解決]]
早々のお返事ありがとうございます。
どうやら ZOrder は、無くなったようですが、これをキーワードに検索したらサクっと見つかりました。
まだ試行してないのですが、どうやら BringToFront() や SendToBack() 関数で出来るようです。

助かりました。

4001 ◆ExGQrDul2E:2009/01/24(土) 15:55:26 ID:jZhBOYY2
WebBrowserコントロールにドキュメントを読み込む
Dim SiteAddress As New Uri("http://nyannyan3.minidns.net/UPLoader/&quot;)
WB1.Url = SiteAddress

4011 ◆ExGQrDul2E:2009/01/29(木) 22:52:16 ID:jZhBOYY2
免責事項
当スレには書き間違いがあるかもだけど何が起こっても責任は取らないのでヨロシク

4021 ◆ExGQrDul2E:2009/01/30(金) 15:49:32 ID:jZhBOYY2
同一リストボックス内ドラッグでアイテム並び替え
http://smdn.invisiblefulmoon.net/mnemorepos/20040607-00.html
単一のリストボックス内においてドラッグアンドドロップでアイテムを並べ替えできるようにしたくなったので、それが出来るコントロールを作ってみました。 MSDNライブラリにあるDoDragDrop()メソッドの説明にそれに似たようなコードがあったので一通り読んでみたんですが、何がなんだかよくわからず、ちと苦労しました。 てなわけで、できあがった記念に(笑)

4031 ◆ExGQrDul2E:2009/02/13(金) 15:55:02 ID:pLAJ6L76
My.Computer.FileSystem オブジェクトの DeleteDirectory メソッドを使用すると、ディレクトリを削除できます。指定できるオプションには、ディレクトリの内容を削除するかどうか、削除したディレクトリをごみ箱に送るかどうか、および削除の進行状況を表示するかどうかがあります。

空の場合のみディレクトリを削除するには
DeleteDirectory メソッドを使用してディレクトリを削除します。その際、onDirectoryNotEmpty を False に設定します。この例では、OldDirectory という名前のディレクトリを、空の場合のみ削除します。

Visual Basic コードのコピー
My.Computer.FileSystem.DeleteDirectory("C:\OldDirectory", _
FileIO.DeleteDirectoryOption.ThrowIfDirectoryNonEmpty)




ディレクトリを削除してごみ箱に送るには
DeleteDirectory メソッドを使用してディレクトリを削除します。その際、recycle を RecycleOption.SendToRecycleBin に設定します。この例では、操作の進行状況を表示しながら、OldDirectory という名前のディレクトリおよびそのすべての内容を削除してごみ箱に送ります。

Visual Basic コードのコピー
My.Computer.FileSystem.DeleteDirectory("C:\OldDirectory", FileIO.UIOption.AllDialogs, FileIO.RecycleOption.SendToRecycleBin)

4041 ◆ExGQrDul2E:2009/02/21(土) 22:30:33 ID:whI5HaL6
Path.GetExtension メソッド
拡張子を取得する

405名無しさん:2009/03/08(日) 01:12:47 ID:whI5HaL6
データテーブル、データカラム、データロー
Dim Dt As New DataTable("iR")
Dim colInt32 As DataColumn = New DataColumn("iR")
colInt32.DataType = System.Type.GetType("System.Int32") 'String型だとソートすると1<16<8とかになる
Dt.Columns.Add(colInt32)
Dim NewRow As DataRow = Dt.NewRow
NewRow("iR") = iR
Dt.Rows.Add(NewRow)

4061 ◆ExGQrDul2E:2009/03/08(日) 10:40:29 ID:whI5HaL6
DataViewの特定のマスを取得
view(i)("item")
iは行のインデックスで、ソートしてあるViewならなおよろしい。
itemはカーラム名

4071 ◆ExGQrDul2E:2009/03/08(日) 11:34:14 ID:whI5HaL6
Vi2(j)("Ren")

4081 ◆ExGQrDul2E:2009/03/14(土) 22:38:06 ID:whI5HaL6
[SleepTimer]

Dim WaitTime As Single
Dim FirstTime As Single
Dim NowTime As Single
WaitTime = 0.1
FirstTime = VB.Timer()
Do
NowTime = VB.Timer()
App.DoEvents()
Loop While (NowTime - FirstTime) >= 0 And (NowTime - FirstTime < WaitTime)

4091 ◆ExGQrDul2E:2009/03/17(火) 11:23:20 ID:whI5HaL6
Array.Sort
Array.Reverse

4101 ◆ExGQrDul2E:2009/03/24(火) 03:59:35 ID:zW2sAYyU
画面解像度の変え方
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=15308&amp;forum=7
http://dobon.net/vb/bbs/log3-13/7373.html

411天才ハッカー ◆ExGQrDul2E:2009/10/25(日) 01:30:25 ID:9Ii97l1s
#畭

4121 ◆ExGQrDul2E:2009/12/15(火) 01:27:25 ID:w2x4.1bY
メディアプレイヤーコントロール WindowsMediaplayerControl
AxWMPLib.AxWindowsMediaPlayer

413名無しさん:2009/12/15(火) 02:30:37 ID:XTg8twR6
まだ生きていたのかw

4141 ◆ExGQrDul2E:2009/12/15(火) 07:17:01 ID:w2x4.1bY
なんてこったい/(^o^)\

415名無しさん:2013/03/19(火) 16:52:28 ID:yPS4Bxq.



新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板