📄 index1.txt
字号:
1,怎样做来确保数据的实时性
我最近在用VB6.0编写一个数据库管理软件,客户机为WIN98操作系统,服务器端为NT Server4.0+SQL Server2000,请问如何在多个用户访问同一个数据库时始终确保数据的同步,也就是说不管哪一个客户端程序往某个数据库中添加或删除记录,其它正在连接该数据库的客户端程序从数据库中读取的数据都应该是当前最后一次被更新过的数据,即数据必须是实时的,任何对该数据库中数据的更改都会立即反映到连接该数据库的其它客户端程序中,我知道用数据控件连接到数据库时可以利用其记录集的Refresh刷新方法对当前记录集进行刷新来获得最新的数据,但是我在程序中用的是ADO对象访问数据库,该对象的记录集中好象没有Refresh方法,请问专家我该怎样做来确保数据的实时性,最好不要在客户端专门编程来实现而由服务器端定时发回最新的数据 ,因为我怕会影响网络访问的速度,多谢!
<END>
2,在NT服务器上注册网络中的SQL SERVER 服务器失败,提示为:access denied
在NT服务器上SQL SERVER 7 ENTERPRISE MANAGER中注册网络中的SQL SERVER 服务器失败,提示为:access denied,当把client network unitilty 中默认网络协议由命名管道改为TCP/IP 时,提示:一般网络错误,请检查网络文档(general net error)。在VB中用ADO访问数据库遇到同样问题。请问这是如何造成的,该如何解决?我在做项目过程中遇到该问题,急待解决,谢谢!
<END>
3,对应用程序进行打包时能否SQL Server数据库文件也打进去
我最近在用Visual Basic6.0 编写一个管理软件,客户端程序通过ADO对象从局域网访问数据库服务器,数据库采用的是SQL Server2000,客户机为WIN98操作系统,服务器为Windows NT Server4.0,请问在对应用程序进行打包时,能否象采用Access2000数据库时那样直接把数据库文件*.mdb和应用程序打包在一起制作成setup.exe安装程序然后刻在光盘中,用户运行setup.exe安装程序就可把数据库文件安装到应用程序所在目录中,据我所知,SQL Server的数据库文件好象不能象Access数据库文件那样只要随便复制到装有Access2000的机器上就可以用Access2000或者编写的相应数据库访问程序打开并读取和修改数据。如果这种方法行不通,请指教我该怎样制作安装程序,谢谢!
<END>
4,多次操作后数据库文件尺寸大大增加
假如在VB6.0中删除了10000条记录(或两个表)后,再添加10000条记录(或两个表),此时记录数(或表)的实际数量并未增加,但文件尺寸大大增加,多次操作后,文件尺寸巨大。请问如何使此文件不用压缩方法即能保持原大小?
<END>
5,如何用SQL存储图片,再用VB调用这些图片
如何用SQL存储图片???再用VB调用这些图片???
<END>
6,在VB中如何实现把当前库或表转换为另外一种数据库文件
在VB中如何实现把当前库或表转换为另外一种数据库文件。例如把MY.MDB中的表MYTABLE1转换为EXCEL中的表或DBF文件。
<END>
7,存取过程使用了暂存的Table,当用VB打开的时候会提示对象已经关闭
难题如下:
有存取过程如下:
create proc usp_calc_sex
as
create table #t_sex(
unit char(10) not null,
sex char(10) not null,
r_number int null)
declare @count1 int
declare @count2 int
declare @dept_code varchar(10)
declare @dept_name varchar(20)
declare cur_deptd cursor for
select dept_code,dept_name from t_dept WHERE dept_level = 1 order by dept_code
open cur_deptd
fetch cur_deptd into @dept_code,@dept_name
WHILE (@@fetch_status=0)
begin
select @dept_code = ltrim(rtrim(@dept_code)) +"%"
select @count1=count(*) from t_emp where leave_flag="N" and dept_code like @dept_code and sex="男"
select @count2=count(*) from t_emp where leave_flag="N" and dept_code like @dept_code and sex="女"
insert #t_sex values(@dept_name,"男",@count1)
insert #t_sex values(@dept_name,"女",@count2)
fetch cur_deptd into @dept_code,@dept_name
end
close cur_deptd
deallocate cur_deptd
select @count1=count(*) from t_emp where leave_flag="N" and sex="男"
select @count2=count(*) from t_emp where leave_flag="N" and sex="女"
insert #t_sex values(" 全公司","男",@count1)
insert #t_sex values(" 全公司","女",@count2)
select * from #t_sex
这样的存取过程返回的结果在VB6.0中如何让在DataGrid中显示?请仔细看一下存取过程,它使用了暂存的Table,当您用VB打开的时候,它会提示您对象已经关闭。
<END>
8,ADO的RECORDSET的RECORDCOUNT属性总是为-1
请问如何判断ADO的RECORDSET为空?用RECORDCOUNT属性好象无论空否,值总是为-1。
<END>
9,VB打包时,ODBC的配置怎么安装
用VB打包时,ODBC的配置怎么安装?
<END>
10,如下错误:实时错误-2147217864(80040e38)无法为更新行为集定位
在执行到第二个adoprimaryrs.update时,会产生如下错误:实时错误-2147217864(80040e38)无法为更新行为集定位:一些值可能已在最后读取后改变。巡更数据库时间为acess数据库,其中只有只有3个字段,分别为巡更员id(long)(顺序位置0)、巡更员信息(text)(顺序位置1)、是否有报警(boolean)(顺序位置2)
Option Explicit
Dim WithEvents adoPrimaryRS As Recordset
Dim mbChangedByCode As Boolean
Dim mvBookMark As Variant
Dim mbEditFlag As Boolean
Dim mbAddNewFlag As Boolean
Dim mbDataChanged As Boolean
Private Sub Form_Load()
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=E:\my program\emaptemp\xungeng.mdb;"
Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "select * from 巡更数据库时间", db, adOpenStatic, adLockOptimistic
adoPrimaryRS.AddNew
adoPrimaryRS!巡更id = 123
adoPrimaryRS.Update
' adoPrimaryRS.EditMode
adoPrimaryRS(1) = "iuyiouy"
adoPrimaryRS.Update
Set grdDataGrid.DataSource = adoPrimaryRS
mbDataChanged = False
End Sub
水平: 刚入门
<END>
11,如何将一个TXT文件转化成Access格式数据库中的表
如何将一个TXT格式的文件转化成ACCESS格式数据库中的表?
<END>
12,到其他机器安装均提示“未能找到提供者,可能未被正确安装”的出错
问题:如下语句:
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data.mdb;Jet OLEDB:database password=123456"
conn.Open connStr
s_sql = "Select xm,xh,nj,hh,dd from xmxxb order by id desc"
datxm.ConnectionString = connStr
datxm.CommandType = adCmdText
datxm.RecordSource = s_sql
datxm.CursorLocation = adUseClient
datxm.Refresh
当前的数据有15万条记录,但datagrid更新速度慢,需6秒时间才可以将datxm记录显示出来;
假如将上面的连接connStr修改为 connStr = "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=" & App.Path & "\data;Jet OLEDB:database password=123456" 并且将datxm.CursorLocation修改为 datxm.CursorLocation = adUseServer,速度很快,只需0.7秒显示数据,但是打包后,到其他机器安装均提示“未能找到提供者,可能未被正确安装”的出错!
请问怎样使用Jet.OLEDB.4.0 的情况下,可以提高datagrid(15万条记录)的显示速度。多谢!
<END>
13,通过ADO连接服务器上的数据库为什么不能成功
我使用VB6和SQLSERVER7进行C/S编程,数据库在服务器端,我的编程是在客户机上进行,我想用ADO,从VB6连接服务器上的数据库。
简单的程序:
dim cn as adodb.connection
set cn =new adodb.connection
dim strCn as string
strCN="Provider=SQLOLEDB.1;UID=sa;PWD=;data Source=\\compserver\mssql7\data\comp.mdb"
cn.open strCN
使用以上方法,无法打开连接。
<END>
14,ADO中如何排序
如果用ACSSESE97对一个表创建了一个索引,用VB的ADO对象打开RECORDSET时如何使用索引,是自动吗?如果一个表有好几个索引,如何在VB中分别使用?FOXBASE的索引有个INDEX文件,用哪个调哪个。很方便,在VB不知该怎么办,尤其我需要的是两个字段的索引,如日期和时间,先按日期排序再按时间排序。
<END>
15,引用ADO就不能创建数据库和表了吗
在VB6中如果引用DAO则可以创建一个数据库也可以创建数据表,而如果引用ADO却不存在database对象和TableDefs集合,难道引用ADO就不能创建数据库和表了吗?如果要在程序中创建数据库和表必须引用DAO吗?由于我在程序中对记录集的操作已经引用ADO编写了大量代码,如果创建数据表用ADO实现不了,在一个程序中
同时引用ADO和DAO是否有什么冲突?希望帮我解决这个疑问,谢谢!
<END>
16,如何关闭(断开)用ADO创建的数据库连接
如何关闭(断开)用ADO创建的数据库连接?
比如我已经用ADO连接到数据库,可是我想创建新的表(在同一个数据库),用DAO创建,系统提示"实时错误3356,数据库已经被***用户以排它的方式打开,当数据库可用后再试一次"请指教?
<END>
17,用ADO编写大型查询时经常出现超时已过期错误
数据记录数:10万条左右 3个表连接查询。问题:我在用ADO编写一个大型查询时经常出现如下错误:
(对于较小的单表查询不会出现 )
运行时错误: -2147217817 ( 80040231)
超时已过期
我尝试把CommandTimeout 的值改动,但仍很难解决这个问题,不知是否同SQL SERVER 6.5 的系统配置有关。望给予指 教!谢谢!!
源程序代码如下:
Function Test()
Set ServerCNN = New ADODB.Connection
Set rsADO = New ADODB.Recordset
strCnn = pubStrCnn
ServerCNN.Mode = adModeReadWrite
ServerCNN.Open strCnn
ServerCNN.CommandTimeout = 30
pubStrYearDB = "N1999"
pubStrServerName = "baoxi"
pubStrCnn = " Provider=SQLOLEDB.1;Persi0st Security Info=False;User ID=sa;Initial Catalog=" & pubStrYearDB & ";Data Source=" & pubStrServerName
With rsADO
.ActiveConnection = strCnn
''.CursorLocation = adUseClient
.CursorLocation = adUseClient
.LockType = adLockReadOnly
''.LockType = adLockOptimistic
.CursorType = adOpenDynamic
End With
SQL_string =SELECT '成 品 编 号 '=(SUBSTRING(产 品 编 号 ,1,1)+DMHY.含 义 ), _
'数 量 '=SUM(数 量 ) _
from XSH,XSHZ,DMHY _
where XSH.编 号 =XSHZ.编 号 _
AND XSHZ.日 期 BETWEEN '1999-06-13' AND '1999-12-13' _
AND XSHZ.专 卖 店 IN ('BX002','BZ001','CF001','CS01') _
AND XSH.产 品 编 号 LIKE 'B%' _
and dmhy.编 号 ='1' and dmhy.标 志 =substring(产 品 编 号 ,1,1) _
and xshz.月 编 号 not like '%--%' _
GROUP BY SUBSTRING(产 品 编 号 ,1,1)+dmhy.含 义 _
ORDER BY 2 DESC
With rsADO
If .State = adStateOpen Then
.Close
End If
.Source = SQL_string
.Open
End With
End function
<END>
18,将ACCESS库中表复制到SQL库中,ACCESS库设有密码时却无法通过
我想将本地机上ACCESS库中一张表的内容复制到远端SQL库中。
方法如下:
首先用ADO和远程SQL库建立联接:设CN1为远端SQL库的激活联连,我要将本地ACCESS库(假设为D:\TEST\DB1.MDB)中的TAB5表中的内容复制到CN1联连中的TAB1库(两库数据结构完全相同)
现用如下语句:
cn1.Execute "insert into tab1 select * from " + "[;database=D:\test\db1.mdb].tab5"
能成功操作,但当本地ACCESS库设有密码时却无法通过,不知道 密码的具体写法是怎样的?
<END>
19,如何用ado recordset的sort 属性对字段按降序排列
何用ado recordset的sort 属性对记录集的某个字段按降序排列?(最好有代码实例)
<END>
20,怎样查找多重条件的记录
我看过很多关于查询的例子,比如用seek方法在一个表中查找name是“张三”的记录。我的问题是怎样查找多重条件的记录,比如说查找sex是“male”的,address是“北京”或“上海”的name是“张三”的记录。敬请指教,谢谢。
<END>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -