2017-07-26 81 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 

.....

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 

我需要在選擇( 「」 作爲對照)與字段從它連接到另一個另一個表填寫第4個值中間表。

場3加入上GFac.Gfac2 表GFAC連接上CCli.ccli1第三表中的另一表 - >這是一個我需要查詢

可以只使用內部連接,但是,據我所知它只會得到驗證連接的字段。

我該怎麼做,寫全部來自[2016cl]的數據和他們每個人的字段控制如果存在?

在此先感謝。如果您需要更多信息,只需詢問!

+0

對我來說,這似乎是一個純粹的sql問題。那你爲什麼要顯示所有的VB代碼?顯示你的表格以及它們是如何相互關聯的。顯示一些示例數據和查詢的預期結果。 –

+0

嗨@Tim Schmelter,謝謝你的時間。我發佈了所有的代碼,因爲我不知道我是否應該使用sql方式,並使查詢更大或者更好地以編程方式執行。 – vvic

+0

當然這會更有效的做到這一點,但我們的信息太少,以幫助您 –

回答

0

使用LEFT JOIN代替INNER JOIN。

例如: SELECT * FROM表1 LEFT JOIN TABLE2 ON ...

該查詢選擇從TABLE1的所有行。如果TABLE1中的行在TABLE2中沒有匹配記錄,則TABLE2字段包含NULL。

希望有所幫助。

+0

工作正常。謝謝你的時間。 – vvic