1 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 10:00:19 ] 前スレ VB.NET質問スレ(Part29) pc12.2ch.net/test/read.cgi/tech/1235206416/l50 テンプレは>>2 〜
252 名前:225 [2009/06/27(土) 08:11:33 ] 皆さん、教えていただきありがとうございました。 DBの設計を見直した方が良かったのですが、時間的な関係で今回はこのまま行く 事になりました。 結局プログラムでレコード1件ずつ読み込んで、指定日付の月、日に 対応するフィールドそれぞれのデータがtrueなら取得。 取得したデータを別テーブルに追加していってスケジュール表を作りました。 申し訳ないのですが、別のことでもう少し教えて頂きたい事があります。 スケジュール表を更新した日付等、ちょっとした情報を保存しておきたいのですが、 その為だけにわざわざ新しいテーブルを作るっていうのはおかしいですか? 保存しておきたい情報としては、更新日付、いつから〜いつまでのデータを スケジュール表に取得しているかという情報くらいです。 スケジュール表は3種類あるので保存するレコード数は3件以上には絶対にならないので たった3件の情報の為だけのテーブル作るっていうのは、変なのかなと思いまして 皆さんのご意見をいただけたらと思います。 お願いします。
253 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 11:14:59 ] DBを使うのはやめてOSファイルに書き出すのはどうだろう。 DataSetに全部突っ込んでテキスト(XML)で保存するのもいいアイデアだと思う。
254 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 12:59:33 ] いい加減、VB.NET関係ない話は該当するスレ(板)で聞け
255 名前:225 [2009/06/27(土) 15:13:48 ] >>254 VB.NETで作ってるので、関係ないとは一概に言えないと思います。
256 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 15:30:58 ] 関係ないだろ。
257 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 13:18:40 ] >>252 書いてあることだけみると、他の人のアドバイスを元にDBから作り直せば3時間くらいで作れそうな気がするんだけど、 それでも「時間的な関係で」って結局そのままつくり続けるならここで聞く意味ないんじゃないか? とりあえず更新日付等の情報を保存するためにテーブルを作るのは別に問題ないと思うけど、その程度の情報なら、 更新が起きたときにそのテーブルのレコードをUPDATEするんじゃなくて、INSERTしてログ的な使い方のほうが、そのデータをほしいって言った人の要求に近いんじゃないか。 更新対象のスケジュール日付、更新した人、作業内容(追加、修正、削除等)、更新日 みたいな感じのログにしておけば当面の要求はこなせると思う。 毎月1日実行のスケジュールを追加したら12個ログができるような感じで。 業務スケジュールっていうことだし、多分そんな頻繁に変更がないから、容量もそんなにくわないと思う。
258 名前:デフォルトの名無しさん [2009/06/28(日) 15:03:59 ] 質問させてください。 vb.netで開発したwebサイトを実行環境から確認しようと IISを利用してアクセスしたのですが、 以下のようなエラーが出てしまいました。 BC40056: インポート 'Oracle.DataAccess.Client' で指定された名前空間または型が、 パブリック メンバを含んでいないか、または見つかりません。 名前空間または型が定義されていて、 少なくとも 1 つのパブリック メンバを含んでいることを確認してください。 また、インポートされた要素名がエイリアスを使用していないことを確認してください。 開発環境からは正常に実行できていたのですが、 実行環境からだとこのようなエラーが出てしまい困っています。 どなたか助けてください。 使用しているソフト等 windows xp VWD ODBC ODP.NET Oracle11g
259 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 15:07:36 ] machine.config か web.config に参照設定を記述しろ、ってなかったか?
260 名前:258 [2009/06/28(日) 15:20:02 ] >>259 「参照設定を記述しろ」っていう表示はどこにもなかったです。
261 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 16:03:09 ] otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/win.111/E05791-01/featConfig.htm とかは違う? IIS への発行はどうやったの? 実行環境に、Oracle のクライアントはインストールしてある?
262 名前:258 [2009/06/28(日) 16:17:05 ] >>261 IISへの発行は、コントロールパネルの「プログラムの追加と削除」→「コンポーネントの追加」からIISを追加して、 ネット検索を経て、設定を済ませました。 < ローカルホスト> でIISが表示されるようになっています。 OracleDBサーバーと、実行環境が同じPC上で行われています。 Oracle11gがインストールされているPCなので、 Oracleクライアントは必要ないかと判断しました。 また、リンク先のページを拝見しましたが、いまいち理解ができません;
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からログイン画面を表示する