2013-07-02 73 views
0

您好我有以下爲concate多個記錄訪問數據庫模塊插入一條記錄查詢到多個記錄合併到一條記錄在訪問和vb.net

Option Compare Database 

Function Concatenate(pstrSQL As String, _ 
    Optional pstrDelim As String = ", ") _ 
    As String 

Dim rs As New ADODB.Recordset 
rs.Open pstrSQL, CurrentProject.Connection, _ 
adOpenKeyset, adLockOptimistic 
Dim strConcat As String 'build return string 
With rs 
    If Not .EOF Then 
     .MoveFirst 
     Do While Not .EOF 
      strConcat = strConcat & _ 
      .Fields(0) & pstrDelim 
      .MoveNext 
     Loop 
    End If 
    .Close 
End With 
Set rs = Nothing 

If Len(strConcat) > 0 Then 
    strConcat = Left(strConcat, _ 
    Len(strConcat) - Len(pstrDelim)) 
End If 
Concatenate = strConcat 
End Function 

,這裏是我的查詢

SELECT Po_Master.PoNo, Po_Master.PartyName, Po_Master.PoDate, Po_Master.DeliveryDate, Concatenate("SELECT ItemDescription & Chr(9) & Qty FROM Po_Detail WHERE PoNo =" & [PoNo]) AS OrderDetail 
FROM Po_Master; 

這個查詢和函數在訪問數據庫上工作,但是當我在vb.net中調用時,它顯示錯誤oledb異常是unhandeld未定義的函數表達式中的「連接」。

Dim ds As New DataSet() 
    Dim str As String 
    Dim da As OleDb.OleDbDataAdapter 
    str = "Select distinct PoNo,PoDate,DeliveryDate,PartyName,OrderDetail from SearchPo" 
    da = New OleDb.OleDbDataAdapter(str, clsconn.conn) 
    da.Fill(ds, "SearchPo") 
    dt = ds.Tables("SearchPo") 'creati 
    'MyDataGridView1.AutoGenerateColumns = False 
    dgvSearch1.DataSource = dt 

回答

0

用戶定義的VBA功能僅適用於從內部訪問自身運行查詢。爲了在VB.NET應用程序中獲得相同的結果,您需要檢索子記錄並使用VB.NET代碼「將它們粘合在一起」。

+0

如何粘貼在vb.net的創建者 –

+0

@zahidmahmood有很多不同的方法來做到這一點。如果我面臨的任務是使用[LINQ to DataSet](http://msdn.microsoft.com/zh-cn/library/bb386977.aspx)進行調查,但您可能更喜歡其他方法。如果你搜索Stack Overflow,你會發現一些關於這個主題的問題。 –

相關問題