0

SQL 2008 サーバーを使用しています。サーバーには、データ型が varchar(MAX) の列を持つテーブルがあります。ADO を使用して、このテーブルの特定の列を Excel 2010 にインポートしようとしています。私が使用しているコードの例を次に示します。

Dim con As Object
Set con = CreateObject("ADODB.Connection")

cmd.CommandText = "SELECT dbo.(Table Name).Name From dbo.(Table)"
cmd.CommandType = 1
con.open
cmd.ActiveConnection = con
Dim rst as Object
set rst = cmd.Execute

ActiveSheet.cells(targetRange.Row, targetRange.Column).CopyFromRecordset rst

コードは正常に実行されますが、列 Name が varchar(MAX) に設定されているため、ワークシートに名前が表示されません。これは、SQL サーバーのコピーを作成し、列のデータ型を varchar(1024) に変更したため、正常に動作するためです。

また、レコードセットのデータを手動でスプレッドシートに配置しようとしましたが、うまくいきませんでした。問題は、実際の SQL サーバーを変更できないことです。

Select ステートメントに追加できるコマンド、または varchar(MAX) を Excel で使用できるデータ型に変換するために使用できるキャストはありますか、それともデータが変換されないようにするために他にできることはありますか?読み込んだときにnull?

私はこの問題を1日調査しており、いくつかのスレッドが近づいていますが、SQLサーバーでselectを使用して、この場合は機能しないキャスト、または他のプログラムで使用することについて話していますが、役に立ちません.

4

1 に答える 1

-1

ADO は明らかにVARCHAR(MAX)適切に (または期待どおりに)処理しませんVARCHAR(n)

列を定義された長さのものにキャストする必要があったため、独自の質問に答えました!

CAST(column AS type)

またはあなたの場合

SELECT CAST(dbo.(Table Name).Name AS VARCHAR(1024)) FROM dbo.(Table)
于 2013-03-14T20:07:35.513 に答える