Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

再次求教:谢谢

Alshift  发表于:2010-12-26 09:35:21  
复制

详细说明在附件中,

数据比较多,请多多帮忙,谢谢。

 

Top
王震 发表于:2010-12-26 10:27:14
煮江品茶 发表于:2010-12-26 14:02:31

很简单嘛:

 

点击下载此附件

 



王震 发表于:2010-12-26 14:33:53

谢谢斑竹的解答。

当四个条件都满足0时,一个时间对应的记录只有UpdateMillisec=500,而没有UpdateMillisec=0时UpdateMillisec=500的记录要保留。

当四个条件都满足0时,一个时间对应的记录有两个UpdateMillisec=500和UpdateMillisec=0,此时只要UpdateMillisec=0的,不要UpdateMillisec=500的。

请再帮忙写下,谢谢。



煮江品茶 发表于:2010-12-26 15:34:15

查询结果很非常慢:

 

SELECT *
FROM 半成品结果
WHERE (((IIf([direction]=0,IIf([price]=[askprice1],0,1),0)+IIf([direction]=1,IIf([price]=[bidprice1],0,1),0)+IIf([direction]=0,IIf([Order_zn.volume]=[askvolume1],0,1),0)+IIf([direction]=1,IIf([Order_zn.volume]=[bidvolume1],0,1),0))=0) AND ((UpdateMillisec)=IIf(DCount("*","半成品结果","format(UpdateTime,'hhnnss')='" & Format([UpdateTime],"hhnnss") & "'")>1,0,500)));



王震 发表于:2010-12-26 16:08:52
谢谢斑竹的解答,只是查询速度太慢了,半小时也没出来结果。

煮江品茶 发表于:2010-12-26 16:36:05
呵呵,那给你搞一个快点的。

煮江品茶 发表于:2010-12-26 17:18:35

1、查询1

 

SELECT 半成品结果.UpdateTime, 半成品结果.UpdateMillisec, *
FROM 半成品结果
WHERE (((IIf([direction]=0,IIf([price]=[askprice1],0,1),0)+IIf([direction]=1,IIf([price]=[bidprice1],0,1),0)+IIf([direction]=0,IIf([Order_zn.volume]=[askvolume1],0,1),0)+IIf([direction]=1,IIf([Order_zn.volume]=[bidvolume1],0,1),0))=0))
ORDER BY 半成品结果.UpdateTime, 半成品结果.UpdateMillisec;

 

2、查询2


SELECT a.UpdateTime AS UpdateTime, First(a.UpdateMillisec) AS UpdateMillisec, First(a.Shfe_zn.InstrumentID) AS ShfeInstrumentID, First(a.LastPrice) AS LastPrice, First(a.Shfe_zn.Volume) AS ShfeVolume, First(a.Turnover) AS Turnover, First(a.OpenInterest) AS OpenInterest, First(a.BidPrice1) AS BidPrice1, First(a.BidVolume1) AS BidVolume1, First(a.AskPrice1) AS AskPrice1, First(a.AskVolume1) AS AskVolume1, First(a.UpperLimitPrice) AS UpperLimitPrice, First(a.LowerLimitPrice) AS LowerLimitPrice, First(a.OpenPrice) AS OpenPrice, First(a.ClosePrice) AS ClosePrice, First(a.HighestPrice) AS HighestPrice, First(a.LowestPrice) AS LowestPrice, First(a.Order_zn.InstrumentID) AS OrderInstrumentID, First(a.Direction) AS Direction, First(a.OffsetFlag) AS OffsetFlag, First(a.Price) AS Price, First(a.Order_zn.Volume) AS OrderVolume, First(a.OrderSysID) AS OrderSysID, First(a.InsertTime) AS InsertTime, First(a.OrderStatus) AS OrderStatus, First(a.VolumeRemain) AS VolumeRemain
FROM 查询1 AS a
GROUP BY a.UpdateTime;

 

这样就飞快了。

 


 

点击下载此附件

王震 发表于:2010-12-26 21:09:08

谢谢斑竹的解答。

不过结果不是我要的。

我通过另外一个笨的方法解决了,现在还有一个小问题。

就是如何给一个表用宏或代码自动加一个自动编号的ID。

谢谢,请再帮忙写一下。

另外,想加斑竹QQ,方便的时候请允许加入,好向您请教,谢谢。



煮江品茶 发表于:2010-12-26 21:15:30
Sub 自动编号(tbname As String, MyID As String)
Dim strsql As String
strsql = "ALTER TABLE " & tbname & " ADD COLUMN " & MyID & " Counter"
CurrentDb.Execute strsql
End Sub

王震 发表于:2010-12-27 20:20:57

谢谢斑竹的解答。

再弱弱的问一下斑竹,您写的代码,我该怎么用?

谢谢。



罗衣惹轻尘 发表于:2010-12-28 10:16:45

在查询时,选择生成器\函数,然后选择数据库名称(不是内置函数那个),点击右边的值,输入参数,按确定。



罗衣惹轻尘 发表于:2010-12-28 10:34:59

说错了~~那个是函数用的。

这个是子过程,要写一个函数来调用,例如:

fuction MySub()

call 自动编号("表1", "我的字段")

end function

然后再用宏RunCode来调用



煮江品茶 发表于:2010-12-28 17:12:42

在某个事件中写:

call 自动编号("表名称","ID字段名称")



王震 发表于:2010-12-28 23:12:26

请问:代码写在哪呢?

Sub 自动编号(tbname As String, MyID As String)
Dim strsql As String
strsql = "ALTER TABLE " & tbname & " ADD COLUMN " & MyID & " Counter"
CurrentDb.Execute strsql
End Sub
谢谢。



总记录:14篇  页次:1/1 9 1 :