1.用mshflexgrid控件,但不没有用ado绑定,用循环实现赋值,发觉很慢,
而且有个现象,如果有一次查询集合为空,以后无论查询记录集合rst是否为空,我的第一行(标题固定行)也和其它行的背景颜色一样了,不知是什么原因.
想请教一下,mshflexgrid到底支持显示多少行?能不能提高其填充速度?2.用日历控件.dtppicker.value能不能赋给一个空值呢?或者是一个空字符??
当我想把空值赋给它时,总是提示 "mulitiselect不能设置空值"但在属性窗口中又找不到这个属性.用isnull判断后再赋值好像不执行,很奇怪.3.做一个查询后返回一个记录集合rst,有没有什么办法再打开一个记录集合是是上一个记录集合的一个子查询?我知道SQL中可以用VIEW来实现,但我没试过,不知如何做,提示一下.分数很少,很对不起,但新手请您多多帮助!!
而且有个现象,如果有一次查询集合为空,以后无论查询记录集合rst是否为空,我的第一行(标题固定行)也和其它行的背景颜色一样了,不知是什么原因.
想请教一下,mshflexgrid到底支持显示多少行?能不能提高其填充速度?2.用日历控件.dtppicker.value能不能赋给一个空值呢?或者是一个空字符??
当我想把空值赋给它时,总是提示 "mulitiselect不能设置空值"但在属性窗口中又找不到这个属性.用isnull判断后再赋值好像不执行,很奇怪.3.做一个查询后返回一个记录集合rst,有没有什么办法再打开一个记录集合是是上一个记录集合的一个子查询?我知道SQL中可以用VIEW来实现,但我没试过,不知如何做,提示一下.分数很少,很对不起,但新手请您多多帮助!!
2、没救,日历控件你必须进行赋值,不赋值还真报错,必须赋的值还得像一个日期的模样,不然的话还不知道会出什么变故。
3、没太明白你的意思,是不是想在查询出来的情况下再进行查询?那就在where条件下再加上and 再加上查询条件就行了。VIEW一般用于不同表之间的复合查询,在后台实现的,其实可以看做成为一个虚拟表。
3.
就是我设置了三个combox,分别为字段名,查询条件(=,<,like....),然后是所查的范围.
查询后的记录集放到grid中显示,现在我有一个checkbox,点击它后就是在当前的记录集合上再进行查询,如何做呢?用你的方法全不会执行很慢呢?因为我联接了三个表.还有一个问题,mshflexgrid最多能显示多少行?我有10,000多行需要显示.能不能提高其它速度,不用分页实现.谢谢.清楚了就结贴.
1.记录集转换成数组来进行赋值给表格.[我用的是三层架构,觉得这样的速度还可以]
2.开始赋值时,MsFlexGrid1.ReDraw=False 填充完成后:MsFlexGrid1.ReDraw=True!
如果是背景色会一样的话,你只要在开始填充前,让表格始终有几个空白行,这样就不会出现这种情况了!并且也会比较好看的!
第二个问题:这是日历控件自身的问题,无法解决[指我],但是你可以结合文本框控件来处理.
第三个问题:这个不好做,帮你UP一下!呵呵...*^_^*
考虑数据库底层的算法要比你自己的算法快,
所以你可以使用SQL语句分页查询。
比如第n页查询
SELECT TOP 10 * FROM [TableName] WHERE [ID] IN (SELECT TOP 10*n [ID] FROM [TableName] ORDER BY [ID]) ORDER BY [ID] ORDER BY [ID] DESC第二个我想两个不是办法的办法,第一个你自己设定一个不会用到的时间,
比如49-10-1当用户输入这个时间的时候认为null保存到数据库,
第二个就是妳可以使用一个或着三个textbox代替日期控件,
三个比较好编程,一个看上去好看点。第三个最好办,使用带条件的SELECT语句打开表就好了。
Access下的
SELECT * FROM (SELECT * FROM [Students] WHERE [Name]='喻泓飞') AS [Temp]
to feihong0233 我要的不是二次查询,可能是多次啊,用户如果想要多少次就多次?
所有最好每次都能得到一个字符串赋给一个变量,然后我再可以用啊. as temp是表示是个临时表吗?
我的意思是指最好有办法每次再从这个新的记录集合去找,这样免得SQL语句太长,但是我不会写,即能不能这样?
private sub cmdseek_click' 每次查找
i=i+1
conn.exectue SQL
end sub create view Myview&"& cstr(i)&" as select myview&"& cstr(i-1) &"
if check1.value=vbchecked then
然后再SQL="select * form myview&"& cstr(i)&""
我只是有这种思路,不知道VB里面是否可以这样做呢?
我用的是SQL,谢谢你,再帮帮看,我就结贴了.
有没有别的方法,谢谢!!!
简单的测试源码如下.:
Dim Conn As ADODB.Connection
Dim Rst As ADODB.Recordset
Private i As Integer
Private BSTR(1 To 20) As StringPrivate Sub Check1_Click()
i = 0
End SubPrivate Sub Command1_Click()
i = i + 1
BSTR(i) = "Select * From 工作人员信息表 Where " & cblField.Text & "" & cblCondtion.Text & "'" & cblNum.Text & "'"
Call Form_Load Rst.Open Seeks, Conn, adOpenKeyset, adLockOptimistic
With MSHFlexGrid1
Set .DataSource = Rst
.Refresh
Rst.Close
End With
End SubPrivate Sub Form_Load()
Set Conn = New ADODB.Connection
Set Rst = New ADODB.Recordset
Conn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=hospital;Data Source=DAISYDEW"
With MSHFlexGrid1
Rst.Open "SELECT * from 工作人员信息表 ", Conn, adOpenKeyset, adLockOptimistic
Set .DataSource = Rst
.Refresh
Rst.Close
End With
End Sub
Private Function Seeks() As StringDim ASQL As String
If Check1.Value = vbChecked Then
If i > 1 Then
ASQL = "Create View myView" & CStr(i) & " As " & BSTR(i) '当I大于1时做.
Conn.Execute ASQL
Seeks = "select * from myView" & CStr(i) & ""
Else
If i > 0 Then
ASQL = "Create View myView" & CStr(i) & " As Select * From 工作人员信息表"
Debug.Print ASQL
Conn.Execute ASQL
Seeks = "select * from myView" & CStr(i) & ""
End If
End If
Else
Seeks = "Select * From 工作人员信息表 Where " & cblField.Text & "" & cblCondtion.Text & "'" & cblNum.Text & "'"
End If
End Function
将你的rst存成一个临时表,然后再针对此临时表查询
msflexgrid行数好像和内存等硬件相关。
2.用len(trim(dtppicker.value))试试,如果=0,则为空
3. (1):保存上一次查询的条件,再次查询时,将两个条件一起用
(2):用select * into newTableName.....的方法建一个新的临时表,下一次对这个临时表
进行查询,用完后将表删除.