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


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

VB.NET質問スレ(Part30)



1 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 10:00:19 ]
前スレ

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

テンプレは>>2

263 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 16:21:00 ]
んで、開発環境と実行環境は別 PC なのね?
どちらも 32ビット?

Oracle DB が入ってても、クライアントがインストールされてなきゃダメ。
まずはそこを確認してみて。

264 名前:258 [2009/06/28(日) 16:27:54 ]
>>263
ありがとうございます。
開発環境と実行環境は別PCです。
どちらも32ビットです。

今からOracleクラインアントを
OracleDBサーバーにしているPCにインストールしてみまつ。

265 名前:258 [2009/06/28(日) 16:49:52 ]
>>263
確認したのですが、OracleDBサーバーにしているPCに
クライアント10gがすでにインストールされていました。



266 名前:デフォルトの名無しさん [2009/06/28(日) 17:52:33 ]
皆さんは帳票の出力はCrystalReportを使用してますか?
現在帳票はACCESSで使用しています。
今回、フォームをVB.NETで作成しなおし、DBはACCESSを使用することにしました。
帳票がかなり複雑でビジュアル的にも良くできているのですが、それを
VB.NETで作り直すのがかなり困難だということをひしひしと感じております。
皆さんだったらどうしますか?

267 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 18:00:13 ]
クリリポ、Active Reports、iText あたり。

268 名前:258 [2009/06/28(日) 18:09:14 ]
Oracleクライアントはインストールされているのですが、
未だに上手くいきません。

269 名前:266 [2009/06/28(日) 18:10:13 ]
ActiveReoprts良さそうなんですが会社で買うことが出来ないので
無料ツールはありませんか?

270 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 18:14:35 ]
どうもこうもPrintDocumentでガシガシ書くだけだわな

271 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 18:15:41 ]
つーかこのage厨は…



272 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 18:21:47 ]
>>268
アプリの web.config はどうなってんの?

273 名前:258 mailto:sage [2009/06/28(日) 18:28:44 ]
>>268
すみません。
「どうなってんの?」というのは具体的にどの部分のことを指しているのでしょうか?

274 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 18:32:13 ]
つーか、参照設定がおかしいんじゃね? って言われてるんだから、
そこを調べろよ。

275 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 18:38:01 ]
まぁ、どうやって調べたらいいんですか? とかだろうなw

276 名前:258 mailto:sage [2009/06/28(日) 18:44:03 ]
>>274
参照設定は既に設定済みです。
「.NET」タブから一覧を表示させ、
「Oracle.DataAccess」が追加されています。

277 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 18:46:11 ]
それは開発環境の話だろ・・・

278 名前:258 mailto:sage [2009/06/28(日) 18:56:37 ]
>>277
すみません。
勘違いしておりました。
どの箇所の参照設定なのか教えて頂けますでしょうか?

279 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 19:14:42 ]
ここで質問したからには、
他コミュで質問できないからな?
某掲示板や某フォーラムなどですると
「マルチ禁止!」のレスがつくからな
気をつけろよ・・・



280 名前:266 mailto:sage [2009/06/28(日) 19:59:32 ]
PrintDocumentとCrystalReportはどちらの方がおすすめですか?
今回私の作りたいのは、1週間のスケジュール表になります。
日ごとに四角の枠を配置し、その中にその日の予定をテーブルから
書き出すことになります。
CrystalReportでとりあえず作ってみたものの、印刷プレビューで表示
すると実際の配置とかなりずれて表示されるので、本当に実現できるのか
不安になってきました。
予定表のテーブルから日をキーにしてレコードを取得後、日(曜日)ごとにDataSetを
作成してデータを突っ込んでます。
1週間分なので曜日のDatasetが7個できる形になります。
それをCrystalReportに渡して、曜日ごとの枠に収まるようにレコードを入れていきたい
のですが、全然綺麗に配置出来ないし、途方も無い作業でへこんでます。
だからといって皆さんに愚痴ってもしょうがないんですが、あまりにもレポート機能が
しょぼすぎて、ACCESSよりも劣ってるなんて残念でしょうがないです。
基本的にやり方としては間違ってないですか?

281 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 20:11:56 ]
ある程度フォーマットが決まってるならクリリポ。
変なフォーマットなら、自由度の高い PrintDocument だな。



282 名前:266 mailto:sage [2009/06/28(日) 20:14:30 ]
>>281
PrintDocument使うって事は、コードのみで書いていくんですよね・・・
例えば、エクセルで作るような表(網掛けなど)も可能ですか?

283 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 20:17:10 ]
Box の塗りつぶしでできるレベルだな。

つーか、Access がいい、っていうなら、Access でやれよ。

284 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 20:29:01 ]
>>278
Web.configにいろんなDLLの参照設定が書かれてないか?
それとサーバにODP.NETはインストールしてるのか?


285 名前:266 mailto:sage [2009/06/28(日) 20:36:31 ]
>>283
会社でVB.NETで作るっていることに決まったんで、
ACCESSで作る事ができません・・・

286 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 20:43:33 ]
だったら文句言わずにやれよ。
文句言うくらいなら、会社のやつらを説得すればいい。

287 名前:266 mailto:sage [2009/06/28(日) 21:01:55 ]
>>286
はぁ?CrystalReportで作ってるってさっきから言ってるだろう。

288 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 21:08:20 ]
じゃ、Crystal Reports スレでも行けよ。スレ違いだから。

289 名前:266 mailto:sage [2009/06/28(日) 23:04:43 ]
こりゃしっけいいたしました

290 名前:266 mailto:sage [2009/06/28(日) 23:13:36 ]
ってCrystalReportすれないじゃないか。騙された。

291 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 12:18:06 ]
先生方〜馬鹿な私にアドバイスをください orz

VC++2008のWin32プロジェクトで開発した共有メモリのDLLを
VB.net2008から呼び出すプログラムを製作しています。

DLL内部で保持している構造体を参照渡しして共有する仕組みです。
ですが、下記記述だと構造体内部の配列(stSub1〜3)が
Nothingの状態になったままです。VB初心者の私にアドバイスをお願いします
ちなみにOSはWinXPです。よろしくお願いします。

※記述は改行数の関係上、次の書き込みに書きます



292 名前:291 mailto:sage [2009/06/29(月) 12:19:57 ]
続き(2/3)
見づらいと思いますがご了承ください orz 
------------------------
VC++記述
------------------------
typedef struct
{
short s1;
short s2;
}ST_SUB;
typedef struct
{
ST_SUB stSub1[10];
ST_SUB stSub2[10];
ST_SUB stSub3[10];
}ST_AREA;
DLL関数:HANDLE MemOpen(PVOID* Address)


293 名前:291 mailto:sage [2009/06/29(月) 12:22:28 ]
------------------------
VB記述 抜粋
------------------------
Public Structure ST_AREA
Dim s1 As Short
Dim s2 As Short
End Structure
Public Structure ST_AREA
Dim stSub1() As ST_SUB
Dim stSub2() As ST_SUB
Dim stSub3() As ST_SUB
End Structure

Public stArea As ST_AREA
Declare Function MemOpen Lib "xx.dll" (<MarshalAs(UnmanagedType.Struct)> ByRef Address As ST_AREA) As Integer

Private Sub BtnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOpen.Click
Dim iRes As Integer
iRes = MemOpen(stArea)
End Sub

294 名前:291 mailto:sage [2009/06/29(月) 13:05:52 ]
293のPublic Structureは
ST_AREAじゃなくST_SUBだった o..rz


295 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 13:37:07 ]
MSDNのアンマネージ コードとの相互運用の中にあるサンプルみれ

296 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 21:11:52 ]
そもそも違うプログラム同士で、変数の値などを共有(メモリの共有)をするにはどうしたらいいんでしょうか?
どこかに解説サイトないでしょうか

297 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 22:55:08 ]
つーか、宣言が全然おかしいじゃん。

メモリマップドファイルとか、プロセス間通信系かな。>共有

298 名前:291 mailto:sage [2009/06/30(火) 09:34:04 ]
>>295
ありがとです。
PVOID*なのでクラスにしてちと試してみます

>>296
C++ならCreateFileMappingとかあるみたいですよ。
ほかの言語はわかりません。


299 名前:291 mailto:sage [2009/06/30(火) 10:34:29 ]
連続申し訳ないです。。。

C言語なら

ST_AREA *pStArea
MemOpen(&pStArea);
pStArea->stSub1[3].s2 = 10;

とかやれば直接書き込みできるのに
VBってこういうことできないんですか?

IntPtrのようなもので受け取らないとだめですかね?

300 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 10:52:14 ]
つ「構造体のサンプル」

301 名前:291 mailto:sage [2009/06/30(火) 13:51:15 ]
>>300
先生ありがと!

サンプルを元にやってみたけど
他アプリから値を変えても値が変わらない。。。
値渡しになってる?
Public Structure ST_SUB
Public s1 As Short
Public s2 As Short
End Structure
<StructLayout(LayoutKind.Sequential)> _
Public Class ST_AREA
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=10)> _
Public stSub1 As ST_SUB()
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=10)> _
Public stSub2 As ST_SUB()
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=10)> _
Public stSub3 As ST_SUB()
End Structure

Public stArea As ST_AREA
Declare Function MemOpen Lib "xx.dll" (<MarshalAs(UnmanagedType.Struct)> ByRef Address As ST_AREA) As Integer

Private Sub BtnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOpen.Click
Dim iRes As Integer
iRes = MemOpen(stArea)
End Sub



302 名前:291 mailto:sage [2009/06/30(火) 13:54:35 ]
End StructureじゃなくてEnd Classだ o...rz

Openしたときは最後に書き込んだ値が取れます。
VB側から書き込んでも相手の値は変わらず。。。

303 名前:291 mailto:sage [2009/06/30(火) 16:17:43 ]
お、落ち着くんだ私。

Declare Function MemOpen Lib "xx.dll" (ByRef Address As ST_AREA) As Integer
だな。

Cで書かれてるDLLの引数の型がPVOID*だから構造体でなくクラスで合ってると思うけど
オープンした時のみ値が取得できる状況です。。。

助けてティーチャー orz

304 名前:デフォルトの名無しさん [2009/06/30(火) 16:31:44 ]
ByValArrayは構造体専用
構造体にしてByRef IntPtrで受けるか、配列の要素を全部フィールドに展開するか

305 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 02:11:46 ]
DataSetてどういう場合に使用するものなのでしょうか?
mdbファイルにadoを使いデータを抽出(SQL文を使用)
この抽出結果を一時的に保管しておく器とかに使うものなのでしょうか?

306 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 07:34:02 ]
>>303
> Cで書かれてるDLLの引数の型がPVOID*だから構造体でなくクラスで合ってると思うけど

意味がわからん。P/Invoke のサンプルからやり直せ


307 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 07:34:13 ]
>>305
そんな感じ。

308 名前:デフォルトの名無しさん [2009/07/01(水) 10:02:21 ]
>>306
ポインタへのポインタが必要だから参照型(構造体ではなくクラス)の参照渡しにすればいいんだよ
理屈は間違ってない

309 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 10:39:35 ]
>>305
SQLでの問合せの結果(複数行)をとっとくのがDataTable、
DataSet は DataTable のコレクション+αの機能。

310 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 10:41:48 ]
>>308
すごく…おかしいです。

311 名前:デフォルトの名無しさん [2009/07/01(水) 10:57:19 ]
おかしいも何も、MSDNに書いてある



312 名前:291 mailto:sage [2009/07/01(水) 11:26:45 ]
>>308さんのおっしゃるとおり
ttp://msdn.microsoft.com/ja-jp/library/awbckfbz(VS.80).aspx
上記サイトの
アンマネージ シグネチャ  マネージ宣言 1 レベルの間接参照 class MyStruct(…);
DoWork(MyStruct** x);   DoWork(ByRef x As MyStruct)
部分をみて構造体ではなくクラスにしないといけないのかなと判断してます
解釈が間違ってますかね?

>>304さん
>構造体にしてByRef IntPtrで受けるか
この意味が私の考えで合っているのかわかりませんが、
IntPtr型でポインターのアドレスを受け取り
構造体にキャストして割り当てるということなのでしょうか?

それとは別に、クラスにしてByValArray以外の方法(参照渡しができる方法)で
配列を作って引数に渡すことができればなぁと考えています。

考え方がC言語に偏っているので変なことを言ってるかもしれませんが
先生方、どうか温かい目でアドバイスをお願いします m(_ _)m

313 名前:デフォルトの名無しさん [2009/07/01(水) 11:40:47 ]
クラスなら配列の要素と同じ数だけフィールド並べるしかないんじゃないの

314 名前:デフォルトの名無しさん [2009/07/01(水) 11:56:18 ]
構造体として定義して、その配列を参照渡し(ByRef)してみるのはどうだろう
でも配列渡すならアドレス固定しないといけないから、IntPtrで受けてMarshal.PtrToStructureの方がまだ簡単確実

315 名前:314 [2009/07/01(水) 12:03:44 ]
アドレス固定したら結局IntPtrで渡すことになるな
一行目撤回

316 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 13:12:57 ]
>>299
>VBってこういうことできないんですか?
P/Invoke で外部関数呼び出し時には引数の変換がされるが、それ以外のタイミングで
Managed なコードから Unmanaged な領域を弄る簡単な方法はない。
おとなしく Marshal の共有メソッド (Read〜/Write〜等) に IntPtr を渡す方法を試せ。

317 名前:デフォルトの名無しさん [2009/07/01(水) 13:14:58 ]
やっと理解できた
VBのメンバを通してC側に直接書き込もうとしてたのか
マーシャリングでは無理だ
VBでは構造体も使えない
IntPtrで受けてMarshal.WriteByteでも使って直接書き込むしかない

318 名前:291 mailto:sage [2009/07/01(水) 15:41:43 ]
先生方いろいろとありがとうございました。
以下のように落ち着きました(ST_SUBは以前のまま)
Public Structure ST_AREA
Puclic BaseAddr As IntPtr
Default Public Property stSub1(ByVal index As Integer) As ST_SUB
Get
Dim Offset As Integer = index * Marshal.SizeOf(GetType(ST_SUB))
Return CType(Marshal.PtrToStructure(BaseAddr, GetType(ST_SUB)), ST_SUB)
End Get
Set(ByVal value As ST_SUB) ' indexのサイズ超えは省略
Dim Offset As Integer = index * Marshal.SizeOf(GetType(RDS_DATA_AREA))
Marshal.WriteInt16(BaseAddr, Offset, CType(value.s1, Short)) ' ここをまとめたい
Marshal.WriteInt16(BaseAddr, Offset + Marshal.SizeOf(value.s1), CType(value.s2, Short)) ' まとめたいよ
End Set
End Property 'stSub2 と stSub3 も同様 オフセットを間違えないように!!
End Structure
Public stArea As ST_AREA
Declare Function MemOpen Lib "xx.dll" (ByRef Address As IntPtr) As Integer
Private Sub BtnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOpen.Click
Dim iRes As Integer = MemOpen(stArea.BaseAddr)
stArea.s1 = 10 'テストですよ
End Sub
SetのWriteInt16を一行にまとめたいとこですが思いつかなかったのでこんなです。
相手側アプリとの確認も取れました。VBむずかしいです orz
ありがとうございました〜

319 名前:291 mailto:sage [2009/07/01(水) 16:00:09 ]
XXX = stArea.s1
はできたけど
stArea.s1 = 10
はできてなかったorz
まぁでも何とかなりそうです^o^

320 名前:デフォルトの名無しさん [2009/07/03(金) 20:13:21 ]
XmlDocumentのSaveメソッドで「'」を「'」として書き出す方法ってないのかな?


321 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 20:51:09 ]
ウィンドウと内部処理(DLL)を別のプロジェクトで作成しました。
質問は、DLLからFormに張ってあるコントロールのプロパティを変更する方法です。
Labelの文字を変える程度でいいのですが。

よろしくお願いします




322 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 21:19:41 ]
>>321
フォームから DLL にコントロールの参照を渡してやれば OK

323 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 22:15:41 ]
VS2005です

ユーザーコントロールにDataGridViewを貼り付けてColumnを2つ追加しました
これにイベントハンドラを記述するとユーザーコントロールのコンパイルは通りますが
コントロールの読み込み時にエラーが発生します

'RowsAddedイベントハンドラ
Private Sub DataGridView1_RowsAdded(ByVal sender As Object, _
ByVal e As DataGridViewRowsAddedEventArgs) _
Handles DataGridView1.RowsAdded
DataGridView1.Sort(DataGridView1.Columns(1), ListSortDirection.Descending)
End Sub

列のSortModeがNotSortableに設定されているとき
列ヘッダーのSortGlyphDirectionをDesendingに設定することはできません
というエラーが出てるようですが、プロパティではSortModeはAutomaticになってます

ほわい?

324 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 22:28:19 ]
なってます、ってどうやって確認したの?

325 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 22:34:02 ]
>>324
ありがとうございます。
DataGridviewの設定はすべてデザイナでやってますので

326 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 22:37:02 ]
改行したら送信してしまいました
つづきです

デザイナでやってて、Columnもデザイナであらかじめ追加してます
デザイナ上でのプロパティではAutomaticになっております

327 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 22:47:38 ]
とりあえず、デザイナで設定したプロパティは忘れて、

'RowsAddedイベントハンドラ
Private Sub DataGridView1_RowsAdded(ByVal sender As Object, _
ByVal e As DataGridViewRowsAddedEventArgs) _
Handles DataGridView1.RowsAdded
If ...SortMode <> NotSortable Then
 DataGridView1.Sort(DataGridView1.Columns(1), ListSortDirection.Descending)
End If
End Sub

みたいにしてみるとか、エラーが出たときにウォッチしてみるとか、
その辺で確認してみたら?

328 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 23:07:50 ]
了解っす

329 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 00:02:23 ]
うまく行きました!
データがない状態の時NotSortableになってんのかな?
ありがとうございました

330 名前:デフォルトの名無しさん [2009/07/04(土) 00:19:06 ]
>>320
そんなに大きくないならStringWriterで文字列に書き出して置換すれば

331 名前:デフォルトの名無しさん [2009/07/05(日) 14:28:39 ]
DataGridViewにdataset内部でリレーションシップを設定したTableA TableBのフィールドを表示したいんです

TableAとTableBは1対多結合になります
フィールドは同一のDataGridViewで表示したい
TaleBを連結したDataGridViewに非連結列を追加してTableAのフィールドを検索して貼り付けることはできそうですが
なんかデザイングリッド上でぱぱっとやれそうな気がしておたずねしました

何とぞよろしくお願いいたします



332 名前:デフォルトの名無しさん [2009/07/05(日) 15:31:23 ]
ググっても見つからないので質問させてください。
Textboxに入力されたデータから特定の行(ex:15行目から20行目)だけを取り出したいのですが、何か方法はないでしょうか?
よろしくお願いします。

333 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 15:36:17 ]
>>332
どう検索したのか興味がある

Linesから適当に取得すればいいっしょ

334 名前:デフォルトの名無しさん [2009/07/05(日) 15:50:04 ]
>>333
初心者故に文字列の取得方法が分かりません。
申し訳ないです。

335 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 16:16:51 ]
答え出てるじゃんw

336 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 16:18:49 ]
DataGridViewをほぼ同じような表な形で印刷したいのですが、自分でライン書いて表の中のデータを書くというっ事をしなければならないんでしょうか?
DataGridviewをそっくりそのままの形のレイアウトで印刷してくれるようなもっと簡単なのがあってもよさそうなのですが・・・

337 名前:デフォルトの名無しさん [2009/07/05(日) 16:22:09 ]
>>335
すいません、Linesはどのように扱えばいいのでしょうか

338 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 16:24:10 ]
表形式で出力できるレポートツールを使う、ってのが一般的かね。

おれはグリッドそのまま出せてもなんもうれしくないから、必要性を感じないな。

339 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 16:28:42 ]
>>337
msdn.microsoft.com/ja-jp/library/system.windows.forms.textboxbase.lines.aspx

↑を見て、何がわからないのかきちんと説明しろ。

340 名前:デフォルトの名無しさん [2009/07/05(日) 16:54:21 ]
>>339
ごめんなさい
これを別のTextboxに出力させる方法が分かりません。

Dim counter as Integer
'Create a string array and store the contents of the Lines property.
Dim tempArray() as String
tempArray = textBox1.Lines

'Loop through the array and send the contents of the array to debug window.
For counter = 0 to tempArray.GetUpperBound(0)
System.Diagnostics.Debug.WriteLine( tempArray(counter) )
Next

341 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 16:54:58 ]
Form右上の×ボタン押したときに終了するか確認メッセージ出して、
終了の場合は閉じるようにしたいんですが、closingイベント以外で実装
はできませんか?
今やりたい事は、フォームA→フォームBを呼び出してそこから終了
した場合、上記の確認メッセージを表示して両方のフォームが落ちるようにしたいです。
フォームBを×ボタンで閉じる動作を行うとフォームAをcloseという処理を走らせたい
のですが、フォームAにも上記のclosingイベントを実装する為
フォームB終了確認メッセージ後に、フォームAの終了確認メッセージが表示されてしまいます。
closingイベント内でフラグ立てて回避出来るかなと思ったら、無限ループに陥ってしまい無理でした。
どのような解決方法があるか教えていただけると幸いです。
よろしくお願いいたします。



342 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:19:49 ]
FormB : FormClosingでキャンセルかどうか決める
FormA : FormBのFormClosedで自分をCloseする
    FormClosingでFormBが閉じられたときに呼び出された場合確認ダイアログを出さない

343 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:20:14 ]
>>341
> Form右上の×ボタン押したときに終了するか確認メッセージ出して、
> 終了の場合は閉じるようにしたいんですが、closingイベント以外で実装
> はできませんか?

できない。

> 今やりたい事は、フォームA→フォームBを呼び出してそこから終了
> した場合、上記の確認メッセージを表示して両方のフォームが落ちるようにしたいです。
> フォームBを×ボタンで閉じる動作を行うとフォームAをcloseという処理を走らせたい

Closing イベントで閉じられる理由を確認すればいいんじゃね?

344 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:21:03 ]
>>340
ってことは、取得する方法はわかったわけだ。

設定したいなら、「別のTextBox.Text = 取得した値」でOK。

345 名前:デフォルトの名無しさん [2009/07/05(日) 17:27:40 ]
>>331ですけど
ソースコードでテーブルをもう一つ作ってマージするって方法は見つけました

それが正解でしょうか?

コーディングなしで2つのDataGridViewで親子テーブルを作る例はいっぱいありましたが
それを単一のDataGridViewで表示するのって逆に難しいんですね

346 名前:デフォルトの名無しさん [2009/07/05(日) 17:37:31 ]
>>344
Dim counter As Integer
Dim tempArray() As String
  tempArray = textBox1.Lines

For counter = 0 To tempArray.GetUpperBound(0)
TextBox2.Text = tempArray(counter)
Next

こういうことでしょうか?
行数はFor counter = 0 To tempArray.GetUpperBound(0)の数値をいじればいいのですよね?

347 名前:341 mailto:sage [2009/07/05(日) 17:58:28 ]
FormBの処理
FormB Closingイベントで確認ダイアログ表示
NOを返す→e.cancel=true (これでキャンセル)
YESを返す→FlgをtrueにしてFormA.close

FormA
上記のFormA.closeによって、FormAのClosingイベントが呼び出される。
FlgがTrueの場合、Closingイベント内の確認ダイアログはスルー。

私としては、上記の内容でいけると思ってたんですが、
FormA.Closeを実施のところで、何度も確認ダイアログが表示され
無限ループに陥っているようでした。

また、FormBのclosingイベント内に確認ダイアログをもうけないで
FormA.closeのみおいてみると何故か無限ループでエラーが出てしまいます。
その際、FormAにはClosingイベントはおいてません。
どなたか理由がわかる方いませんか?

348 名前:336 mailto:sage [2009/07/05(日) 18:18:31 ]
>>338
>表形式で出力できるレポートツール
とは、どういうものなのでしょうか?

クリスタルレポートとかそういうものですか?
私は今、Vb2008を使ってるんですが、コントロールの一覧の中にCrystalreportがないのですが、なにか設定がいるんですかね

349 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 18:44:20 ]
>>346
取得する行が決まってるなら、ループで回す必要はない

>>347
わかりづらいから、きちっとコード出してみ?

>>348
おまえさんの言うとおり、クリスタルレポートとか。
Edition によっては含まれてないんじゃない?

350 名前:デフォルトの名無しさん [2009/07/05(日) 19:45:30 ]
>>349
できました
ありがとうございます。

351 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 20:33:55 ]
初期画面をログイン画面にしたいのですが、ログイン成功時にログイン画面をクローズして別フォームを表示したらフォームが全て落ちます。助けて下さい。



352 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 20:48:35 ]
別フォームを表示してからログイン画面をクローズする
sub mainからログイン画面を表示する

353 名前:336 mailto:sage [2009/07/05(日) 23:12:53 ]
>>349
Express Editionなんですが、クリスタルレポートは追加できないんでしょうか?

354 名前:351 [2009/07/05(日) 23:20:33 ]
>>352
メイン画面をログイン画面に設定したらログイン画面落とした時点で
ほかのフォームも全て落ちちゃうんですよね。

355 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 23:22:20 ]
>>353
www.microsoft.com/japan/msdn/vstudio/products/compare/default.aspx

ダメだね。

356 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 23:36:56 ]
>>354
ログインをメインにするから不味い、ってことだろ。

357 名前:デフォルトの名無しさん [2009/07/06(月) 01:28:08 ]
>>331ですが、データソースを見るとリレーションが効いて
親テーブルの下に子テーブルが見えてるんですが

こいつをDataGridViewの単一テーブル上に展開できません

tableA
fieldID
fieldA
tableB
fieldID
fieldB

fieldID fieldA fieldB のような表現をしたいのですが・・・やはり無理でしょうか?

358 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 02:13:56 ]
表示用に列一つ追加してExpression使うのが一番楽かな

359 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 02:24:49 ]
あ、DataColumn.Expressionな

360 名前:デフォルトの名無しさん [2009/07/06(月) 10:10:53 ]
>>358
やっぱりそうですか
誰かに言って貰わないと楽ちんな方法を知らずに回り道してるんじゃないかと心配で
先に進めないもので・・・

ありがとうございました

361 名前:デフォルトの名無しさん [2009/07/06(月) 11:56:20 ]
>>331
たびたびすみません。

datasetのデザイナで子テーブルにフィールドを追加しフィールドプロパティのExpressionに
TableA.FieldAを設定すると
リレーションシップ0が見あたりません
そこで
parent(リレーションシップ名).FiedlAを設定すると
リレーションシップ名が見あたりません

となります。datasetデザイナ上では確かにリレーションシップを設定してその名前をコピペしてるので間違いないと思うのですが

もしかしてコード上で設定しないといけないのでしょうか?



362 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 12:14:49 ]
Expression設定してるところでブレークポイント設定して確認すれ

363 名前:デフォルトの名無しさん [2009/07/06(月) 13:05:59 ]
>>362
datasetデザイナ上でプロパティを設定してるだけなので・・・・

よっぽどまぬけなことをやってるのかググっても該当するものは出てこず・・・

orz






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

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

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