将'dao.Field'转换为'String'时可能会发生运行时错误。 VB6到VB.NET

时间:2014-01-16 17:19:57

标签: vb.net visual-studio-2008 vb6 upgrade vb6-migration

我已经使用Visual Studio 2008将VB6项目转换为VB.NET。我有一些代码在doa.Field为String Type时为invalid cast type抛出错误。

以下是我正在使用的代码:

If rstLogin.BOF = True And rstLogin.EOF = True Then
        MsgBox("User name not found, please try again!", , "Login")
        frmLogin.txtUserName.Focus()
        System.Windows.Forms.SendKeys.Send("{Home}+{End}")
    Else
        If Trim(inPassword) = Clean(rstLogin.Fields.Item("PassWord")) Then
            Call MoveUserRecord(rstLogin)
            LogUserIn = True
        Else
            MsgBox("Invalid Password, please try again!", , "Login")
            frmLogin.txtPassword.Focus()
            System.Windows.Forms.SendKeys.Send("{Home}+{End}")
        End If
    End If

错误是:

  

无法将类型为'dao.FieldClass'的COM对象强制转换为类类型'System.String'。表示COM组件的类型实例不能转换为不代表COM组件的类型;但是只要底层的COM组件支持对接口的IID的QueryInterface调用,它们就可以转换为接口。

密码代码部分会抛出错误。

If Trim(inPassword) = Clean(rstLogin.Fields.Item("PassWord")) Then

我尝试将.ToString()添加到我可以添加到的所有内容中,但仍然会遇到相同的错误。有人可以告诉我我做错了什么,以及如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

Hans Passant真的很接近是答案。为了您修复错误,并使您的代码正确编译。您需要使用:

rstLogin.Fields("PassWord").Value.ToString()

我已对此进行了测试,我相信它会起作用。