@@@@@数据库编程中高手请进@@@@@@(俺的信誉很好的解决了就给分的!)

kofkim 2001-06-06 03:52:00
是这样~
form1里有几个复选框,可选择数据库要显示的字段

我是用VB的ADO做的.form2中的datagrid要显示出form1已经选定的字段.没有选定的不显示!

请问如何写出SQL语言~
...全文
782 点赞 收藏 26
写回复
26 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
mikej 2001-06-09
举个例子
如果FORM1里面有userID,password,info等复选框
分别为form1中间的字段
那么在form2中
SQL="SELECT id"
if request.form("userID")="on"
SQL = SQL & ",userID"
end
if request.form("password")="on"
SQL=SQL & ",password"
end
if request.form("info")="on"
SQL=SQL & ",info"
end
SQL=SQL + "FROM table WHERE ...."
就可以了,


回复
njtlxm 2001-06-08
用程序来动态改变SQL语句没有可行性,要是对上百万条记录反复查询操作,不是让数据库累死!
回复
njtlxm 2001-06-08
笨蛋!form2 中一开始选出全部字段,然后把visible设为false,form1中选中哪个字段,就让他可见!
回复
wo1017 2001-06-08
这种问题,自己好好想想啦,应该没有什么问题。
回复
001chb 2001-06-07
For i = 0 To (控件数 - 1)
If Check(i).Value = 1 Then
strSelect = strSelect & "," & Check(i).Caption
End If
Next i
这下可给分了吧!呵呵!
回复
mryongzhang 2001-06-07
对不起,昨天的程序还是有一个地方忽略了,
改过如下:
Private Sub Form_Unload(Cancel As Integer)
Dim i As Integer
strSelect=""
For i = 0 To (控件数 - 1)
If Check(i).Value = True Then
strSelect = strSelect & Check(i).Caption & ","
End If
Next i
'去掉最后一个逗号
strSelect = Left(strSelect, (Len(strSelect) - 1))

End Sub
回复
CSDNOFMY 2001-06-07
在FORM1 中产生几 EVENT, 在FORM2 中 处理 EVENT
回复
villagehead 2001-06-06
你可以试着加一个模块,在模块里定一个字符型数组,
因为模块里的变量是可以在其它所有form里有效的,
所以你可以在form1里读选中的字符(串)
写到该数组中
再在form2中读出数组中的数据就OK了!
试试吧!应该行的!
回复
001chb 2001-06-06
我的方法不行?
给分!!!!!!!1
回复
kofkim 2001-06-06
高手们帮我再看看啊~我加分的~
回复
kofkim 2001-06-06
我在调试你的程序的时候发现

strSelect = strSelect & "," & Check(i).Caption

这执行后strselect还是空字符串~

救我啊~


回复
mryongzhang 2001-06-06
我的程序漏了一条,下面是改过的
'在form2中定义一个字符串型的全局变量,
Dim strSelect as String
将form2中的各复选框作成一个控件数组,然后添加如下代码
'Form2中
Private Sub Form_Unload(Cancel As Integer)
Dim i As Integer
strSelect=""
For i = 0 To (控件数 - 1)
If Check(i).Value = True Then
strSelect = strSelect & "," & Check(i).Caption
End If
Next i
End Sub
在form1的activate事件中将Adodc1的数据源设为如下代码:
Adodc1.RecordSource="Select " & form2.strSelect & " from 表名"'
回复
001chb 2001-06-06
不用SQL语句,用datagrid控件的columns对象的visible属性
设置check为控件数组,按表中字段顺序一一对应设置check,caption
dim i as integer
在form2中添加代码
for i=0 to 控件数组数目
if form1.check(i).value=true then
datagrid1.columns(i).visible=false
else
datagrid1.columns(i).visible=true
end if
next i
回复
kofkim 2001-06-06
请:mryongzhang() 结决

我只知道把checkbox做成数组

但如何给strselect赋值呢?(我的checkbox旁边的label就是字段名称)
回复
kofkim 2001-06-06
我靠~`高手高高手~
回复
mryongzhang 2001-06-06
'在form2中定义一个字符串型的全局变量,
Dim strSelect as String
将form2中的各复选框作成一个控件数组,然后添加如下代码

Private Sub Form_Unload(Cancel As Integer)
Dim i As Integer
For i = 0 To (控件数 - 1)
If Check(i).Value = True Then
strSelect = strSelect & ","
End If
Next i
'去掉最后一个逗号
strSelect = Left(strSelect, (Len(strSelect) - 1))

End Sub
在form1的activate事件中将Adodc1的数据源设为如下代码:
Adodc1.RecordSource="Select " & form2.strSelect & " from 表名"'

问题解决了吗?
回复
kofkim 2001-06-06
我总算看到一个高手了,精彩!测试代码可行性中~
回复
liu_feng_fly 2001-06-06
dim sel as string
dim isselonefld as bool'为true,说明已经选择了至少一个字段,着要在后继字段前加上
‘ ” ,“号
sel="select "
isselonefld=false
if check1.value=true then
sel=sel&"field1"
isselonefld=true
endif
if check2.value=true then
if isselonefld=true then
sel=sel & ",field2"
else
sel=sel&"field2"
isselonefld=true
endif
endif
if check3.value=true then
if isselonefld=true then
sel=sel & ",field2"
else
sel=sel&"field3"
isselonefld=true
endif
endif
if not isselonefld then
msgbox"至少选择一个字段”
else
sel=sel&" from tablename where...order by..."
adodc1.recordsouse=sel
adodc1.refresh
endif
回复
kofkim 2001-06-06
nobody have an idea?
回复
litdong 2001-06-06
用 ADO对象好了,按你的要求把记录集的数据源字段选好,在把它动态绑定给datagrid
回复
加载更多回复
相关推荐
发帖

1188

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2001-06-06 03:52
社区公告
暂无公告