我做了一个数据采集的程序,但是想把它改成每次开始采集数据的时候就生成一个数据库,下一次再打开程序的时候又生成一个数据库.请问该如何做?
而且这样做有一个问题就是查询的时候怎么办?用Ado控件,连接的数据库是固定的吧?能在程序里面动态地设置吗?但是这样又该如何判断哪个数据库才是符合条件的?比如有3个数据库,里面有"电流"和"时间"两个行,按照时间查询,怎么才能知道哪个数据库才是符合条件的?望各位高手不吝赐教!!!
而且这样做有一个问题就是查询的时候怎么办?用Ado控件,连接的数据库是固定的吧?能在程序里面动态地设置吗?但是这样又该如何判断哪个数据库才是符合条件的?比如有3个数据库,里面有"电流"和"时间"两个行,按照时间查询,怎么才能知道哪个数据库才是符合条件的?望各位高手不吝赐教!!!
或以上版本,用类似下面的方法Sub file()
Dim istr As New ADODB.Stream
Dim iRe As New ADODB.Recordset
With istr
.Open
.Type = adTypeBinary
.LoadFromFile ("c:\a.xls")
End With
ire.open "表名",数据库连接字符串,1,3
ire.addnew
ire("保存文件的字段名")=istr.read
ire.update
ire.close
istr.close
End Sub
http://expert.csdn.net/Expert/topic/2339/2339924.xml?temp=.1910517
我觉得没有必要生成新表呀,每次采集就生成新表岂不是慢慢的会变成成千上万的表??
你应该是增加纪录的概念(从你将表说成数据库就知道你对数据库一点都不懂啊,别骂我哦)
既然有个时间列,你可以这样嘛:
假设表为t1 , 有两列: 电流 时间
那么每次采集的时候可以往这个表添加纪录呀(有个时间列所以以后也可以判断,没有也可以加一个标志采集时间的列呀)
比如:10.1采集得到
电流 时间
0.2 2003-10-01 08:20
0.3 2003-10-01 09:30
那么下次采集再往里添加
0.15 2003-10-02 03:20
0.23 2003-10-02 20:20
.....
这样查询的时候只对这个表t1进行判断帅选出你要的记录就可以了
比如我要查询出10.2号采集的数据可以这样写
Dim rs As New ADODB.Recordset
rs.Open "select * from t1 where convert(varchar(10),时间,120)='2003-10-02'"
Set adodc1.DataSource = rs
Dim cat As New ADOX.Catalog
cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\new.mdb"建表用create table .... (SQL)2.连接:引用MICROSOFT OLD DB service 1.0Dim DataLink As MSDASC.DataLinks
Dim sConnect As StringOn Error Resume Next
Set DataLink = New MSDASC.DataLinks
sConnect = DataLink.PromptNew
Set DataLink = Nothing
If sConnect = "" Then Exit Sub
Set Conn = Nothing
Set Conn = New ADODB.Connection
Conn.ConnectionString = sConnect
Conn.Open
楼主可能用的数据库很老,例如:dbaseIII,所以就说成数据库(dbf为数据库)
同意yoki(小马哥)说得
你还可以按一定时间(半个月)或记录数添加表,不见得放在一个表中
你可以建立一个临时表,用来存放一次抄收的数据,当程序关毕的时候将本次抄收的数据存在原有的数据库中,这样操作起来能简单一些,而且速度还比较的快。同意 : yoki(小马哥) ( ) 所说的。
你说的和我原来做的一样!
但是公司老大提了新要求.他是叫我每次新建一个数据库.理由为:
1,时间一长,数据库量太大,如果要拷贝出来很不方便
2,因为每次进行的工艺不一样,所以时间的长度也不一样,最好还是按照工艺来存,所以不能只用一个表
3,我晚上看了书知道用SQL里面的CREAT DATABASE 可以创建一个数据库
但是觉得还是多生成几个表比较方便
但是那样的话不还是一个数据库吗?第一个条件不是还是不符合吗?郁闷!
ADO先和A连
把数据存到里面(比如说是100个)后
再和B连