none
用VB中Ado.net连接到其他数据库 RRS feed

  • 问题

  • 我用的是VS2008,用VB.net调用SAS程序,最后想要在VB的文本框中显示SAS运行结果(SAS数据集),看到网上推荐用Ado.net,但是只有Ado的代码,请教各位如何改成Ado.net呢?并且代码只有连接到SAS dataset,请问各为怎样显示到VB文本框里呢?

    Dim obWS As SAS.Workspace

    Dim obWSM As New SASWorkspaceManager.WorkspaceManager

    Sub Form_Load()
          Dim obConn As New ADODB.Connection
          Dim obRS As New ADODB.Recordset
          Dim errorString As String
        
          Rem start the SAS session
          Set obWS = obWSM.Workspaces.CreateWorkspaceByServer("Local", _
                     VisibilityProcess, Nothing, "", "", errorString)
        
          Rem submit some SAS code
          obWS.LanguageService.Submit _
               "data a; do x=1 to 10; y=10*x; output; end; run;"
        
          Rem open an ADO connection to the data set
          Dim connString As String
          connString = "provider=sas.iomprovider.1; SAS Workspace ID=" _
                       + obWS.UniqueIdentifier
          obConn.Open connString
          obRS.Open "work.a", obConn, adOpenStatic, adLockReadOnly, _
                    adCmdTableDirect

    2012年6月10日 11:58

答案

全部回复

  • 或者在datagridview里显示

    2012年6月11日 14:00
  • 你好,

    这篇文章讲解了关于从ado迁移到ado.net的相关技术:http://msdn.microsoft.com/zh-cn/library/ms971505.aspx 

    http://msdn.microsoft.com/en-us/magazine/cc163954.aspx

    对于显示sas数据,既然已经获取到dataset,你可以将其填充到datatable中之后直接读取它,或者将其作为datagridview的数据源。

    希望以上信息对你有帮助。

    Regards


    Shanks Zen
    MSDN Community Support | Feedback to us

    • 已标记为答案 ElaineZ 2012年6月15日 6:51
    2012年6月12日 6:39
    版主
  • 谢谢版主!我现在的问题是将其作为datagridview的数据源,VS2008支持在界面上操作直接连接到数据源,但是操作一直失败,提示无效,请问通过写代码可以实现吗?

    2012年6月12日 7:22
  • 感谢你的回复!

    使用代码来绑定数据源是可以的,思路是使用一个dataAdapter来获取你想查询的表然后将其填充到dataset,这有一个c#写的代码http://stackoverflow.com/questions/2056381/reading-data-from-a-sas-data-source-in-net你可以使用这个在线工具将其转换成vb,由于我这里没有sas软件,所以无法测试,见谅。

    如果有任何问题,请告诉我,谢谢!


    Shanks Zen
    MSDN Community Support | Feedback to us

    2012年6月13日 2:53
    版主
  • 谢谢!不过那个在线工具一直不能用,不知道是怎么回事。

    我之前自己写的VB程序是通过调用SAS生成一个数据集放在sasuser里, 然后想在程序运行结束后将这个结果通过datagridview显示出来,代码如下(调用SAS的省略了)

    Dim obwsmgr As New SASWorkspaceManager.WorkspaceManager
    Dim obsas As SAS.Workspace
    Dim xmlinfo As String
    {
      obsas = obwsmgr.Workspaces.CreateWorkspaceByServer("", SASWorkspaceManager.Visibility.VisibilityNone, Nothing, "", "", xmlinfo)
    }
    Dim obAdapter As New System.Data.OleDb.OleDbDataAdapter("select * from sasuser.abc", "provider=sas.iomprovider.1; SAS Workspace ID=" + obsas.UniqueIdentifier)
    {
    Dim obDS As New DataSet()
    obAdapter.Fill(obDS, "sasdata")
    }
    DataGridView1.DataSource = obDS
    感觉和C#挺像的,但是一运行就会提示未处理OleDbException,  the object could not be found, make sure it was previously added to the object keeper. 请问是我漏写了什么吗?还是哪里写的不对呢?
    2012年6月13日 16:14
  • 已经改好了,谢谢你!
    2012年6月15日 6:51