access,vb 6.0 ,win98程序可以安装,客户机没安装access数据库.但是出现了个问题.当把datagrid控件里显示的数据添加到另一个表,再把这个表用datagrid显示出来,但是只有日期类型和整形能显示出来.其他的的类型都无法显示.因为没有装access数据库,所以也无法看到数据库中表的类容是不是也没有数据.后来又在其他机子上安装,有的是没有这个问题出现的,一切正常.有的机子就出现上述问题.后来发现出现问题的机子都安装了另一个软件.所以初步认定是,程序兼容性问题.但是真的是这样吗?还是程序有问题呢?请各位大虾帮帮忙.谢谢

解决方案 »

  1.   

    安装一下数据库引擎mdac_typ.exe(ACCESS 2.7的)
      

  2.   

    检查一下数据引擎的版本
    换ACCESS 2.7的
      

  3.   

    数据库引擎适用够用就好了.
    例如:WIN98下自带的ADO版本是2.1.WIN2K是的2.5
    其实,版本与版本之间的差异比较小(例如:2.5支持流.2.1不支持).所以,为了通用与差小错误.在能够驱动的前题下,尽量向低靠拢.
      

  4.   

    mdac_typ.exe在安装程序的时候已经安装了的
      

  5.   

    程序兼容性问题是有的,比如以前我安装kingdee后。vb6就不正常了。大部分都是共享文件引起的,注意他们的版本!
      

  6.   

    那怎样看mdac_typ.exe的版本呢?我的mdac_typ.exe的属性里面的文件版本显示是4.71.1015.0
    不知道是什么意思
      

  7.   

    ADO简介 
    简介
    ActiveX Data Objects (ADO) 是微软最新的数据访问技术。它被设计用来同新的数据访问层OLE DB Provider一起协同工作,以提供通用数据访问(Universal Data Access)。OLE DB是一个低层的数据访问接口,用它可以访问各种数据源,包括传统的关系型数据库,以及电子邮件系统及自定义的商业对象。 
    ADO向我们提供了一个熟悉的,高层的对OLE DB的Automation封装接口。对那些熟悉RDO的程序员来说,你可以把OLE DB比作是ODBC驱动程序。如同RDO对象是ODBC驱动程序接口一样,ADO对象是OLE DB的接口;如同不同的数据库系统需要它们自己的ODBC驱动程序一样,不同的数据源要求它们自己的OLE DB提供者(OLE DB provider)。目前,虽然OLE DB提供者比较少,但微软正积极推广该技术,并打算用OLE DB取代ODBC。 ADO向VB程序员提供了很多好处。包括易于使用,熟悉的界面,高速度以及较低的内存占用(已实现ADO2.0的Msado15.dll需要占用342K内存,比RDO的Msrdo20.dll的368K略小,大约是DAO3.5的Dao350.dll所占内存的60%)。同传统的数据对象层次(DAO和RDO)不同,ADO可以独立创建。因此你可以只创建一个"Connection"对象,但是可以有多个,独立的"Recordset"对象来使用它。ADO针对客户/服务器以及WEB应用程序作了优化。 本文的目的是带你进入ADO广阔的世界并开始使用它。 在哪里能得到ADO?
    目前ADO1.5版已经可以从微软网站免费下载。到目前为止,微软网站仍是你获取有关ADO最新信息的最佳场所。ADO1.5是作为OLE DB SDK的一部分提供的。你可以从下面这个网址下载: 
    http://www.microsoft.com/data/oledb/download.htm 在下载之前请先确认OLE DB SDK提供的各项特性。下载文件大约有15M,如果完全安装的话要占用80M的硬盘空间。如果你只对ADO感举趣,就选择最小安装,这样只会占用你15M的硬盘空间。关于ADO的网页在: http://www.microsoft.com/data/ado/adoinfo.htm. 在这里你可以找到许多关于ADO的示例代码和文章,尤其是在"Workshop"系列的文章中。你也可以从本站下载ADO2.5的帮助文件。 尽管OLE DB SDK提供自己的ADO帮助文件,你会发现ADO1.0的帮助文件更易于使用。同时它还向你提供ADO对象模型的图示 ADO是如何组织起来的?
    以前的对象模型,如DAO和RDO是层次型的。也就是说一个较低的数据对象如Recordset是几个较高层次的对象,如Environment和QueryDef,的子对象。在创建一个QueryDef对象的实例之前,你不能创建DAO Recordset对象的实例。但ADO却不同,它定义了一组平面型顶级对象. 
    最重要的三个ADO对象是Connection, Recordset和Command. 本文将主要介绍Connection和Recordset这两个对象。每个Connection的属性定义了与数据源的连接。Recordset对象接收来自数据源的数据。Recordset可以与Connection一起起使用,先建立一个连接,然后获取数据。尽管如此,Recordset也可以被单独创建,其Connection参数可以在Open属性定义。 如何使用ADO?
    一旦安装了ADO,在VB的工程->引用对话框中你就可以看到象下图所示的东西了: 
    选择 "ActiveX Data Objects 1.5 Library" (ADODB).在其下的 "ADO Recordset 1.5 Library"是一个客户端的版本(ADOR),它定义了有聚的数据访问对象。ADOR 对于客户端的数据访问来说是足够的了,因为你不需要Connection对象来建立与远程数据源的联系。 如果你想要访问更多的外部数据源,你需要安装这些外部数据源自己的OLE DB Provider,就象你需要为新的数据库系统安装新的ODBC驱动程序一样。如果该外部数据源没有自己的OLE DB Provider,你就得使用OLE DB SDK来自己为这个外部数据源创建一个OLE DB Provider了。这已不是本文讨论的范围了。 示例 下面的示例代码以Northwinds数据库作为远程数据源,然后用ADO来访问它。首先在控制面板中打开“32位数据源”,单击“添加”按钮。在弹出的对话框中选择 "Microsoft Access Driver (*.mdb)" 作为数据源驱动程序。 然后按下图所示,在对话框中填写下面的内容 选择数据库Northwinds所在路径。单击完成,退出ODBC设备管理器。 启动一个新的VB工程,在窗体的Load事件中输入下面的代码: Private Sub Form_Load()Dim cn As ADODB.Connection
    Set cn = New ADODB.Connection注释:Set Connection properties
    cn.ConnectionString = "DSN=RDC Nwind;UID=;PWD=;"
    cn.ConnectionTimeout = 30
    cn.OpenIf cn.State = adStateOpen Then _
    MsgBox "Connection to NorthWind Successful!"cn.CloseEnd Sub
    按F5运行程序,看看,一个消息框弹出来告诉你连接成功了。请注意,这里我特别注明了是ADODB.Connection,而不是ADOR.Connection,这样做是为了将二者区分开(如果你引用了ADODB和ADOR的话,这样做很有必要)。连接字符串看上去同RDO的连接字符串差不多。事实上,二者确实差不多。 
    如果我们要访问一个SQL server数据库,你的Connection代码看上去应象下面所示: 注释:设置连接属性cn.Provider = "MSDASQL"
    cn.ConnectionString = "driver={SQL Server};" & "server=prod1;uid=bg;pwd=;database=main"
    cn.Open"Provider"属性指向SQL Server的OLE DB Provider. 
    回到我们的示例程序,让我们创建一个Recordset对象来访问“Orders”表,并从该表的"ShipCountry"字段中产生头十个不重复的国家名。修改窗体Load事件中的代码,让它看上去象下面这样。 Private Sub Form_Load()Dim cn As ADODB.Connection
    Dim rs As ADODB.RecordsetDim sSQL As String
    Dim sOut As String
    Dim Count As IntegerSet cn = New ADODB.Connection
    Set rs = New ADODB.Recordset注释: Set properties of the Connection.
    cn.ConnectionString = "DSN=RDC Nwind;UID=;PWD=;"
    cn.ConnectionTimeout = 30
    cn.OpenIf cn.State = adStateOpen Then _
    MsgBox "Connection to NorthWind Successful!"sSQL = "SELECT DISTINCT Orders.ShipCountry FROM Orders"
    Set rs = cn.Execute(sSQL)注释:Enumerate the recordset
    sOut = ""
    For Count = 1 To 10
    sOut = sOut & rs("ShipCountry") & vbCrLf
    rs.MoveNext
    Next CountMsgBox sOut, vbExclamation, "ADO Results"
    cn.CloseEnd Sub
    运行程序后,你会看到如下图所示的消息框。 
    不幸的是,目前这个Recrodset对象是只读的和forward cursor。如果你想要获取更多的功能,你需要创建一个独立的Recordset对象,该对象拥有自己的Connection属性,就象下面的代码所示: Private Sub Form_Load()Dim rs As ADODB.RecordsetDim sSQL As String
    Dim sOut As String
    Dim Count As IntegerSet rs = New ADODB.RecordsetsSQL = "SELECT DISTINCT Orders.ShipCountry FROM Orders"rs.Open sSQL, "DSN=RDC Nwind;UID=;PWD=;", adOpenDynamic注释:Report Recordset Connection information
    MsgBox rs.ActiveConnection, , "Connection Info"注释:Enumerate the recordset
    sOut = ""
    For Count = 1 To 10
    sOut = sOut & rs("ShipCountry") & vbCrLf
    rs.MoveNext
    Next CountMsgBox sOut, vbExclamation, "ADO Results"rs.CloseEnd Sub
    上面代码返回的结果同前例一样,但是本代码中的Recordset是独立的。这一点是DAO和RDO做不到的。Recordset对象的Open方法打开一个代表从SQL查询返回的记录的游标。虽然你可以用Connection对象同远程数据源建立连接,但请记住,在这种情况下,Connection对象和Recordset对象是平行的关系。 
    总结
    本文仅向你介绍了ADO强大的功能的冰山一角。微软承诺,在将来ADO将会取代DAO和RDO。所以现在你应该考虑如何将你的数据访问代码投向ADO的怀抱。这种转变不会很痛苦,因为ADO的语法同现有的语法差不多。也许微软或第三方会在将来开发出转换向导来简化这一转换过程。从现在起,你就应开发纯ADO代码的程序。你也可以继续使用DAO或RDO代码来开发你的程序,但落伍的感觉总是不好的。  
      

  8.   

    暈死,如果officexp安裝不完全,我就死循環了,我所有的數據全部存取在access中,解密取出sql的信息以後才能連SQL還是叫用戶裝Access,現在誰還office不安全