急急急,快来帮忙 ----我要访问 VFP 制作的数据库,请问怎样实现动态访问。(200分)

  • 主题发起人 主题发起人 windyhero
  • 开始时间 开始时间
W

windyhero

Unregistered / Unconfirmed
GUEST, unregistred user!
我要访问 VFP 制作的数据库,请问怎样实现动态访问。

具体情况是这样的:数据库是按月份命名的,比如:200211表示数据是2002年11月的
而我现在要查询每个月的数据,请问各位大侠我该怎么办?另外我还想要两个月甚至更长时间的统计数据,怎么办?

拜托各位了,在线等待
 
放一个 TAdoTable 、TdataSource和 TDbGrid
执行以下程序就可以看到数据了!


function GetVFConnStr(d:string):string;
begin
Result:='Provider=MSDASQL.1;'+
'Persist Security Info=False;'+
'Extended Properties='+
'"Driver='+
'{Microsoft Visual FoxPro Driver};'+
'UID=;SourceDB='+d+
';SourceType=DBF;Exclusive=No;'+
'BackgroundFetch=Yes;Collate=Machine;'+
'Null=Yes;Deleted=Yes;";'+
'Initial Catalog='+d;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
DataSource1.DataSet:=AdoTable1;
DBGrid1.DataSource:=DataSource1;
AdoTable1.ConnectionString :=GetVFConnStr('d:/tree');//参数是存放数据的目录
AdoTable1.TableName :='200211';
AdoTable1.Active:=true;
end;


要查询,你要进行什么样的查询。
改用 TAdoQuery ,设置 SQL


 
必须用ado吗?
我试一下吧
我的数据库里数据表结构都是一样的
比如里面有一个字段money 吧,表示工资,我想统计某某人某几个月的工资总和,或者查询某
月的工资吧,
我觉得你的方法有问题?
 
1 设置统计的起始年月,并转换为数据库名。
如统计2002.1 ---2002.3 则需生成字串 200201 200202 200203
2 使用多库连接汇总
如select name, a.money,b.money,c.money,a.money+b.money+c.money as sum
from 200201 a,200202 b,200203 c
where a.name=b.name=c.name
 
用ADO
你可以自己写ADO的ConnectionString里的代码,不用预先配置了。
例:ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+pathname+';Persist Security Info=False';
Provider=Microsoft.Jet.OLEDB.4.0:为指定数据库引擎
Data Source=pathname:为指定的数据库路径
我一直是这么用的,没有问题。
 
jsxjd的方法应该是可行的!我试过.
 
你先把我上面的程序试一下,你就会明白道理。
 
但他们的数据库名是这样的:“File+时间”
谢谢各位了,我去试一下
另外我请问一个问题:我如何从电话输入这样一个字符串“asd1089764”
 
jsxjd老兄:
我的数据库里数据表结构都是一样的
比如里面有一个字段money 吧,表示工资,我想统计某某人某几个月的工资总和,怎么办?
lcl800的方法只适用于同一个数据库里的不同的表,我现在要用的是不同的数据库里相同表
名的表。。。。。。。。?
 
在不同的数据库中循环。
 
另外我请问一个问题:我如何从电话输入这样一个字符串“asd1089764”
 
接受答案了.
 
后退
顶部