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


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

VB.NET質問スレ (Part6)



1 名前:デフォルトの名無しさん [04/07/03 08:49]
VB.NETの質問全般です

過去スレ
VB.NET質問スレ (Part5)
pc5.2ch.net/test/read.cgi/tech/1078134703/
VB.NET質問スレ (Part4)
pc2.2ch.net/test/read.cgi/tech/1065269043/
【老若】VB.net質問スレ【男女】 (Part3)
pc2.2ch.net/test/read.cgi/tech/1056281084/
【老若】VB.net質問スレ【男女】 (Part2)
pc2.2ch.net/tech/kako/1043/10436/1043629429.html
【老若】VB.net質問スレ【男女】
pc2.2ch.net/tech/kako/1025/10258/1025848458.html


577 名前:デフォルトの名無しさん [04/08/24 12:39]
ここは初心者の来る場所じゃありませんYOwwwwwwwwwwwwwwwwwwwwwwwww

578 名前:デフォルトの名無しさん mailto:sage [04/08/24 12:50]
そして、煽りも要りませんので・・・

とりあえず過去ログ読みまっしょ

579 名前:デフォルトの名無しさん [04/08/24 13:23]
>>577
すいません
初心者はどこへ行けばよいですか?

580 名前:デフォルトの名無しさん mailto:sage [04/08/24 14:15]
>>579
ここは2ちゃん。「うるせー馬鹿」が返しの挨拶。

581 名前:デフォルトの名無しさん mailto:sage [04/08/24 14:51]
あの〜
いつぞやに、.NETの板が出来たと思っていたのですが、
あれは夢だったのでしょうか?

582 名前:デフォルトの名無しさん mailto:sage [04/08/24 15:55]
>>581
( ゚Д゚)氏ね

583 名前:デフォルトの名無しさん mailto:sage [04/08/24 19:46]
>>581
>>224のことか?

584 名前:デフォルトの名無しさん mailto:sage [04/08/24 21:39]
>>577
初心者の来る掲示板だと思います。ぼくはね。

で、>>574 みたいなのは、ハンドル渡すとか、
Form1 のほうで面倒見てあげるとかして実現は可能だと思う。

いまだによくわからないのだけど、答えはどっちなん?
「コードを工夫して実現する」 or
 「かっこ悪いからやってはいけない」

585 名前:デフォルトの名無しさん mailto:sage [04/08/24 21:51]
>>574
解1. Form2 のプロパティにForm1 のインスタンスをセットしておいてForm2 の方からはそれを介して使う。
解2. アプリケーション実行中にForm1 のインスタンスが高々1個しか無いことが確かなら、Form1 クラスに
     静的プロパティとして Form1 のインスタンスを保持して、Form1.ActiveForm のようにしていろんな所から使う。



586 名前:513 [04/08/24 22:32]
誰か解を求む・・・_| ̄|○

587 名前:デフォルトの名無しさん mailto:sage [04/08/24 22:35]
>>586
問題のソース圧縮してどっかにうpすれば?

588 名前:デフォルトの名無しさん mailto:sage [04/08/24 22:47]
>>585
例外的な場合を除けば、どっちも不正解だと思う。
そんなことをすればデータ隠蔽の効用が全部失われてしまう。

実際にデータを持つオブジェクトからハリボテ君(Form1)に
イベントで通知するのが正解だろう。

589 名前:デフォルトの名無しさん mailto:sage [04/08/24 23:14]
>そんなことをすればデータ隠蔽の効用が全部失われてしまう。
その判断の根拠を教えてくれ。
って>>584の言ってる事の方が普通じゃないと思うが…

590 名前:デフォルトの名無しさん [04/08/24 23:40]
ヴァカ降臨!
www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=14151&forum=3


591 名前:駆け出し mailto:sage [04/08/24 23:49]
ちょっと気持ちの悪いエラーが出ているので質問です。

Button1 と TextBox1を配したForm1のButton1のクリックイベントで

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim parameter As Integer
  Do While ( 処理続行条件 = True )
  Application.DoEvents()
  parameter = CInt(TextBox1.Text)
          ・・・                    'parameter を使った処理
Loop
End Sub

というように、TextBox1からパラメータを入力してループ処理に反映させるコードを書き、
デバッグモードでビルドエラーも出ずに一見正常に動作する所まできました。
ところがDo While ループが回っている最中にForm1の右上の「X」ボタンをクリックして強制終了させると、
parameter = CInt(TextBox1.Text) の行のところで

'System.InvalidCastException' のハンドルされていない例外が microsoft.visualbasic.dll で発生しました。
追加情報 : 文字列 "" から型 'Integer' へのキャストが有効ではありません。

とエラーが出てしまいます。
なにぶんど素人なもので、どうしてエラーが出てるか良く分からないし、分からないと気持ち悪くて使えないし・・・
どなたか、エラーが出ている原因をご教授願えないでしょうか


592 名前:デフォルトの名無しさん mailto:sage [04/08/24 23:59]
TextBox1.Textが""なんじゃないの?

593 名前:駆け出し mailto:sage [04/08/25 00:06]
>>592
TextBox1の中身は(目で見る限り)整数が入っています。
実際、ループ中の強制終了さえしなければ妥当な結果が得られています。

アプリケーションの終了でTextBox1の中身がクリアされてしまう、と言われれば
なんとなくそうかなあとは思うのですが、
素人考えでは、「X」ボタンのクリックが処理されるのは ”Application.DoEvents()”
のところであって、だとするとわざわざその次の行まで処理が進んでエラーが出るのも
おかしいんじゃないかと思ったり、悶々と悩んでいる次第です。



594 名前:デフォルトの名無しさん mailto:sage [04/08/25 00:31]
うーん、細かい内部動作までは知らないんだけどさ…
Application.DoEvents()でフォームが閉じるわな。
閉じ終わったら処理が戻ってくるわな。
Windowの破棄とかが具体的にどのタイミングなのかは知らないけど、
この時点でTextBoxが空になってるというのはありえそうな話だ。
まあ、ObjectDisposedExceptionになりそうな気もするけどそこはそれ。

勘違いしてそうだが、×ボタンクリック=アプリケーションその場で強制終了じゃないぞ。
ちゃんと最後まで処理は続く。

595 名前:デフォルトの名無しさん mailto:sage [04/08/25 00:34]
DoeventsだからこそForm Unloadとその他のプログラムの動作がマルチタスクで動く。
ところでDoevents中に×ボタンを押したときにちゃんと終了するプログラムを書けるかどうか見守ってやる



596 名前:592 mailto:sage [04/08/25 00:37]
書こうと思ったら>>594氏が書いてくれたか
Application.DoEvents()で閉じる処理を拾った後(フォームが破棄されてる)に
parameter = CInt(TextBox1.Text)を実行してるから空っぽ
DoEventsはどの順序でイベントが発生したか追跡が難しいから
あまり使うことはおすすめできない

597 名前:デフォルトの名無しさん mailto:sage [04/08/25 00:38]
>>589
>>584が正しいなんて全く言ってないけど。。

「データ隠蔽の効用が失われる」は正しい言い回しじゃないが、
要するに>>585のようにしたのでは、たとえばフォームならフォーム上のコントロールの
制御の責任者とそのタイミングの明確さが失われるってことだ。

テレビに例えれば、ケーブルで繋がってるのなら映像がどっから流れてきているかは
ケーブルを追っていけば自明だが、「パブリックな」電波だったら映像がどっから来ているか
追跡するのは大変だよ。

よく知ったかクン(俺もその一人だが。。)が「UIとロジックを分離する」
なんて知った風なこといってるでしょ?要するにそれだよ。

598 名前:デフォルトの名無しさん mailto:sage [04/08/25 00:41]
ちゃんとフラグ管理やらEnable False やら工夫すればDoevents使いまくりでとても軽くて快適なアプリができるぞ

599 名前:デフォルトの名無しさん mailto:sage [04/08/25 00:52]
スレッド使えるようになったのにわざわざDoEventsなんていう
面倒で危ない橋を渡る理由が浮かばない。

マルチスレッドがよほど難しいならともかく、
直接UIいじらない単純なバックグラウンド処理なら屁みたいなもんなのに。


600 名前:駆け出し mailto:sage [04/08/25 00:54]
レスくれたみなさん、ありがとうございます。
どうも Application DoEvents() の処理のタイミングについて誤解があったようですね。
ちょっくら関連ドキュメントなぞ当たって勉強してみます。

VBは奥が深いと言うか何と言うか、やればやるほど
過去に書いた見掛けだけ正常に動くコードのインチキさ加減が露になってくる・・・

601 名前:デフォルトの名無しさん mailto:sage [04/08/25 01:02]
まあ、EnabledをFalseにするとかでもはや別スレッドでやるのと
同じくらい流れが明確なのであれば、そんなに危険があるわけではないが、
>>599の言ってるとおり、それがスレッドでやるより特別に簡単てわけじゃない。
単発処理自体が重かったり、常にDoEventsを行う事を考えるくらいなら、
むしろ別スレッドの方が簡単確実だ。

602 名前:デフォルトの名無しさん mailto:sage [04/08/25 07:45]
どんな.NETアプリでもあちこちにDoevents挿入しとかないと他のアプリが重くなっちゃうというのが.NETアプリを使ってるときの体験法則

VB.NETアプリが動作中にタスクバーにある他のアプリをクリックしてアクティブにするときに重さを感じる

603 名前:デフォルトの名無しさん mailto:sage [04/08/25 08:14]
>>602
DoEventsの意味がわかってない予感。。
ついでにプリエンプティブって意味もわかってない予感。。

しかし、これをプログラマの世界もオーディオみたいにプラシーボに
騙される人が出るほどレベルが低下していると見るべきか、それだけ
層があつくなったと見るべきか。

604 名前:デフォルトの名無しさん mailto:sage [04/08/25 09:03]
>586
VB6の時はPropertyBagオブジェクト使ってたが、.NETだと違うみたいだ。
MSDNでPropertyBag調べて見れ。
.NETではどうすればいいかわかる。

605 名前:774.sln [04/08/25 10:14]
質問です。
Windows2000で組んだアプリケーションが、Windows2000では起動するんですが
WindowsMeで起動しないんです。
デバッガで調べたら
「アセンブリファイル Microsoft.VisualBasic.Compatibility が見つかりません」
と出ているんですが、これはどういうことなんでしょうか?

環境は
Windows2000 / Microsoft .net Framework v1.1
WindowsMe / Microsoft .net Framework v1.1

です。よろしくお願いします。



606 名前:774.sln mailto:sage [04/08/25 11:03]
すみません解決しました。
WindowsMeには「Microsoft.VisualBasic.Compatibility」がインストールされないらしく
「参照設定」で「ローカルコピー」をTrueにしたら起動しました。

スレ汚しすみませんでした。

607 名前:デフォルトの名無しさん mailto:sage [04/08/25 13:37]
>>602
( ゚Д゚)ポカーン

608 名前:デフォルトの名無しさん mailto:sage [04/08/25 15:54]
すいません。わたしマイクロソフトの社員ですが実は602の言うとおりです・・・

609 名前:デフォルトの名無しさん mailto:sage [04/08/25 17:23]
プロパティウインドウでGUI入力できるプロパティはどのように作成したらよいのでしょう?
たとえばBackColorのプロパティ等のような
プロパティ値の▼押下でプロパティ設定用の画面から入力できるようなものを作成したいのですが・・・

610 名前:デフォルトの名無しさん [04/08/25 17:50]
VB.NETでCORBAって使えますか?

611 名前:デフォルトの名無しさん [04/08/25 17:50]
とりあえず練習用にVisualBasic.netを買ってみたんですが、DB400に接続しようとしてODBC接続
接続しようとすると、このバージョンのVSでは無理だよヴォケ!ってウィザードの最中にいわれてしま
います。

普通のVisualStudio.netなら大丈夫なのでしょうか?それとも、エンタープライズ版を買わないとダメな
のでしょうか?



612 名前:デフォルトの名無しさん mailto:sage [04/08/25 18:05]
>>608
そこらにDoeventsを入れないといけないプログラム記述は
マイクロソフトで推奨されてるのですか?

613 名前:デフォルトの名無しさん mailto:sage [04/08/25 18:10]
.NETの実行速度を上げるために
1行のステートメントが終ったらすぐに次の行のステートメントを実行する仕様になってます。
そのためたとえループでなくてもマルチタスクさせたい場合(たとえネットするぐらいでも)は制御のあそび(すきま)を作ってほしいです。
Doeventsを使ってないプログラムのマルチスレッドは余計負荷になります。
公では言ってませんが感のいい方は気づいていたみたいです。

614 名前:デフォルトの名無しさん mailto:sage [04/08/25 18:19]
>>612
 このスレで書かれてる Doevents 推奨はほぼデタラメですが、
RPC や Out of Process COM オブジェクトの呼び出し (一部のSHホゲホゲ系 API も含む) などで
内部的に「隠れたウィンドウ」が生成されるようなスレッドは、非UIスレッドだからといって長時間ブロック
して処理を行うと DDE ブロードキャストを阻害し、シェル( Explorer) の動作を重くします。

615 名前:デフォルトの名無しさん mailto:sage [04/08/25 18:21]
推奨とは言いたいが言えない企業の悩み



616 名前:デフォルトの名無しさん mailto:sage [04/08/25 18:23]
>>614
追加。例えば Win32 の Sleep API の注意
www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdllpro/html/_win32_sleep.asp
なんかは、.Net でスレッドを作成する場合にも同じく適用されます。
(.Net の場合には AppDomain 間をまたがるメソッドの呼び出しでも隠しウィンドウが生成されると思います)

617 名前:デフォルトの名無しさん mailto:sage [04/08/25 18:29]
実行速度が早いとみせかけるためにはしょうがないのだよ

618 名前:デフォルトの名無しさん [04/08/25 20:34]
誰か611に答えてやれよワラ

619 名前:デフォルトの名無しさん mailto:sage [04/08/25 21:36]
だってわかんないんだもん

620 名前:591 mailto:sage [04/08/26 00:26]
どうも、>>591です。
今日は同僚の目を盗んでVSのヘルプやらWeb上の文書をあさってみましたが、結局DoEvents()関連についてはうやむやのまま
せっかく.NETに移行したことだし(2ヶ月前までExcelのVBAマクロしか書いたことなかった)
スレッドとやらを使ってみようかとトライしてみました。

で、試行錯誤した末、以下のような感じのコードになりました。

Imports System
Imports System.Threading

Public Class Form1
      
      ・・・

Private Sub DoLoopThread()
'元Button1のクリックイベントにあった処理から、Application.DoEvents()を取っ払ったもの
End Sub

Private MyThread As New Thread(AddressOf DoLoopThread)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MyThread.start()
End Sub

Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
MyThread.Abort()
End Sub

End Class

これで何とか”ループ処理中に「X」をクリックするとエラーが出る”問題は回避できるようになりました。

621 名前:591 mailto:sage [04/08/26 00:38]
しかし、>>620のコードでもまた新たな問題が発生してしまいました。
一度ループの処理が終わった後、再度Button1をクリックすると

"スレッドが実行中か、または終了しています。再起動できません。"

とエラーが出てしまいます。
このツールでは、Button1で始まる処理を、何回でも呼べるようにしたかったのでいろいろいじくって
結局、Button1のクリックイベントの中身を以下のように書き換えて、何とか目論見どおりの
動作をさせることができるようになりました。

Select Case MyThread.ThreadState
Case ThreadState.Unstarted
MyThread.Start()
Case ThreadState.Running
MsgBox("処理実行中です。やり直す時は一度終了してください")
Case ThreadState.Stopped
MyThread.Abort()
Dim t As New Thread(AddressOf DoLoopThread)
MyThread = t
MyThread.Start()
End Select

これにて一件落着!と行きたい所ですが、どうもこのコードは直感的に美しくないような気がします。
一般的にスレッドの再利用(に近い機能)を実現するときのリーズナブルな方法とはどんなものなんでしょうか?

622 名前:デフォルトの名無しさん mailto:sage [04/08/26 00:55]
ボクにはネタにしかみえません。


623 名前:デフォルトの名無しさん mailto:sage [04/08/26 00:58]
タイマーで10ms

624 名前:デフォルトの名無しさん [04/08/26 01:52]
厨な質問で申し訳ないが、VB6のProjectをVB.netで読み込んで、
加筆修正してVB6のデータとして保存できるんでしょうか?

要はVB.netでVB6形式の保存ができるのかどうなのかを知りたいのです。

625 名前:デフォルトの名無しさん mailto:sage [04/08/26 01:55]
どうあがいてもむり。



626 名前:デフォルトの名無しさん mailto:sage [04/08/26 09:55]
>>624
ばっっっかじゃねーの

627 名前:デフォルトの名無しさん [04/08/26 10:08]
申しわけありませんが、質問させてください。

VB.NETで、配列を使わずに最終レコードから逆読みしていくにはどのようにすればいいのでしょうか。

1〜100までのデータがあり、100、99、98…とグリッドに表示したいのです。



628 名前:デフォルトの名無しさん [04/08/26 10:40]
うるせーバカ

629 名前:デフォルトの名無しさん mailto:age [04/08/26 11:28]
>>628
クズハ、ハヤクシネヨ
ソノホウガヨノタメ

630 名前:デフォルトの名無しさん mailto:sage [04/08/26 11:39]
フォームのデザイン時にロジックからコントロールを生成するようなことは可能でしょうか?
実効時、動的コントロール生成のやりかたはわかるのですが

AccessフォームのTextBoxのようにフォームデザイナにTextBoxを配置した時点で連動するCaption(Label)コントロールも同時に生成し
以降、デザイナ上でレイアウト操作を連動させる・・・
といったようなことをやりたいのですが
デザイン時にParentのInitializeComponent()へコントロール追記できるようなクラスやメソッドがあるのでしょうか?
ざっとググってみても関連する情報が見当たらないもので・・・

631 名前:デフォルトの名無しさん [04/08/26 12:02]
うるせーバカ

632 名前:デフォルトの名無しさん mailto:sage [04/08/26 13:24]
.NETになってからは変数名にいちいち
i.NETとかmyString.NETとか書かなければならなくなってめんどうになったから
VB6.0に戻ろうかな

633 名前:デフォルトの名無しさん mailto:age [04/08/26 13:29]
>>628>>631
クズハ、ハヤクシネヨ
ソノホウガヨノタメ
ダイタイ、オマエガイテモダレモカンシャシナイ



634 名前:デフォルトの名無しさん [04/08/26 13:53]
>>632
うちの.netは付けなくても動くよ

635 名前:デフォルトの名無しさん mailto:sage [04/08/26 14:04]
>>634
社内(or参加プロジェクト内)での命名規約の話だろ。

>>632
VB6もリリースが終わったから、否応無しにVB.netを使わなきゃならん。。



636 名前:デフォルトの名無しさん mailto:sage [04/08/26 14:09]
>>635
難儀な会社だな・・・
うちじゃコンパイラがエラー出す

637 名前:デフォルトの名無しさん [04/08/26 14:17]
>>629>>633
テメーコソヤクタタズダローガ
クズハ、ハヤクシネヨ
ソノホウガヨッポドヨノタメw

638 名前:デフォルトの名無しさん [04/08/26 14:40]
>>637
ノロイヲカケタヨ
エキノホームカラテンラクシシナイヨウニナ
ケケケケ...

639 名前:デフォルトの名無しさん [04/08/26 14:52]
>>638
アイニクデンシャニハノラネエンダワ
ゴクロウサマ
プププ...

640 名前:デフォルトの名無しさん mailto:sage [04/08/26 15:25]
>>611
安いやつ買ったね? ウィザードを使わずコードで書けばOKだよ

>>627
そのデータはどこに格納してあるの?

>>630
DTE からオブジェクトをとって、ごにょごにょやるしかないんじゃないかな。
つまり、コントロールの機能としては無理かと。


641 名前:627 [04/08/26 16:12]
640様

返答いただきありがとうございます。

SQLサーバ7.0内のRDBとなります。接続はODBC接続しています。



642 名前:デフォルトの名無しさん mailto:sage [04/08/26 16:50]
>>641
データセットに入れてあるのなら、ループで逆に読めば OK。

レコードセットに入れてあるのなら、MoveLast して、MovePrevious しながら
とっていけば OK。

643 名前:627 [04/08/26 17:38]
642様

ありがとうございます。

早速、試してみたいと思います。

本当に感謝致します。

644 名前:デフォルトの名無しさん mailto:sage [04/08/26 19:01]
掲示板を自動巡回するソフトを作りたいのですが、
どういった知識が必要なのでしょうか。
いくつかの掲示板を自動巡回できるようにし、
また各掲示板用の書き込みを巡回前に用意しておけば
巡回中に、自動で投稿されるようにしたいです。

掲示板によっては投稿に必要な手順が異なったりするのも
ソフトの方で登録できるようにしたいです。

どなたか、よきアドバイス・実現方法等ご教授下さらないでしょうか。


645 名前:デフォルトの名無しさん [04/08/26 19:08]
>>644
まずは、IEコンポーネントとかを使わずにブラウザを作るところからスタートだな。
TCP/IPとHTTPとHTMLぐらい。



646 名前:デフォルトの名無しさん mailto:sage [04/08/26 21:00]
コントロールA(アンカー左)とコントロールB(アンカー右)を配置した後、
フォームをリサイズしたら、BがAの下に潜り込んでしまいました。逆に
AがBの下に潜り込むようにしたいんですが、どうすればいいんでしょうか。
各コントロールの重なり方を指定するやり方を教えてください!m(_ _)m


647 名前:デフォルトの名無しさん mailto:sage [04/08/26 21:14]
>>646
まずはデザインモードでコントロールを右クリック。
話はそれから。
というか、普通それで解決法がわかると思う。

648 名前:デフォルトの名無しさん mailto:sage [04/08/26 22:32]
>>644
ついこないだそんなもん作ったなぁ・・・お前は俺か?(ぉ
www.gotdotnet.com/japan/student/column/firststep/
ここのダウンローダーあたりを見ればwebから取得する方法は分かるだろ。
これで巡回はいいとして・・・

あとはその掲示板への投稿方法を見なければならないからなぁ
HTMLフォームの知識も必要になるだろう。
(簡単なHTTPの知識もあったほうがいいと思われ。RFCでも見るんだ)

巡回先が2chじゃないだろうな?一応
www.monazilla.org/document/index.html

自動投稿スクリプトでAA連投プログラムとか作っちゃダメだぞ

649 名前:デフォルトの名無しさん mailto:sage [04/08/27 09:43]
Windows Script HostのMapNetworkDrive メソッド、RemoveNetworkDrive メソッド
と同じような事をwsh使用せずにVB.NETだけでしたいのですが
System.IO,System.netクラスにはなさそうだったのですができないのかな?
ネットワークドライブの割り当てせずにUNC形式でパスかかってるファイル、フォルダに
アクセスできればいいのですがどなたかご存知ないでしょうか?


650 名前:デフォルトの名無しさん mailto:sage [04/08/27 10:40]
プログラムを常駐させといて、ユーザーのクリックに反応してある関数を動かす
そんなプログラムを作りたいのですが、.NET Frameworkで実現できますか?

651 名前:646 mailto:sage [04/08/27 19:09]
>>647
レス遅れてしまってすいません! ありがとうございました!
とても簡単に解決できたんですね・・・申し訳ないです。助かりました。
多謝です m(_ _)m

652 名前:デフォルトの名無しさん [04/08/27 22:25]
SQLからNullを含んだ列をDataSetに読み込んできたんですが、その列が
Nullであるかどうかを判別するのってどのようにすればいいんでしょうか?
SqlDataAdapter1.Fill(DataSet11.TestTable)
For Each dr As DataSet1.TestTableRow In DataSet11.TestTable
If Not dr.X Is Nothing Then
....
Else If
Next

という感じで書いてみたんですがだめでした
XMLスキーマエディタでNullValueを設定しようとしたら
このコンテキストでは無効です
というエラーが出てしまい、保存できません
どなたがご教授お願いします


653 名前:デフォルトの名無しさん mailto:sage [04/08/27 23:43]
>>652
IsDBNull関数でできると思うけど?


654 名前:デフォルトの名無しさん mailto:sage [04/08/28 09:52]
>>653
出来ません。

655 名前:デフォルトの名無しさん mailto:sage [04/08/28 10:09]
自作プロパティ、メソッドに説明文をつけたいのですが方法がわかりません。
プロパティウインドウの下の部分や、入力候補に表示させるにはどうしたらいいのでしょうか?



656 名前:652 mailto:sage [04/08/28 12:28]
>>653 >654の言うとおりで出来ませんでした。
datasetの項目はpropertyみたいなのでgetメソッドの中で
例外が発生しているみたいです。


657 名前:デフォルトの名無しさん [04/08/28 12:40]
ちょっと質問です。

VB6.0では、スクリプトコントロール
(www.microsoft.com/japan/msdn/scripting/default.asp)
があって、VBアプリからVBスクリプトを簡単に利用できましたが
VB.NETで同じようなことはできるでしょうか?



658 名前:デフォルトの名無しさん [04/08/28 13:22]
DataSet11ってオリジナルのクラス?

659 名前:652 mailto:sage [04/08/28 13:36]
>>658
そうです。データアダプタでデータセットの生成をやったときに
新しいデータセットを作るときのデフォルトの名前がDataSet1
で、それをフォームに追加したときに出来るのがDataSet11です。


660 名前:デフォルトの名無しさん mailto:sage [04/08/28 14:10]
その方法でDataSetを使ったことがないんだけど

XMLスキーマ経由で返されるNULLってゼロストリング""じゃなかったっけ?
CrystalReportsのXMLデータセットで使ったときはNULL=""で対処してた



661 名前:652 mailto:sage [04/08/28 15:16]
>>660
XMLスキーマエディタでNullValueをemptyに設定するとゼロストリング""
になるらしいんですけど、その設定が出来ませんでした。(保存するとき
にエラー「このコンテキストでは無効です」が出る)
>NULL=""で対処してた
それで対処できるのはわかるんですけど、たとえばSQLdatareaderとかを
使う場合とかならISDBNUllとかで対処できるからdatasetでもできるんじゃ
ないかと思ったんです

662 名前:デフォルトの名無しさん mailto:sage [04/08/28 15:54]
試しに
ID Int
STR CHAR
DT DATETIME
っていうSQL結果(テーブル)からDataSet1.xsd
作ってみたんだけど

STRのNullValueプロパティを(Empty)にしたら問題なくコンパイルが通った

DT(DateTime)のNullValueプロパティを(Empty)にしたら
「カスタム ツール エラー : コードを生成できませんでした。システム エラーです。」
と言うのが発生したけど、これはまた別物かな

一度XMLスキーマに通してるみたいだけど
直接Data.DataSetにFillすることは出来ないのかね?
Data.DataTable内のDataColumnならNull値(Nothing)が取れるんだけど

何かあんまり力になれそうにないです
スマソ


663 名前:デフォルトの名無しさん mailto:sage [04/08/28 16:09]
datasetじゃなくてdatatableじゃダメなん?


664 名前:652 mailto:sage [04/08/28 16:19]

>STRのNullValueプロパティを(Empty)にしたら問題なくコンパイルが通った
>DT(DateTime)のNullValueプロパティを(Empty)にしたら
>「カスタム ツール エラー : コードを生成できませんでした。システム エラーです。」
>と言うのが発生したけど、これはまた別物かな
同じエラーです。こっちではそれでコンパイルが通らなくなっちゃうんですよね。
何がちがうんですかね?

>一度XMLスキーマに通してるみたいだけど
>直接Data.DataSetにFillすることは出来ないのかね?
えーっと私の理解ではdatasetを生成すると自動でXMLスキーマが生成されて
さらに編集したい場合にはエディタを使うってことだと思ってたんですが
違いますか?

>Data.DataTable内のDataColumnならNull値(Nothing)が取れるんだけど
DataTableは使ったことがないんで試してみます。

>何かあんまり力になれそうにないです
>スマソ
いえいえありがとうございました。参考になりました。

>>663
とりあえずやってみます


665 名前:デフォルトの名無しさん mailto:sage [04/08/28 16:35]
>>664
XMLのDataSetとSystem.Data.DataSetは名前は同じなんですけど中身が別物です

Dim dt As New Data.DataTable '新しいDataTable作成
SqlDataAdapter1.Fill(dt)      'でDataTable内にデータを取得できるので

For Each dr As Data.DataRow In dt.Rows

dr.Item(カラム名か番号) '<-これでレコードごとのカラムにアクセスできます

Next

な感じでデータを取得できます



666 名前:652 mailto:sage [04/08/28 18:08]
>>665
>dr.Item(カラム名か番号) '<-これでレコードごとのカラムにアクセスできます
ここでItem(カラム名か番号)がNULLだと例外が出てしまうんです。
If dr.Item(カラム名か番号) Is Nothing then ...
If ISDBNull(dr.Item(カラム名か番号)) then ...
などとやってもうまくいかないんですよ(TT)



667 名前:デフォルトの名無しさん mailto:sage [04/08/28 20:26]
If IsDBNull(dr.Item(カラム名か番号)) then てやらんと。
DataRowに入ってるSystem.DBNull.Value とNothingは別物だぞ

668 名前:667 mailto:sage [04/08/28 20:32]
If dr.Item(カラム名か番号) Is DBNull.Value then ... でもok


669 名前:665 mailto:sage [04/08/28 20:57]
失礼
NothingじゃなくてDBNullでした

670 名前:デフォルトの名無しさん mailto:sage [04/08/28 21:58]
dr.Item(カラム名か番号) で例外が出るんだったらそれでは無理と思うが…


671 名前:デフォルトの名無しさん mailto:sage [04/08/28 22:00]
って勘違いしてたかな?スマン

672 名前:デフォルトの名無しさん mailto:sage [04/08/28 23:26]
ON_WM_KEYUP( )メッセージハンドラで他のアプリのキーUPメッセージって拾えますか?


673 名前:デフォルトの名無しさん [04/08/29 05:29]
SqlDataAdapter1.Fill(DataSet1,"DataTable")で作成したDataTableの中身を
Excelファイル(.xls)に吐き出して、Excel起動→WorkSheet表示→印刷
→Excel終了をVBのプログラムから実行したいのですが方法が分かりません。
どなたかご教示頂きたく宜しくお願いいたします。
ちなみに、VBは2003、Excelは2002、DBはMSDE-RelAです。

674 名前:デフォルトの名無しさん mailto:sage [04/08/29 08:17]
>>673
www.atmarkit.co.jp/fdotnet/index/bbs/dir91.html
ヒントが見つかるんでないかな

675 名前:523 [04/08/29 12:35]
>>655
入力候補ってのはどんな奴を指してるかイマイチ解りませんが、
Modifiersプロパティみたいな奴だったら
Public Enum testEnum
t0 = 0
t1
End Enum
<System.ComponentModel.Description("説明です")> _
Public Property test() As testEnum
で、OKと思われる

追伸
誰か、523の回答もお願いします



676 名前:デフォルトの名無しさん mailto:sage [04/08/29 20:09]
>>675
>>523のやつまだやってたのかよ。

ってか>>518で書いてるようにプロパティをReadOnlyにしたらいけたぞ?
ReadOnlyじゃないと、DesignerSerializationVisibility.Contentの指定が生きてない感じ。
というより、コントロールのオブジェクト自体入れ替えられるんだから指定が意味なしってことかな・


677 名前:523 [04/08/29 21:20]
>>676
すみません。完全に見落としてました・・・_| ̄|○
ReadOnlyにしたら出来ました。






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

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

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