2013-03-08 28 views
0

我在编译代码时出错。它说该数据集不能转换为字符串..请帮助我..我已经通过使用SQL存储过程做到了这一点..我必须获取保存在主表中的员工姓名以检索ID,然后ID应检索离开的详细信息从请假细节表。将数据集转换为VB中的字符串

Public Shared Function GetEmpID(ByVal EmpName As String) As DataSet 
    Dim db As Database = DatabaseFactory.CreateDatabase(HttpContext.Current.Session("CompanyID").ToString) ' TO Get Database Connection 
    Dim dbCommand As DbCommand = db.GetStoredProcCommand("spRetrieveEmpID") ' Stored Procedure to Execute 
    db.AddInParameter(dbCommand, "EmployeeName", DbType.String, EmpName) ' Parameter for Stored Procedure 
    Return db.ExecuteDataSet(dbCommand) ' Execute Stored Procedure 
End Function 

Public Shared Function EmpLeaveDetails(ByVal EmployeeID As String) As DataSet 
    Dim db As Database = DatabaseFactory.CreateDatabase(HttpContext.Current.Session("CompanyID").ToString) ' TO Get Database Connection 
    Dim dbCommand As DbCommand = db.GetStoredProcCommand("spHRLeaveEntitlement") ' Stored Procedure to Execute 
    db.AddInParameter(dbCommand, "EmployeeID", DbType.String, EmployeeID) ' Parameter for Stored Procedure 
    Return db.ExecuteDataSet(dbCommand) ' Execute Stored Procedure 
End Function 

这是我leave.aspx.vb码

Private Sub ddlEmpName_SelectedIndexChanged(ByVal sender As Object, ByVal e As Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs) Handles ddlEmpName.SelectedIndexChanged 

    EmployeeID = TESTING.GetEmpID(ddlEmpName.Text) 

    If ds.Tables(0).Rows.Count > 0 Then 
     dgLeaveDetails.DataSource = ds 
     dgLeaveDetails.DataBind() 
    End If 

    ds1 = TESTING.EmpLeaveDetails(EmployeeID) 
    dgLeaveDetails.DataSource = ds1 

    ddlEmpName.SelectedIndex = -1 
    dgLeaveDetails.Rebind() 

End Sub 
+0

你能包括de错误信息吗? – emecas 2013-03-08 01:51:12

+0

@emecas:谢谢你的倡议..错误已经解决.. :) – user1617943 2013-03-08 03:02:24

回答

1

线

EmployeeID = TESTING.GetEmpID(ddlEmpName.Text) 

貌似这个问题给我。

你应该使用:

Dim dst As Dataset = TESTING.GetEmpID(ddlEmpName.Text) 
EmployeeID = CStr(dst.Tables(0).Rows(0).Item("EmployeeID")) 
+0

非常感谢你..它工作.. :) – user1617943 2013-03-08 02:59:23

1

要设置EmployeeID,像这样:

EmployeeID = TESTING.GetEmpID(ddlEmpName.Text) 

GetEmpID方法返回一个DataSet对象。因此,EmployeeID引用了DataSet,而不是等于单个ID值。以后,您尝试通过EmployeeIDEmpLeaveDetails方法是这样的:

ds1 = TESTING.EmpLeaveDetails(EmployeeID) 

然而,EmpLeaveDetails方法采用String作为参数。因此,您正在尝试将DataSet传递给期望String的方法。由于DataSet对象不能自动转换为String类型,因此编译器会提供该错误。

要解决该问题,您需要让GetEmpID返回一个字符串,否则在将其传递给EmpLeaveDetails方法之前,您需要从DataSet中检索单个字符串值。

+0

感谢您的帮助:) – user1617943 2013-03-08 03:01:21

相关问题