2017-07-26 10 views
0

私はこの小さなコードを取得してデータベースに接続し、データを選択してデータをファイルに書き込みます。vbnet選択dtへの選択

...

sqlquery = ("select field1 as Asl, field2 as nCuen , field3 as nfac , "" as contr from [2016cl]") 

Using connection As SqlConnection = New SqlConnection("server=" & srvSQL & ";database=" & bdSQL & ";uid=" & usrSQL & ";password=" & pswSQL & ";") 
    connection.Open() 
    Using comm As SqlCommand = New SqlCommand(sqlquery, connection) 
     Dim rs As SqlDataReader = comm.ExecuteReader 
     Dim dt As DataTable = New DataTable 
     dt.Load(rs) 

     Call clCreateCSV.CreateCSVFile(dt, strFileNameDiario) 
    End Using 
    connection.Close() 
End Using 

.....私は別のものに参加する別のテーブルからフィールドを( "" CONTRなど)を選択の上に4値を入力する必要があり

Public Shared Sub CreateCSVFile(dt As DataTable, strFilePath As String) 
    Dim sw As New StreamWriter(strFilePath, False, Encoding.UTF8) 
    Dim iColCount As Integer = dt.Columns.Count 

    For Each dr As DataRow In dt.Rows 
     For i As Integer = 0 To iColCount - 1 
      If Not Convert.IsDBNull(dr(i)) Then 
       sw.Write(dr(i).ToString()) 
      End If 
      If i < iColCount - 1 Then 
       sw.Write(";") 
      End If 
     Next 
     sw.Write(sw.NewLine) 
    Next 
    sw.Close() 
End Sub 

ミドルテーブル。

FIELD3はGFac.Gfac2 GfacがCCli.ccli1に第三のテーブルを結合し、テーブルの上に別のテーブルを結合 - >これは私の知る限りでは、私は

だけで内部結合使用しますが、でしたクエリに必要があるものですジョインを検証するフィールドだけを取得します。

どうすればいいですか?ALL [2016cl]のデータと存在する場合はそれぞれのフィールドcontrが書き込まれますか?

ありがとうございます。もっと情報が必要な場合は、尋ねてください!

+0

私にとっては、これは純粋なSQLの質問であるようです。では、VBコードをすべて表示するのはなぜですか?あなたのテーブルと、それらがお互いにどのように関連しているかを示します。いくつかのサンプルデータとクエリの期待される結果を表示します。 –

+0

こんにちは@Tim Schmelter、ありがとうございました。私はすべてのコードを投稿しているので、私はSQLの方法を行って、クエリを大きくするか、それをプログラム的に行う方がよいかどうか分かりません。 – vvic

+0

もちろん、SQLでそれを行う方が効率的ですが、 –

答えて

0

代わりにLEFT JOINを使用します。例えば

: SELECT * FROM TABLE1 LEFTは、クエリがTABLE1からすべての行を選択する

... TABLE2 ONに参加します。 TABLE1の行にTABLE2の一致レコードがない場合、TABLE2フィールドにはNULLが含まれます。

希望に役立ちます。

+0

がうまく働くのに役立つ情報がありません。御時間ありがとうございます。 – vvic

関連する問題