我的任务很艰巨,我认为超出了我对数据库的了解程度。我只学了一个星期,所以我需要帮助。
我目前有一个旧数据库,其中包含请求和客户的表。此信息当前显示在ASP.NET
中我需要做的是将用户的新数据库连接到此系统,同时保留旧数据库中请求的表。因此它使用2个数据库。我已经设置了它,当用户创建一个新请求时,它在请求表中使用来自新数据库的userID保存它,但是当显示该表时,它使用这个新的userID从中查找用户信息。老客户表。因此我最终得到了这个:
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)为空时发出错误。我一步一步地完成它,它将customerid正常加载到myItem.Value中,但是当它们用完时,它应该退出,但继续运行,从而产生错误。
我知道这段代码非常愚蠢,但据我所知,这就是我能想到的。因此,我需要你的帮助和建议,以解决我遇到的这个问题。
答案 0 :(得分:0)
嗯,我要做的第一件事是将两个数据库合并为一个(最好使用视图作为现有表的替换),如果你确实使用了两个dbs(从你的代码示例中不清楚你是否真的在使用它两个dbs或简单的附加表格。)
您正在执行两次主要查询,一次用于数据读取器,一次用于dataadapter.fill。您应首先执行填充,然后迭代生成的行。代码示例使用oreder中的列表项来包含单个整数,除非您没有显示所有代码,否则您应该使用整数变量。
我不知道它是否适合您正在做的事情,但您只需要一个包含两个表的数据集来包含您要检索的数据。