tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: GetChunkとAppendChunkを扱うデータ型について
投稿日: 2014/03/19(Wed) 09:48
投稿者魔界の仮面弁士
> cnn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + "写真.mdb" + ";", "", "", 0)
 cnn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=写真.mdb;", "", "", 0)
で良いような。
連結するにしても、+ より & の方が VB 的かな。


> cnn.CursorLocation = ADODB.CursorLocationEnum.adUseClient
> strSQL = "SELECT * FROM テーブル1"
> rsSyashin.Open(strSQL, cnn, ADODB.CursorTypeEnum.adOpenUnspecified, ADODB.LockTypeEnum.adLockOptimistic, 1)

なぜ、adOpenUnspecified を指定されているのでしょうか。
adUseClient カーソルなのですから、adOpenStatic 一択ですよね。

以下、Jet 4.0 におけるカーソルモードの組み合わせ表
http://www.gizcollabo.jp/vbtomo/log/archive/vbdatabase_1483_0.html


ついでに、このあたりも参考に。
http://support.microsoft.com/kb/321415/ja
http://hanatyan.sakura.ne.jp/vbnetbbs/wforum.cgi?no=7177&reno=7174&oya=7168&mode=msgview&page=0

[相互運用型の埋め込み]を True にしている場合は、As ADODB.Connection が使われますが、
[相互運用型の埋め込み]を False にしている場合は、As ADODB.ConnectionClass とするようです。
また、COM オブジェクトに関して Marshal.ReleaseComObject の呼び出しも必要となりますね。



> Dim lngLogoSize As Long         ' サイズ
> lngLogoSize = rsSyashin.Fields("写真").ActualSize
何故、Long 型の変数を利用しておられるのでしょうか?

> Dim oObj As Object = rsSyashin.Fields("写真").GetChunk(CInt(lngLogoSize))
その Object 型に、どのようなデータ型が格納されているか確認されましたか?
Nothing でしょうか、DBNull でしょうか、あるいは Byte() でしょうか、それとも…。


> 悩んでいるのはObject型からどうやって画像ファイルに書き出そうかと。
念のために確認。
Microsoft Access の UI から埋め込んだ場合は、OLE オブジェクトとして
格納されますので、生の画像バイナリとは異なりますが、
今回は画像データそのものを書き込んでいるのですね?


以下蛇足:バイナリデータを SQL 文で INSERT する手法
http://yaplog.jp/orator/archive/36


> AppendChunkはByte型を読み込んでいるので
Byte() 型ではなく?


> GetChunkでできた型をなんとかByte型にできたらいいのですが
> Object型だとどうにも変換できずに悩んでいます。
DirectCast なり CType なりで、「本来の型」にキャストしてみましょう。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。