[表示 : 全て 最新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

477 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 04:27:31 ]
ガベコレが起きるまでリソースが解放されない。

まあほっといても、いつかはガベコレがリソースを解放してくれるわけですがね。
普通、Formが抱えてるリソースなんて、そんな多くないと思うし。
背景画像とか?

478 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 04:36:31 ]
ダイアログフォームと非表示のMDI子フォームでない普通のモーダレスフォームなら、
CloseでDisposeされる。
この辺の動作はややこしいんでMSDNをよく見たほうがいい。

479 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 16:45:20 ]
>>472
フォーム毎にexeを分けることで、業務が稼動中でもアプリを終了させずに
アップデートや不具合対応が出来るからとかなんとかで、そんな話もありました。

480 名前:デフォルトの名無しさん [2009/07/12(日) 18:05:45 ]
それなら共通部分をDLLに括りだすこともソース単位で共有することもできないよね?
コピペコードだらけになるんだろうな

481 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 18:37:02 ]
今までVB6を使っていて、Visual Studio 2008に最近切り替えたのですが、
WinSockが見当たらなくなりました。
ひょっとして何か別のコントロールに変わってしまったのですか?

482 名前:デフォルトの名無しさん [2009/07/12(日) 18:41:09 ]
コントロールなんかない
System.NET名前空間やSystem.NET.Sockets名前空間にあるクラスを使う

483 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 19:08:32 ]
>>480
リンクとして参照すれば共有できるよ。

484 名前:デフォルトの名無しさん [2009/07/12(日) 19:16:37 ]
それで>>429に対応しようとするとバージョン管理が大変すぎるだろ

485 名前:484 mailto:sage [2009/07/12(日) 19:22:33 ]
>>479の間違い



486 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 19:27:41 ]
>>482
レスありがとうございます。
System.NET名前空間やSystem.NET.Sockets名前空間について調べてみましたが、
具体的な使い方がよくわかりませんでした。
プロジェクト→クラスでの追加したうえで、Socketを利用する、ということですか?

487 名前:デフォルトの名無しさん [2009/07/12(日) 19:32:48 ]
必要なクラスのインスタンスを作って使う
これだけでわからなないなら、オブジェクト指向を勉強しろとしか言いようがない

488 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 23:48:15 ]
DBの接続先をウィザードを使って設定したのですが、
なんらかの不具合が発生してDBに接続が出来なかった場合に
エラーを返すような処理を作りたいです。
例えばDBに接続するところにtyr〜catch文を入れようと思うんですが、
自動で作られている部分の為、どこにあるかわかりませんでした。
どのあたりで、DBに接続している処理が記述されているのでしょうか?

489 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 00:01:58 ]
>>488
メニューの[デバッグ]-[ステップ イン]で見ていけばわかるんじゃね

490 名前:488 mailto:sage [2009/07/13(月) 00:16:19 ]
>>489
ちょっと試してみます。
ちなみに自動で作られた処理の部分を書き換えるのって
問題ないですよね?

491 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 00:39:31 ]
文字列の中から特定の文字列がいくつあるか数える関数を教えて

492 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 02:17:12 ]
>>491
正規表現で探し出して、カウントする変数をインクリメントすりゃいい

493 名前:デフォルトの名無しさん [2009/07/13(月) 07:52:53 BE:1857300285-2BP(0)]
VB初心者です。
VisualStudio2005 VBにて開発を行っています。

先輩のソースに似せようとしているのですが、
処理の起動方法がわからなくて困ってます。

フォームありのソリューションにて、下記のフォーム起動方法を
Public Class Program
<STAThread()> _
Shared Sub Main(ByVal CmdArgs() As String)
・・・・
  Application.Run(New ClassName(param))
  ・・・・
  end sub
end class

Public Class ClassName
Public Sub New(ByVal param As string)
処理
End Sub
End Class

consoleのソリューションにて、
Application.Runに替わる関数を見つけられません。
同じように実行するにはどうしたらいいのでしょうか?


494 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 10:11:09 ]
>>493
Application.Run() は MSDN にも
「アプリケーション メッセージ ループの実行を開始する」
と書かれているように、イベント・ドリブンなアプリケーションのときに使うもの。
コンソールアプリなら、その Main の中に必要な処理を書けばよい。

495 名前:デフォルトの名無しさん [2009/07/13(月) 10:38:03 ]
現在、.NETアプリケーションでWebBrowserコントロールにおいて
フォルダのExplorer表示を出しています。そうすると必ずあの青色の
「タスクメニュー」が現れてきます。これを消す方法を探しています。

C#, C♯, C#相談室 Part53
pc12.2ch.net/test/read.cgi/tech/1245150671/199

にて質問してはおりましたものの回答得られませんでした。もし方法ご存知
の方おられましたら、ご指導のほど何卒よろしくお願いします。




496 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 11:01:21 ]
>>480
DLLは使わずに、共通部分のソースファイルを共有してた。
それを修正するとかは出来ない決まりになってた。

>>484
バージョン管理は大変だったと思う。
担当したのが一部のフォーム(exe)だったから
出来上がったら渡すだけだったしね。

497 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 11:12:53 ]
VB6の頃そのままのやり方を続けてることがあるよね。
システムハンガリアンを使わされるのはつらいよぉ。

498 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 21:10:40 ]
>>495
知らんけど、BHO とか使わないと無理じゃね?

499 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 21:26:54 ]
ハンガリアンってコントロール名に使ってもよろしくないの?
btnとかtxtとかlblとか
未だに使ってるんだけれども…

ダメなら初心者の内に勉強しなおしたい

500 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 21:29:32 ]
別にOK

501 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 03:34:45 ]
btnやtxtはアプリケーション的に意味があるからOK。
最近だと入力支援があるうえ画面も広いからbuttonHoge, fugaTextと
コントロール名をそのままくっつけることも多い。
無意味なのはクラスのインスタンスにclsHoge, objFugaと名前をつけることだな。

502 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 09:23:22 ]
まあ実際は仕事だと変な規則のまま
伝統みたいになってるところが多いよなあ

503 名前:453 [2009/07/14(火) 17:07:24 ]
遅くなりましたが、ICloneable.Clone で試作してみました。
ディープコピーするには、
a = b.CloneCopy()
みたいに、クローンを作成して代入しかないんですね。
結局、ディープコピーの方法を用意してあげても
a = b
が、禁止できない以上、バグの温床になりそうです。

なぜ、VBは代入演算子のオーバロードができないんだ。使えない。



504 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 17:07:55 ]
System.IO.Directory.Delete(currentfolder)
If System.IO.Directory.GetDirectories(parentfolder).Length = 0 Then
  System.IO.Directory.Delete(parentfolder)
End If

というように空になったら親フォルダをも削除したいのですが
ときどき空になっても空と認識しない場合があります。
フォルダの削除が終わるのを待機するにはどうしたらいいでしょうか?


505 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 17:24:56 ]
>>503
代入先の変数の型で代入の動作が変わる方がよっぽどバグの温床だろjk



506 名前:453 [2009/07/14(火) 17:37:59 ]
>>505
喧嘩をするつもりはないですが、
この型は、a = b でもいいけれど、
こっちの型は、a = b はダメ!
というのも、実際のところ運用が難しいなと思っただけです。
ようするに、参照型を含む構造体は作るなということですね。

507 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 19:34:59 ]
> ようするに、参照型を含む構造体は作るなということですね。
何の関係もない
まあ>>500が考える構造体と.NETが想定してる値型は別物なんだろう

508 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 20:28:10 ]
構造体もインターフェースの実装ができるのだから、
素直にICloneableを実装すればいい。

509 名前:デフォルトの名無しさん [2009/07/14(火) 21:05:06 ]
まあCloneが必要になるなら、多くの場合、構造体を使う意味がない
(使うべきでない)
クラスを使うべき

510 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:10:19 ]
ICloneable.Clone()はobject型だからboxingが発生しちゃうんだよね。
C++などで構造体を使うケースは、まずクラスを使うものだと思って間違いない。

511 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:26:00 ]
せめてクラス/構造体ではなくC++/CLIみたいに参照型/値型って命名だったら…
453には無力だけど勘違いは多少減ったかも知れない

512 名前:デフォルトの名無しさん [2009/07/14(火) 21:26:01 ]
>>506の指摘はあながち的外れではないわな
構造体を使うのが間違ってる
もともと参照型なら問題にならない

513 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:29:37 ]
vb.netではC言語で言うところのポインタはないのですか?
名前が違うだけで中身が同じ構造体を処理したいんだけど。

514 名前:デフォルトの名無しさん [2009/07/14(火) 21:32:07 ]
>>511
C++/CLIでは参照クラス/値クラスだよ
参照型/値型とクラス/値型は意味が違う

>>513
参照型
クラス

515 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:37:28 ]
C++/CLIのは文書で説明してもややこしいだけだな。
参照型 ref class/ref struct
値型   value class/value struct
classとstructの違いはメンバーのスコープのデフォルトがprivateかpublicかの違いだけ。

値型はユーザー定義(構造を持った)値型とプリミティブ(基本)型の2つ。



516 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:41:47 ]
>>513
ない

517 名前:デフォルトの名無しさん [2009/07/14(火) 21:42:51 ]
enum classも忘れないであげてください
プリミティブ型というとプリミティブ型も構造体だろとか言う奴がでてきそうだが
.NETではプリミティブ型は実際に存在する
型情報を擬装してるだけ

518 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:43:11 ]
C++/CLI持ち出すんだからそれは当然知ってる
VBが参照型と値型をわけるのにClass/Structureってキーワードを使ったのが残念だったという話

>>513
そんな古くさいことは古くさい言語でやってれば十分です、みたいな

519 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:46:00 ]
そういえばVBにはunsafeはなかったね。

520 名前:デフォルトの名無しさん [2009/07/14(火) 22:10:11 ]
>>513
考え方が違うんだ
コピーが渡るかポインタが渡るかは型の種類によって決まる。
前者は値型、後者は参照型と呼ばれる。構造体は値型。
ポインタ渡しされるようにするには構造体ではなくクラスとして定義する

521 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 22:12:34 ]
で、クラスとして定義すれば、

> 名前が違うだけで中身が同じ構造体を処理したい

は実現できるの?

522 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 22:18:37 ]
StructLayout属性、FieldOffset属性で何とかなるが、
メモリ上のイメージを意識するようなプログラムは、
プラットフォーム呼び出しなどをのぞき極力避けるべきだな。

523 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 22:21:30 ]
へー。できるんだ。知らなかった。
StructLayout/FieldOffset 属性って P/Invoke のときにしか使えないもんだと思ってた。

>>513 じゃないけど、勉強になったよ。教えてくれてありがとう。

524 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 22:36:23 ]
VBの超手抜き機能、遅延バインディングを忘れてはいないか?

525 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 22:56:29 ]
VisualStudio使ってるとイチイチ警告出るからウザイ



526 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 23:01:54 ]
VB2010では「DLRを利用したメタプログラミング」と言い張れます

527 名前:デフォルトの名無しさん [2009/07/14(火) 23:56:13 ]
MethodInvoker を使って子スレッドから親コントロールの値を変える一番簡単なサンプルコードをお願いします
C#だとあるんだけど構文が特殊でぜんぜんわかりません
TextBox1.text="hoge"
TextBox2.text="hogehoge"
これをやりたんです

お願いします

528 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 00:03:57 ]
C#のソースがあるならネットにコンバータが転がってるから変換してみれ

529 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 00:16:12 ]
俺はこう書いてるけど、やたらめんどくさいね。C#だともっと簡単なんだっけ?

Delegate Sub hogeDelegate(ByVal c As Control, ByVal s As String)

Sub SetText(ByVal c As Control, ByVal s As String)
  c.Text = s
End Sub

Sub ThreadSafe_SetText(ByVal c As Control, ByVal s As String)
  c.Invoke(New hogeDelegate(AddressOf SetText), c, s)
End Sub

で、使うときに
ThreadSafe_SetText(TexxtBox1, "hoge")

530 名前:デフォルトの名無しさん [2009/07/15(水) 00:24:36 ]
スペシャルありがとうございます!
ちょっとやってみます!

C#は仮想関たら使って意味がわかんないんですが、かえってこの方が意味がわかりやすいですね

531 名前:デフォルトの名無しさん [2009/07/16(木) 02:31:27 ]
画面をキャプチャーして高速で画像を処理したいのですが
画面をモノクロでキャプチャーすることは出来ますか?

やりたいのは
キャプチャーしたデータを2色に変換
手持ちの2色の画像データと比較して類似部分を調べる
というものなのですが、キャプチャーの段階で2色ができれば
変換の手間が省けるかなと思いました。
100*100ピクセルくらいのサイズの画像を
一秒以内に何十枚か処理したいです。

532 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 03:22:41 ]
VS2008 でプログラム内からGridViewを複製し、
複数個のGridViewを表示しようとしているのですが、
そもそもGridViewにはDataTableみたくCloneメソッドは用意されていないのでしょうか?

というのも、プログラム内からGridViewのインスタンスを作成し、行>列・・・色 等を
作成していけば確かにGridViewを動的に作成する事はできるのですが、
面倒です。

DataTableにはDataTable.Cloneというメソッドが用意されているのに、
GridViewにはGridViewの構造をコピーするメソッド(機能)は用意されていないのでしょうか?



533 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 09:39:30 ]
>>531
>一秒以内に何十枚か
VB単体だと難しそうだねえ。
どっかでライブラリ (DLL) 探してきて (勿論、C/C++ で自作も可)
P/Invoke で呼び出すとかした方がいいかも知んない。

>>532
マルチすんな糞が

534 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 09:59:27 ]
APIべったりでできないことはないだろうけどVB関係ないしVBでやる意味もないな
画像処理はせめてポインタ使える言語でやった方が…

535 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 10:05:14 ]
OpenCVでいいじゃないか



536 名前:デフォルトの名無しさん [2009/07/17(金) 09:27:16 ]
教えてください
#Region定義行や関数の頭としっぽの左側にソースを隠すことができる
+マークがありますけど、この呼び方はなんというのでしょうか?
キーボードショートカット操作で隠したり表示させたりする方法を
検索したいのですが用語がわからず困っています。

537 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 09:39:36 ]
>>536
コードをアウトライン表示する/非表示にする

538 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 18:14:54 ]
フォームのプロパティにStartpositionがないのですが、どうしてですか?

539 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 00:16:04 ]
作り手がそうしてるから

540 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 02:59:07 ]
>>538
あるよ

541 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 21:16:58 ]
System.Net.Dnsでは、アドレスとホスト名しか参照できないみたいなんですが、
txtレコードをクエリするいい方法ないですか?

外部コンポーネントで何かないか、
WindowsAPIで呼び出してできる例とかあれば良いんですが

それ以外で思いつくのは
NSLOOKUPを呼び出す
ソケットでDNSクエリ自作
ぐらいだが、どっちもあんまりやりたくない


542 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 21:31:27 ]
nslookupもどきが可能になるコンポーネントがあったような・・・
これだったかな?
www.codeproject.com/KB/IP/dnslookupdotnet.aspx

543 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 22:44:33 ]
iphelper API でできた気がする。確か、MX は引けた。

544 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 12:22:30 ]
非常に初歩的で申し訳ないのですが
テキストボックス(複数行)の最終行を取得するにはどうすればよいでしょうか?
TextBoxのヘルプ等見たのですが見つけられませんでした。
感覚的には
lastLine = tboInput.GetLastLine()
のような感じで求められるのではと思っているのですが。
ご存知の方ご教示お願いします。

545 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 12:40:18 ]
ズバリってのはないと思った

末尾の文字位置から行を求める方法とか…
lastLine = tboInput.GetLineFromCharIndex(tboInput.Text.Length - 1)



546 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 12:42:18 ]
あ、行の文字列の取得なのか
>>545で得られるのは行インデクスです

547 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 12:45:41 ]
Lines()プロパティでいったん全行を取得してどうこうするのは無駄が多いかな

Dim allLines() As String = textbox.Lines()
lastLine = allLines(allLines.Length -1)

548 名前:544 mailto:sage [2009/07/19(日) 13:36:30 ]
>>545-547
早速のレスありがとうございます。
>あ、行の文字列の取得なのか
分かりにくくて済みません。まさに最終行のインデックスです。

ですから>>545のご回答が教えたいただきたかったことになります。

今ほどプログラムに組み込んだところうまくいきました。
大変助かりました。ありがとうございました。
>>547も参考にさせていただきます。

549 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 02:39:47 ]
MaskedTextBoxで時間の入力欄を作っております。
入力欄をhh時mm分という表記にしたのですが、hhを入力した後、
カーソルを"時"の後ろに自動で動くようにしたいと思っています。
(mmからbackspaceで戻った際も同様にカーソルを移動させたい)
ACCESSでは特にプログラム組まなくてもそのような動作が出来ていたのですが
、VB.NETでは自分で実装が必要ですよね?
どのようにすればいいか教えてください。
お願いいたします。

550 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 05:11:47 ]
共有ファイルサーバー上にAccessのmdbファイルを置いて、
各PC上からVB.NETで作成したアプリで接続するような形のシステム
を作っているのですが、ネットワークが繋がらない等の理由で
DBにアクセス出来なかったときにエラーを返す処理をどのように
すればよいかわかりません。
現在は、下記のような方法で起動時にDBのテーブルからデータが正常に取得
出来なかった場合、エラーを返すようにしています。

try
〜TableAdapter.Fill(〜dataset.〜テーブル)
catch
Msgbox("〜テーブルからデータを取得できませんでした")
end try

この場合だと、DBに接続出来なかったのか、テーブルに不正なデータが入っていて
取得出来なかったのか判断がつきません。
現在DBへ接続しているのかという状況を返すメソッドがあれば教えてください。

551 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 13:31:12 ]
>>550

ふつー、catch でexception拾うだろ。


552 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 13:35:09 ]
まあ最初の2行で既に失敗臭がするけどな。

553 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 14:01:39 ]
>>552
俺も最初の2行でもう読む気うせたw

554 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 15:42:09 ]
>>553
Accessって時点で地雷臭しかしないからな

555 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 15:45:08 ]
Accessというよりmdbを共有するってのがな



556 名前:550 mailto:sage [2009/07/20(月) 17:26:18 ]
>>555
じゃあどうすればいいんですか?
DBサーバーは会社で立てれないんでmdbファイルを共有くらいしか
思いつきませんでした。
納期は迫ってますが、自社から依頼された開発なのである程度は自分で
仕様決めてよいので今からでもなんとか変更できます。
アドバイス下さい。

557 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 17:28:38 ]
DB サーバーを立てられない、ってことなら、壊れるのを覚悟で mdb でいいだろ。

558 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 17:41:09 ]
>>556
そうだな。
じゃあ、せめて同時には一人しかアクセスできないようにするかな。


559 名前:550 mailto:sage [2009/07/20(月) 17:52:42 ]
>>558
すみません。
書いてませんでしたが、同時アクセスは出来ないようします。
基本的にスタンドアロンで問題無いシステムなんですが、
各自のパソコンから使えるようにしたかったので、mdbファイルを
共有ファイルサーバー上に置くようにしました。
コーディングはほぼ完了したのですが、同時アクセス出来ないような仕組みは特に
作ってません。
mdbファイル側で共有設定してないから2台以上の接続があったら勝手にはじいてくれる
と思ってるのですが、処理を組み込んだ方がいいですか?

560 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 17:56:13 ]
処理しないと例外で落ちるだろ

561 名前:550 mailto:sage [2009/07/20(月) 18:03:24 ]
>>560
そのような処理のやり方がわからなかったので、
現状ではtableadapter.Fillの時点で例外を拾ってエラーを吐くように
してます。
エラー吐いたらDBを他で使ってるか、データがおかしいか、ネットワークがおかしいから
時間が経ってから使用するようなルールにしようと思ってます。

562 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 18:17:39 ]
つーか、mdb ってデフォルト共有アクセス可だろ?

563 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 18:25:10 ]
つーかポスグレのがいい

564 名前:550 mailto:sage [2009/07/20(月) 18:28:56 ]
>>562
デフォルトでは共有アクセスできないと思います。

565 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 18:33:18 ]
つーか、mdbって使ったこと無いww



566 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 18:35:29 ]
>>564
特に指定しない限り、別のモード (たとえば、adModeShareExclusive) を設定しない限り、
ADO の接続は共有更新アクセス モードで開かれます。

嘘乙


567 名前:550 mailto:sage [2009/07/20(月) 18:45:55 ]
>>566
そうなんですか?
俺の環境では出来なかったような気がしたのですが、すみません間違ってたようです。

ということは現在の作っているシステムだと、おそらく2ユーザー以上が同時に接続
出来てしまうものと思われますので、DBのユーザーテーブルにログイン中を示すフラグを
持たせる事で回避させることにしました。
他ユーザーがログイン中だとエラー吐いて画面をクローズさせる処理で問題ありませんか?

568 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 18:50:21 ]
意味わからん。最初から排他で開けばいいだけのこと。

569 名前:550 mailto:sage [2009/07/20(月) 18:56:59 ]
>>568
自分の作り方だとTableAdapter.Fillの1行でDBのOpenから取得まで
全て行っているので、どこに排他で開くコードを記載していいか
わからないんです。
納期まであまり時間が無く、簡単な方法が思いつきません。
TableAdapterのプロパティのあたり弄ればいけますかね?

570 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 19:02:02 ]
あー。データセットだと開けっ放し、ってわけには行かないな。すまん。

571 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 19:04:17 ]
まあ、とりあえずそのまま納品しろw

572 名前:550 mailto:sage [2009/07/20(月) 19:04:58 ]
おそらく下記のようなコードになるんですよね?

Dim cn As ADODB.Connection
cn = New ADODB.Connection
cn.Mode = adModeShareExclusive
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\〜.MDB;"

これでDBを開くまではわかるんですが、
この後、TableAdapeterのFillメソッド使うのって有りですか?
open使った場合にはcloseまできちんと書くやり方にしなければいけませんか?


573 名前:550 mailto:sage [2009/07/20(月) 19:10:22 ]
>>570
DataSetだと排他モードで開いておくと言うのは駄目なんですね。
やっぱりログイン中のフラグを設ける方向で考えます。

>>571
社内で使用するプログラムなのでこのまま納品して白を切ってもいけそうですが
せっかく作るんで修正します。
納期に遅れたところで上司の給料がカットされるくらいなんで全然問題ないですw

574 名前:541 mailto:sage [2009/07/20(月) 21:10:32 ]
>>542
情報サンクス
しかしこれ、登録しないとダウンロードさせてくれないのか...
英語の規約とか読むの大変

>>543
ちょっとしらべてみた範囲ではやり方がわからなかった
プラットフォームSDK入れろとかなんとか、
ちょっと手軽に使うってわけにはいかないみたいだ

いろいろ探して、.NET 3.5のC#でDNSクエリするやつみつけた
んでそれ使ってみたんだが...
.NET Framework3.5って、Windows2000で動かないという事実を発見して挫折中


575 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 21:19:42 ]
msdn.microsoft.com/en-us/library/ms682100(VS.85).aspx

でいけそう。



576 名前:541 mailto:sage [2009/07/20(月) 21:42:55 ]
>>575
ありがとう
WindowsAPIですね。たしかにいけそうだが
これを.NETから呼び出すのも結構苦労しそうだ

ほかにもいくつか.NETでDNSクエリするの見つけたんで検討中
.NET Frameworkでサポートしてほしいとこだが...

WindowsAPIは最後の手段にします

577 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 21:50:59 ]
何が苦労なんだか。P/Invoke すればいいだけだろ。

pinvoke.net/default.aspx/dnsapi/DnsQuery.html

とかあるし。






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

前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