Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8570 / 13646 ツリー ←次へ | 前へ→

【32476】DAO.Recordsetの文字数制限 moto 05/12/15(木) 17:49 質問[未読]
【32483】Re:DAO.Recordsetの文字数制限 Kein 05/12/15(木) 20:55 発言[未読]
【32501】Re:DAO.Recordsetの文字数制限 moto 05/12/16(金) 10:36 回答[未読]
【32506】Re:DAO.Recordsetの文字数制限 小僧 05/12/16(金) 13:28 発言[未読]
【32520】Re:DAO.Recordsetの文字数制限 moto 05/12/16(金) 17:41 回答[未読]
【32535】Re:DAO.Recordsetの文字数制限 Kein 05/12/16(金) 22:29 発言[未読]

【32476】DAO.Recordsetの文字数制限
質問  moto  - 05/12/15(木) 17:49 -

引用なし
パスワード
   現在、notesのDBからデータをエクセルに出力するマクロを作成しているのですが
DBのある列に長い文字列が入っていてエクセルに出力すると途中できれてしまいます。
DAO.Recordsetの.Fields().Valueには文字数制限があるのでしょうか?

もしある場合長い文字列を取得する方法はありますでしょうか?

すみませんがよろしくお願いいたします。

【32483】Re:DAO.Recordsetの文字数制限
発言  Kein  - 05/12/15(木) 20:55 -

引用なし
パスワード
   思いつきに過ぎませんが、CopyFromRecordset した後で、セル内の文字列を操作
するようなコードで出来ませんか ?

【32501】Re:DAO.Recordsetの文字数制限
回答  moto  - 05/12/16(金) 10:36 -

引用なし
パスワード
   ▼Kein さん:
>思いつきに過ぎませんが、CopyFromRecordset した後で、セル内の文字列を操作
>するようなコードで出来ませんか ?
ありがとうございますm(__)m
CopyFromRecordsetを使用してみましたが結果は同じでした・・・
なにか対処法が在ればいいのですが・・・

【32506】Re:DAO.Recordsetの文字数制限
発言  小僧  - 05/12/16(金) 13:28 -

引用なし
パスワード
   ▼moto さん、Kein さん:
こんにちは。

>DAO.Recordsetの.Fields().Valueには文字数制限があるのでしょうか?

Access より DAO.Field のヘルプの抜粋です。
ご参考になれば幸いです。

Type プロパティ
オブジェクトの操作の種類やデータ型を示す値を設定または返します。

dbText テキスト型 (Text)
フィールド データ型の 1 つで、
テキスト フィールドには最大 255 バイトまでの文字列を格納できます。

ただし、Field オブジェクトの Size プロパティに
この最大値より小さい値が設定されている場合は、
その設定値の示すバイト数までしか格納できません。


dbMemo メモ型 (Memo)
フィールド データ型の 1 つです。メモ型フィールドには最大 1.2GB までのデータを格納できます。

【32520】Re:DAO.Recordsetの文字数制限
回答  moto  - 05/12/16(金) 17:41 -

引用なし
パスワード
   ▼小僧 さん:
>▼moto さん、Kein さん:
>こんにちは。
>
>>DAO.Recordsetの.Fields().Valueには文字数制限があるのでしょうか?
>
>Access より DAO.Field のヘルプの抜粋です。
>ご参考になれば幸いです。
>
>Type プロパティ
>オブジェクトの操作の種類やデータ型を示す値を設定または返します。
>
>dbText テキスト型 (Text)
>フィールド データ型の 1 つで、
>テキスト フィールドには最大 255 バイトまでの文字列を格納できます。
>
>ただし、Field オブジェクトの Size プロパティに
>この最大値より小さい値が設定されている場合は、
>その設定値の示すバイト数までしか格納できません。
>
>
>dbMemo メモ型 (Memo)
>フィールド データ型の 1 つです。メモ型フィールドには最大 1.2GB までのデータを格納できます。

ありがとうございます。
なるほどテキスト型で取得してしまっているようです・・。

この以下のロジックで取得しても結果は同じでした。

取得の際にメモ型に変換することは可能なのでしょうか?

すみませんがよろしくお願いいたします。

'*******************************************************************************
' DAOでフィールドを個々に指定して読み込む
'*******************************************************************************
Sub TEST1()
  ' 参照設定「Microsoft DAO 3.x Object Library」
  Dim dbWS As DAO.Workspace
  Dim dbWB As DAO.Database
  Dim dbRes As DAO.Recordset
  Dim GYO As Long
  strODBC_con = "ODBC;DSN=notes;DATABASE=DIPSSCH******.NSF;"

  ' ワークスペースを定義
  Set dbWS = DBEngine.Workspaces(0)
  ' データベースを開く
  Set dbWB = dbWS.OpenDatabase("notes", False, False, strODBC_con)
  ' レコードセットを取得
  Set dbRes = dbWB.OpenRecordset("DailyMemo", dbOpenDynaset)


  ' レコードセットを取得
  Set dbRes = dbRes.OpenRecordset()
  GYO = 1
  Rows("2:65536").ClearContents
  ' 先頭レコードからEOFまで繰り返す
  dbRes.MoveFirst
  Do Until dbRes.EOF
    ' 行の変数を加算し必要項目を選択してセルにセット
    GYO = GYO + 1
    Cells(GYO, 1).Value = dbRes("Created").Value
    Cells(GYO, 2).Value = dbRes("JissekiMemo").Value
    ' 次のレコードに移る
    dbRes.MoveNext
  Loop
  ' レコードセット、データベースを閉じる
  dbRes.Close
  Set dbRes = Nothing
  dbWB.Close
  Set dbWB = Nothing
  dbWS.Close
  Set dbWS = Nothing

End Sub

【32535】Re:DAO.Recordsetの文字数制限
発言  Kein  - 05/12/16(金) 22:29 -

引用なし
パスワード
   >取得の際にメモ型に変換
FieldオブジェクトのTypeプロパティは、新規にFieldを追加するときのみ
設定が出来、追加後には取得のみができる。とヘルプに書いてあります。
よってそのような "変換" は出来ないでしょうね。で、Typeプロパティによって
型を設定するサンプルコードは、ヘルプにも出てました。以下のようなものです。

Set dbsNorthwind = DBEngine.Workspaces(0).OpenDatabase("NWIND.MDB")
' 既存のテーブルの参照を取得します。
Set tdfEmployees = dbsNorthwind.TableDefs("社員")
' Field オブジェクトを作成します。
Set fldFaxPhone = tdfEmployees.CreateField("内線")
' フィールドのプロパティを設定します。
fldFaxPhone.Type = dbText

8570 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free