2016-07-06 3 views
0

私は以前に質問したことを宣言しなければなりませんが、私は誤解を招くような文言間違いを見つけました。保障、私は古い質問を削除し、再度質問します。ここでSelect NULLを使用せずに列をスキップまたは無視する方法

私のsqlです:

Select officer , NULL ,NULL, salary from table 

私はエクセル第2、第3の列にSQLを実行するために、ADOを使用すると、SQLクエリを実行する前にデータを入力するために必要とされています。

しかし、私は2カラムをスキップするためにNULLを使用します。私はこれらの2つのカラムをNULLにすることを選択したので、SQLクエリはクリアしてデータをリセットします。

これらの2つの列のデータまたは数式に影響を与えずにこれらの2つの列をスキップする方法はありますか?

可視化:

  • 役員、列2、列3、給与

  • _、2、= SUM(B2の*のC2)、_

SQLクエリの実行:Select officer , NULL ,NULL, salary from table

  • 役員、カラム2(NULL)、3列(NULL)、給与

  • 988、___、___、$ 4789// SQLクエリは、列2,3に格納された元のデータをクリアします。

(___は空白を意味します)

この問題を解決するにはどうすればよいですか?

+0

出発点は、この(あなたのニーズに応じて変更)することができORDERが一致するデータを取得する必要があると思われる場合 –

+0

もう1つの方法は、 '.CopyFromRecordset'ではなく、RecordsetをループすることでExcelにデータを読み込むことです。ループは、1番目、4番目、5番目のフィールドだけに行くだろう... –

+0

@ KazimierzJawor今、私はすでに 'mrs.Open sSQLSting、Conn sheet6.Range(" A5 ")を作成しました。CopyFromRecordset mrs'しかし、このSQLステートメントはセルを渡って配置する必要はありません。 – Vito

答えて

0

あなたが正しく理解していれば、現在クエリされたデータをワークシートに直接挿入していますか?

そうなら、レコードセットを使用してクエリの結果を保持することをお勧めします。その後、それをループします。この方法で、データを入れるセルを決めることができます。あなたはxxx`と `セレクト給与BYテーブルORDERから`セレクト官のような2つのクエリを実行しない理由BYテーブルORDERから

Set cn = CreateObject("ADODB.Connection") 
With cn 
.Provider = "YOUR.PROVIDER" 
    .ConnectionString = "YOUR_CONNECTION_STRING" 
.Open 
End With 
strQuery = "SELECT officer, salary FROM table" 
Set rs = cn.Execute(strQuery) 
Do While Not rs.EOF 
    For i = 0 To rs.Fields.Count 

    ' Insert data to your worksheet here 
    ' rs.Fields(0).Value holds the value for officer 
    ' rs.Fields(1).Value holds the value for salary 

    Next 
    rs.MoveNext 
Loop 
rs.Close 
関連する問題