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

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

11 </b><font color=#FF0000>(GQrDul2E)</font><b>:2003/03/28(金) 17:19 ID:ih5oMVcU
VB製の2chブラウザとそのサンプルプログラムはあるのかにゃあ?

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
プログラミングする前に最初からサーバー向けのデータベースを用意しなくても済むというのは
金銭的にも労力的にも大きいはず。データベースコピープログラムが書けるからこその恩恵だ。


新着レスの表示


名前: E-mail(省略可)

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

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

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

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