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