2011-07-07 81 views
0

我有一個非常困難的任務,我認爲超出了我對數據庫的知識水平。我只學習了一個星期,所以我需要幫助。多個數據庫信息顯示

我目前有一箇舊的數據庫,有請求和客戶表。此信息當前顯示在ASP.NET

我需要做的是將用戶的新數據庫連接到此係統,同時保留舊數據庫中請求的表。因此它使用2個數據庫。我已經設置好了,當用戶創建一個新的請求時,在請求表中它將用他的用戶ID從新數據庫中保存它,但是當表格被顯示時,它使用這個新的用戶ID來查找來自老顧客桌子。因此,我結束了與此:

Sub BindDataGrid() 
    cmdoledb = New SqlCommand("SELECT r.customerid, r.RequestID, R.RequestDate, R.RequestDescription, a.AssignedTo, r.Urgency, r.ExCompletionDate from tbl_requests r, tbl_assignedto a where r.statusid = 1 and r.assignedtoid= a.assignedtoid ", objConn) 
    objConn.Open() 

    Dim rdr As SqlDataReader 
    Dim myItem As ListItem = New ListItem() 
    rdr = cmdoledb.ExecuteReader(0) 

    While rdr.Read() 
     myItem = New ListItem() 
     myItem.Value = rdr.GetInt32(0) 
     cmddb = New SqlCommand("SELECT SESFirstName + ' ' + SESLastName As fullname from SESLogin where SESLoginID = @customerID", objConnect) 
     cmddb.Parameters.AddWithValue("@customerID", myItem.Value) 
     objConnect.Open() 
     Dim anotherAdapter As New SqlDataAdapter(cmddb) 
     Dim dss As New DataSet 
     anotherAdapter.Fill(dss) 
     dgrdUsers.DataSource = dss 
     objConnect.Close() 
    End While 

    Dim myAdapter As New SqlDataAdapter(cmdoledb) 
    Dim ds As New DataSet 
    myAdapter.Fill(ds) 
    dgrdUsers.DataSource = ds 
    dgrdUsers.DataBind() 
    objConn.Close() 
End Sub 

目前,它不顯示任何內容,並給出了對myItem.Value = rdr.GetInt32是一個空的錯誤(0)。我經歷了一步一步,它正常地將customerids加載到myItem.Value中,但是當它們用完時,它應該退出,但繼續前進,從而出現錯誤。

這段代碼非常愚蠢,我知道,但憑藉我的知識,這就是我所能想到的。因此,我需要您的幫助和建議,來解決我遇到的這個問題。

回答

0

那麼,我要做的第一件事就是將你的兩個數據庫合併成一個(最好使用視圖作爲你現有表的替代品),如果你確實使用了兩個數據庫(從你的代碼示例中不清楚你是否真的使用兩個數據庫或簡單的附加表)。

您正在執行主要查詢兩次,一次爲數據讀取器,一次爲dataadapter.fill。你應該首先進行填充,然後遍歷結果行。該代碼示例使用的是一個列表項,以包含一個整數,除非您沒有顯示所有代碼,您應該只使用一個整數變量。

我不知道它是否適合你在做什麼或不是,但你只需要一個包含兩個表的數據集來包含你正在檢索的數據。

相關問題