トップページ⇒tech
1001コメント367KB

VB.NET質問スレ(Part30)

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/05/17(日) 10:00:19
前スレ

VB.NET質問スレ(Part29)
http://pc12.2ch.net/test/read.cgi/tech/1235206416/l50

テンプレは>>2〜
06536462009/07/28(火) 00:10:18
みなさんありがとうございます。
週末に試してみようと思います。
0654デフォルトの名無しさん2009/07/28(火) 01:10:35
>>652
1.Windows ムービー メーカー を起動する
2.対象の画像を読み込む
3.ムービーの発行でDV-AVIを選んで実行
4.AVI動画が完成\(^o^)/
0655デフォルトの名無しさん2009/07/28(火) 22:21:11
ODP.NETを使用し、パッケージをコールしてDataSetを取得し、
コンボボックスのDataSourceにDataTableを入れたのですが、
中身が表示されません。
DisplayMemberとValueMemberプロパティにも項目名を設定しています。
セットした後に、SelectedValueとSelectedTextの値を見ると、
SelectedValueには値が入っていますが、SelectedTextには値がありません。

パッケージをコールすると、
表示する用の文字列と裏で持つ用の文字列を複数レコード取得します。

調べても、問題ないと思うのですが何が悪いのでしょうか?

combo1.DataSource = DataTable
combo1.ValueMember = "AAA"
combo1.DisplayMember = "BBB"

試しに、AAAとBBBを逆にセットしてみたのですが、やはりSelectedValueの方しか値が入っていません。

よろしくお願いします。
0656デフォルトの名無しさん2009/07/28(火) 22:26:57
DataTable には値が入ってるの?
0657デフォルトの名無しさん2009/07/28(火) 22:27:00
SelectedTextはコンボボックスのテキスト入力部の、コピーとかのために「選択」してる文字列だから
0658デフォルトの名無しさん2009/07/28(火) 22:32:58
>>656
DataTableには値がちゃんと入っています。
デバッグでも確認しましたし、DataGridViewに突っ込んで確認しています。

>>657
そこは調べ不足でした。SelectedItemで確認するのが正しいですね。


最悪、ループでAddしていくしかないですかね…
0659デフォルトの名無しさん2009/07/28(火) 22:37:50
もう少し、ちゃんとしたコード出してみ。

DataTable の指定とかおかしそうな気がする。
0660デフォルトの名無しさん2009/07/28(火) 22:43:14
>>659
ソースが手元にないので、覚えている範囲で書きます。

Using ds As DataSet = (オラクルパッケージをFillメソッドで実行)
Using dt As DataTable = ds.Tables(0)

combo1.DataSource = dt ←このdtをDataGridViewに入れ、値が入っていることを確認
combo1.ValueMember = "AAA"
combo1.DisplayMember = "BBB"

End Using
End Using

こんな感じです。
0661デフォルトの名無しさん2009/07/28(火) 22:48:35
Disposeしてどうするあほかよ
0662デフォルトの名無しさん2009/07/28(火) 23:31:00
>>661
うわっ、すいません。初歩的な所で…
なぜ、DataGridViewは表示されたままだったのでしょうか?
0663デフォルトの名無しさん2009/07/30(木) 11:41:38
String.Formatの書式について教えて下さい。

String.Format("合 計 {0,12:\\###,###,##0}", dTotal) → 合 計 -\9,000

String.Format("合 計 \{0,12:###,###,##0}", dTotal) → 合 計 \ -9,000

String.Format("合 計 {0,12:\\-###,###,##0}", dTotal) → 合 計 -\-9,000

dTotalがマイナスの場合は-1をかけて、
String.Format("合 計 {0,12:\\-###,###,##0}", dTotal)とすれば
合 計 \-9,000になるのですが、それ以外の方法で
表示させるにはどうしたらいいでしょうか?
0664デフォルトの名無しさん2009/07/30(木) 11:45:45
セクション区切り記号 ;
を使えば正負でそれぞれに書式指定できる
使い方はカスタム数値書式指定文字列のページ見れ
0665デフォルトの名無しさん2009/07/30(木) 13:01:18
VBNETの入門書2冊読破したんだけどどうすればいい?
06666632009/07/30(木) 13:03:44
ありがとうございます。
おかげさまで出来ました!
もっと勉強します。
0667デフォルトの名無しさん2009/07/30(木) 13:53:02
自動更新で下のやつがきたんだけど手動でダウンロードできないんでしょうか?
できるのであれば方法を教えてください

Visual Studio 2005 Service Pack 1 セキュリティ更新プログラム(KB971090)
0668デフォルトの名無しさん2009/07/30(木) 14:00:15
KB番号ググりゃ見つかるだろ
0669デフォルトの名無しさん2009/07/30(木) 14:08:44
>>667
それクソ時間かかるよな。SP1 のときも思ったけど。
0670デフォルトの名無しさん2009/07/30(木) 14:51:40
なんか、やってることはほぼ再インストールと同じなんだそうだ。
だから、DLしてもどっちみち時間かかる
0671デフォルトの名無しさん2009/07/30(木) 17:10:06
>>669
そうそう
だから手動でダウンロードしたいわけなのよ
0672デフォルトの名無しさん2009/07/30(木) 17:25:13
http://www.microsoft.com/downloads/details.aspx?familyid=7c8729dc-06a2-4538-a90d-ff9464dc0197&displaylang=ja

249MBワロタ
0673デフォルトの名無しさん2009/07/30(木) 17:33:05
.NETからEXCEL使ってなんかやるとき、STAThreadじゃなくてMTAthreadだと、
なんか問題あったりするんでしょうか?

EXCELのオブジェクトを作成したスレッド以外から使ったりはしない前提です。

なんかイマイチこの辺を理解してないんです。
0674デフォルトの名無しさん2009/07/30(木) 17:49:22
>>672
ありがとうございます
0675デフォルトの名無しさん2009/07/31(金) 01:33:17
ASP.net(VS2008) VB.netを使用しているのですが、少し質問させて下さい。
GridViewとDataTableをバインドすると普通は【A】という風に表示されると思うのですが、
グループが同じ場合には次の【B】の様に表示したいと思います。
どうすれば実現する事が出来るのでしょうか?

【A】
GROUP EMP_ID
________________________

A     1
A     2
B     3
B     4

【B】
GROUP EMP_ID
________________________

A     1 2
B      3 4
0676デフォルトの名無しさん2009/07/31(金) 08:14:56
MS的にはバインドの階層化。
GridViewのEMP_ID列をテンプレートフィールドとし、
その中に子Repeaterを配置する。
子Repeaterは親のGROUPを引数として
EMP_IDを返すようなメソッドとバインドする。
(引数の与え方としては一旦HiddenFieldに仕込むのが楽だろう)

ただし、この場合、GROUPごとにEMP_IDを取得するSQLが流れる。
GROUP数が多い場合は要注意。

俺ならEMP_GROUPクラスとEMPクラスを作って、
EMP_GROUPのListを返すメソッドを作成。
Repeaterにバインドさせる。
んで、ID列を返すメソッドとして以下のようなのを作ってお終い。

for each emp as EMP in EMP_GROUP
'デリミタでIDを結合
Next
Retuen 結合されたID文字列
0677デフォルトの名無しさん2009/07/31(金) 08:59:46
>>676
ありがとうございます。
試してみます。
0678デフォルトの名無しさん2009/08/01(土) 01:28:50
vb2008でtextファイルの読み込みをさせたいんだけど同じフォルダに置いてるtest.txtを読み込むにはどうすればいい?
配布する予定だから他の人のがどこに置くのがわからないって前提です
0679デフォルトの名無しさん2009/08/01(土) 01:32:01
>>678
VB 的には、My.Application.Info.DirectoryPath から取ればいい。
0680デフォルトの名無しさん2009/08/01(土) 01:47:19
できたよ
トン

1行ずつ読み込んで配列に入れたいんだけど配列の数って先に宣言しないとだめなのかな?
0681デフォルトの名無しさん2009/08/01(土) 01:54:36
配列ならそうだな
配列そのものじゃなくていいならList(Of String)で十分
全行読み込むだけならFile.ReadAllLines一発
0682デフォルトの名無しさん2009/08/01(土) 02:01:37
ReDim で変える、ってのはあるけど、>>681 がいうようにコレクション使っちゃった方が楽だね。
0683デフォルトの名無しさん2009/08/01(土) 02:03:17
配列そのものにはできない?
後で配列に入ってる個数を取り出したいんだ
0684デフォルトの名無しさん2009/08/01(土) 02:04:49
> 後で配列に入ってる個数を取り出したいんだ
それぐらい配列じゃないコレクションでもできる
というか配列じゃないとダメなんてのは配列を引数に要求するメソッドがあるときぐらいだ
0685デフォルトの名無しさん2009/08/01(土) 02:06:13
>>684
そうだった

みんなありがとう!
これで完成できるよ
0686デフォルトの名無しさん2009/08/01(土) 11:21:20
TwitterにAPIを使わず、ログインしているのですがうまくいきません

流れは最初にtokenを取得して
次にtokenとusernameとpasswordを添えてPOSTしているのですが
認証されていないようです

ソースをうpしましたので、お暇な方は何が原因なのか教えて頂けないでしょうか?

http://pai.no.land.to/up/src/dgz14115.zip
(twitterのテストアカウント設定済です)
0687デフォルトの名無しさん2009/08/01(土) 12:29:35
面倒だから見ないけど、Cookie とか Reffer とか大丈夫?

成功する方法とお前さんの方法で、それぞれ Wireshark とかで
やりとりを見てみて、違いを確認するのがいいよ。
06886862009/08/01(土) 17:13:32
>>687
その当たりは大丈夫でした

他の言語ではいけたので
調べて見たらどうやらこれが原因みたい
http://agloo.blog92.fc2.com/blog-entry-40.html

解決方法はWebBrowserでやる

何だかスマートじゃない…
0689デフォルトの名無しさん2009/08/01(土) 22:19:53
ネットワークドライブをつなげてあるのですが、そのドライブにアクセスするプログラムで
ネットワークドライブの電源を手動で入れてプログラムでアクセスしようとすると
ドライブがないというエラーになってしまいます。
マイコンピュータ上にはすでにあるので、エクスプローラで一度ドライブ内を表示すると
その後はプログラムからもアクセスできるようになります。
最初からプログラムでアクセスできるような方法があったら教えて頂きたいです。
0690デフォルトの名無しさん2009/08/01(土) 23:07:41
WNetAddConnection2で再接続
0691デフォルトの名無しさん2009/08/01(土) 23:16:33
>>689
認証のせいでは?
0692デフォルトの名無しさん2009/08/01(土) 23:23:52
作成したプログラムのインストーラーを作って配布したいです。
セットアッププロジェクトで必須コンポーネントに.NetFramework
とCrystarReportsを選択してビルドを行いました。
出来たファイルの.NetFrameworkとCrystalReportsはわざわざ手動でインストール
が必要なのでしょうか?
セットアップ.exeに全て含める方法を教えてください。
0693デフォルトの名無しさん2009/08/01(土) 23:38:33
>>692
ttp://dobon.net/vb/dotnet/deployment/dotnetbootstrap.html
0694デフォルトの名無しさん2009/08/01(土) 23:44:19
女のこれ系のセンスってホントだめだなw
06956922009/08/01(土) 23:45:36
>>693
setup.exe作ったんですが、CrystalReportsのランタイムが入ってないみたい
なんですよね。
出来たmsiファイルは消去してもいいんですか?
0696デフォルトの名無しさん2009/08/01(土) 23:58:59
みたいいわれても知らんがな
msiは必要
06976922009/08/02(日) 00:25:00
>>696
いろいろ調べたところマージモジュールっていうのが必要みたいなんですよね。
じゃあSetup.exe作る際に必須コンポーネントでチェック入れた
CrystalReporsは意味無いってことになりますよね・・・

よくわからないんです。もしそのへんわかる方いらしたら教えてください。

setup.exe走らせる際は各コンポーネントとmsiは一緒にしておかなきゃ
駄目ということですね。
06986922009/08/02(日) 00:51:40
連投すみません。ちょっと勘違いしてたかもしれません。
setup.exeと一緒に同梱されるCrystalReportsのランタイムを個別に
インストールしてみたら、管理者権限が無い為、インストールできない
というエラーが出ました。
管理者権限でログインしてないってだけみたいだったようです。
setup.exeでインストールを行ったときはエラーは表示されず、
インストール出来るコンポーネントのみインストールするんですね・・・
エラー出ないからてっきり必須コンポーネントはインストール出来てる
ものだと思いました。
0699デフォルトの名無しさん2009/08/02(日) 01:07:58
ドンマイ
07006922009/08/02(日) 01:58:10
もしわかれば教えていただきたいんですが、
setup.exeでインストールできないコンポーネントが見つかった時点
でエラーを出してsetupを終了する方法はありますか?
0701デフォルトの名無しさん2009/08/02(日) 12:36:52
あるけど面倒だな。最初に管理者権限確認すれば?
0702デフォルトの名無しさん2009/08/02(日) 13:37:35
>>690-691
ありがとうございます。WNetAddConnection2でできました。
07036922009/08/02(日) 15:15:47
>>701
管理者権限を確認するダイアログを表示させるんですね。
作ってみます。
0704デフォルトの名無しさん2009/08/02(日) 15:27:23
でなくて、Launch Condition で AdminUser を指定する、とか。
Orca の出番だね。
0705デフォルトの名無しさん2009/08/02(日) 15:49:35
>>700
正攻法かどうか分からないけど、
カスタム動作(System.Configuration.Install.Installerクラス)をつかっても
できそうだね。
0706デフォルトの名無しさん2009/08/02(日) 19:40:18
質問です。
現在HTMLのFILE FILEDからファイルを選択し、
SaveAsメソッドを組み込んだ送信ボタンを押下することで
ローカルのHDDからWebサーバーにファイルをアップロードをする
システムを作っています。

このシステムから、FILE FILEDを使用せず、
送信ボタンを押すとダイアログボックスが開き
ファイルを選ぶ事でファイルを送信できるようにしたいのです。

以上のように1つのボタンで、ファイルの選択〜ファイルの送信まで
行うようにするには、どのようなメソッドを用いればいいのでしょうか。
0707デフォルトの名無しさん2009/08/02(日) 19:42:31
無理。

どうしても、っていうなら、セキュリティの設定を甘くして、クライアントスクリプトでやるか、
ActiveX コントロールを使うしかない。
0708デフォルトの名無しさん2009/08/02(日) 19:48:22
迅速な回答ありがとうございました
0709デフォルトの名無しさん2009/08/03(月) 23:57:47
VBでMFCのCSplitterWndみたいな動的分割ウィンドウは出来ないのでしょうか?
0710デフォルトの名無しさん2009/08/04(火) 00:00:20
ん? Splitter じゃだめなの?
0711デフォルトの名無しさん2009/08/04(火) 00:05:43
>>710
Splitterでは新しいペインを生成したり削除したりは出来ないようです。
0712デフォルトの名無しさん2009/08/04(火) 10:29:55
デザイナで作れるものが
プログラムで作れない筈もなく。
0713デフォルトの名無しさん2009/08/04(火) 14:21:16
すいません、
VB.netで新しいプロジェクトからWindowsコントロールライブラリでDLLを作って
アセンブリをCOM参照可能にするにもチェックを入れているのですが
VB6の参照設定でその.netで作成したDLLを参照しようとすると
「指定したファイルへの参照は登録できません」
とのメッセージが出て参照に追加することができません

VB.netでつくったコンポーネントってVB6でも使うって不可能なんですか?
0714デフォルトの名無しさん2009/08/04(火) 14:58:11
dll直接参照するんじゃないよ
プロジェクトのプロパティでCOM相互運用機能の登録にもチェック
0715デフォルトの名無しさん2009/08/04(火) 21:57:57
Dim t As Date
で
t = Now
と
t = Now()
の違いは何ですか?
0716デフォルトの名無しさん2009/08/04(火) 22:00:48
一緒。
0717デフォルトの名無しさん2009/08/04(火) 22:01:26
Dim t As DateTime
t = DateTime.Now
と書いたほうがいい
0718デフォルトの名無しさん2009/08/04(火) 22:02:26
Now 関数があるんだから、別に構わないよ。
0719デフォルトの名無しさん2009/08/04(火) 22:05:23
関数じゃなくてプロパティなんだな。ごめん。
0720デフォルトの名無しさん2009/08/05(水) 11:30:45
コントロール配列の作り方ってありますか?
コピペで勝手に作れないんです…
0721デフォルトの名無しさん2009/08/05(水) 13:03:42
スレごとに2〜3度は出てくる質問だな。
このスレになってからは初だっけ?
FAQだからググればヒットする。
0722デフォルトの名無しさん2009/08/05(水) 14:55:46
最近はググる前に2ちゃんで聞くのがトレンド
0723デフォルトの名無しさん2009/08/05(水) 16:07:35
ヤフったが、どれも未解決で ? みたいな回答ばっかだった
0724デフォルトの名無しさん2009/08/05(水) 19:03:01
とりあえずコントロール配列はなくなった

MSDN(オンライン)でコントロール配列を検索したら
http://msdn.microsoft.com/ja-jp/library/kxt4418a.aspx
とか出てくるんだがな

まず真っ先にチェックすべきはMSDNだろうJK
0725デフォルトの名無しさん2009/08/05(水) 19:03:55
どう考えても2ちゃんで聞くよりググる方がはやい
0726デフォルトの名無しさん2009/08/06(木) 11:38:02
環境は
Microsoft Visual Studio 2005
Office 2003、2007が入っています

Excel 2003 のファイルを操作したいと思い、参照設定で Object Library 11.0 を追加しましたが、
参照設定に追加された Excel.dll のパスをみると、アセンブリフォルダの 12.0 の dll を見にいってるようです
このままコンパイルして Office 2003 のみがインストールされているPCで実行すると、「12.0 が無いよ」と怒られます
Office 2003 のみが入っている開発PCでコンパイルすると、正常に実行でき、参照設定のパスも 11.0 を見にいっています

これを Office 2007 が入っているPCでコンパイルしても Office 2003 のみが入っているPCで実行できるようにしたいのですが、
��パスを固定にする�≠謔、な方法はあるのでしょうか?
0727デフォルトの名無しさん2009/08/06(木) 12:39:08
>>726
参照設定しないで遅延バインドで作る
0728デフォルトの名無しさん2009/08/07(金) 08:15:41
環境はVisual Studio 2008で質問です

TabPage1と2があってComboBox1と2があり以下の様になっています
TabPage1にComboBox1
TabPage2にComboBox2

Private Sub Combo()を作り、その中でComboBox1.Items.Addをしているのですが、
ComboBox2の場合はComboBox2.Items.Addになってしまい面倒です
どうにか一つのPrivate Subで個別に出来ませんか?
よろしくお願いします
0729デフォルトの名無しさん2009/08/07(金) 12:03:24
Comboを引数受け取るようにして、
引数の値によってComboBox1とVomboBox2のどちらに操作するのか分岐。
0730デフォルトの名無しさん2009/08/07(金) 12:04:13
誤字スマン。

引数の値によってComboBox1とComboBox2のどちらを操作するのか分岐。
0731デフォルトの名無しさん2009/08/07(金) 12:40:10
>>730
なるほど!
ありがとうございます
0732デフォルトの名無しさん2009/08/07(金) 12:51:26
・・・すいません、あまりよく分かりませんでした

引数を1の場合ComboBox1にしたい時はどうするんでしょうか?
0733デフォルトの名無しさん2009/08/07(金) 13:10:22
>>732
コンボボックス型の配列変数を宣言して、コンボボックスの1と2をそれに突っ込んで
配列の添え字に引数の値を設定して使えばいいじゃん

最近VB使ってない素人の即興の書き込みですまんけど、こんな感じでできると思う
0734デフォルトの名無しさん2009/08/07(金) 13:12:39
オレならこうするな。

Private Sub Combo(ByRef cbo As ComboBox)
  cbo.Items.Add 〜
End Sub
0735デフォルトの名無しさん2009/08/07(金) 14:10:16
Dim X , Y As Integer
X=X*1.2
X=X*1.3
Y=Y/2
Y=Y*3
X=X*Y

このような場合、変数に代入される毎の計算結果の値を少数切捨てにするには、
個別に関数を指定する以外にどのように書いたら良いでしょうか?
0736デフォルトの名無しさん2009/08/07(金) 14:34:16
整数除算演算子は?

X = X * 12 \ 10
X = X * 13 \ 10
Y = Y \ 2
Y = Y * 3
X = X * Y

1.2の掛け算とかは1.2が定数じゃなければ無理か
0737デフォルトの名無しさん2009/08/07(金) 14:41:02
XもYも整数型なんだから代入した時点で切り捨てられるっしょ
既に望み通りだと思うんだけど
0738デフォルトの名無しさん2009/08/07(金) 14:49:21
四捨五入されるんじゃない?
07397352009/08/07(金) 14:52:28
要は整数型に少数を代入する際、四捨五入ではなくどうにかして切り捨てたいわけです…
0740デフォルトの名無しさん2009/08/07(金) 15:10:01
素直にMath.Floor()使えばいいと思う
0741デフォルトの名無しさん2009/08/07(金) 15:10:22
演算子のオーバーロードでできないものか
0742デフォルトの名無しさん2009/08/07(金) 15:18:04
バージョン書けってのは
テンプレにしたほうがいい
07437352009/08/07(金) 15:22:29
>>740
うーんそれしか無いですかねぇ
>>735はあくまで例で、実際には変数を代入させる計算式が60行くらいあり
結果が少数になるもの全てに適用させるので他に方法ないかなと思ったんですが…

>>742
すいません、VB2008EEです
0744デフォルトの名無しさん2009/08/07(金) 15:29:27
その計算するところだけCで書けばいいかも
せっかく.netは言語混ぜれるんだし
0745デフォルトの名無しさん2009/08/07(金) 15:34:08
>>744
Cだと整数型は少数切捨てですか?
0746デフォルトの名無しさん2009/08/07(金) 15:40:55
60行ぐらいだったらさっさと直しちゃうな俺なら
下手に楽しようとして訳わからん直し方しても後で困るだけ
0747デフォルトの名無しさん2009/08/07(金) 15:44:17
>>746
だね。
そもそも四捨五入という仕様がおかしいからね
0748デフォルトの名無しさん2009/08/07(金) 15:51:26
C#も切捨てだな
0749デフォルトの名無しさん2009/08/07(金) 15:53:37
>>746
俺も
キーボードマクロ使えば楽にできる品
0750デフォルトの名無しさん2009/08/07(金) 15:55:54
>>746
うーんそうですね…むしろその方が楽でしょうしねぇ。

素直にFixで一つ一つやりたいと思います。
有難うございました。
0751デフォルトの名無しさん2009/08/08(土) 01:39:15
>>734
なんでByRef?
0752デフォルトの名無しさん2009/08/08(土) 01:54:50
>751
■ このスレッドは過去ログ倉庫に格納されています