option控件

mywaystrech 2012-04-12 11:31:53
option1是系统管理 option2是老师 option3是学生
Set rs = db.RunSelectSQL("SELECT 部门 FROM 毕设教务管理系统..用户清单 WHERE 用户编号='" + UserId + "'")
If Trim(rs("部门")) = "系统管理" And Option1.Value = True Then......
ElseIf Trim(rs("部门")) = "老师" And Option2.Value = True Then.......
Else....

之前没有用option控件时都可以执行,但加了option控件以后,输入系统管理员的用户编号时可以执行,但输入老师和学生的用户编号时,总是显示If Trim(rs("部门")) = "系统管理" And Option1.Value = True Then这句话错误,这是问什么呢
...全文
191 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
熊孩子开学喽 2012-04-14
  • 打赏
  • 举报
回复
If Trim(rs("部门")) = "系统管理" And Option1.Value = True Then

改成:

If (Trim(rs("部门")) = "系统管理") and Option1.Value then 试试


另外,程序稍微优化一下吧, 这代码效率不高.

比如:
If Trim(rs("部门")) = "系统管理" ......
ElseIf Trim(rs("部门")) = "老师" .......
Else....

这种可以用Select case语句来简化, 并且结构更清晰, 不容易出错:

先定义一个字符串变量
dim BM as string
......
BM = Trim(rs("部门"))
Select case BM
case "系统管理": if Option1.Value then ...... '前面那句出错的语句这样写就可以了.
case "老师": ......
case "xxx": .....
end select

这样子是不是变得更加清晰了呢.
fsk_wyf 2012-04-13
  • 打赏
  • 举报
回复
//判断由配置文件中取出的ID类值是否有效
TBool isValidIDValue(const int iValue){
//如果传入值小于0,则返回Wrong if (iValue < 0) {y1;}y2;}
//判断由配置文件中取出的IP地址值是否有效
TBool isValidIP(const char* sIP){char sTmpIp[MaxIPAddrLength + 1];
char* p1, *p2;int i, j, tmpInt = 0;if (NULL == sIP){y1;}
if ((strlen(sIP) <= 3) || (strlen(sIP) > 15)){y1; }strcpy(sTmpIp, sIP);
p1 = sTmpIp;p2 = sTmpIp;//分析.符号前面的部分for (i = 0; i < 3; i++){
for (j = 0; j < 3; j++){p1++;if (*p1 == '.') { *p1 = '\0'; break; }}
if (j >= 3) { y1;}if (Wrong == isValidNum(p2)){ y1; }tmpInt = atoi(p2);
//如果为0或者255也是合法的if (!((tmpInt >= 0) && (tmpInt <= 255))){ y1; }
p1++; p2 = p1;}//分析最后一部分for (i = 0; i < 3; i++){p1++;if (*p1 == '\0')
{ break; } }if (i >= 3){ y1;}if (Wrong == isValidNum(p2)){ y1;}
tmpInt = atoi(p2);//如果为0或者255也是合法的
if (!((tmpInt >= 0) && (tmpInt <= 255))){ y1;}y2;}
//判断由配置文件中取出的服务器PORT端口号是否有效
TBool isValidServerPort(const int iPort){//传入的port号是否大于1023
if (iPort < 1024 || iPort > 65535){ y1; } y2;}
//判断由配置文件中取出的客户端PORT端口号是否有效
TBool isValidClientPort(const int iPort)
{if (iPort >= 0 && iPort < 65536){ y2; }y1;}
//判断给出的字符串是否为空
TBool isValidName(const char* sName){ if (NULL == sName)
{ y1;} if (0 == sName[0]){ y1;}y2;}
//如果Connecttype为2,则此值为0
TBool isValidConnectIndex(TConnectType iConnectType, const int iConnectIndex,
const int iNrofNode){if ((Client == iConnectType) && (iConnectIndex != 0)){y1;}
if ((Server == iConnectType)&& ((iConnectIndex <= 0) || (iConnectIndex > iNrofNode)))
{ y1;} y2;}
fsk_wyf 2012-04-13
  • 打赏
  • 举报
回复

//判断给出的值是否在0,1范围内
TBool isValidValue(const int iValue)
{if ((0 == iValue) || (1 == iValue)){y2; }y1;}
//判断由配置文件中取出的ConnectType是否有效
TBool isValidConnectType(const int iConnectType)
{if ((1 == iConnectType) || (2 == iConnectType)){ y2;} y1;}
//判断由配置文件中取出的NodeType是否有效
TBool isValidNodeType(const int iNodeType)
{ if ((1 == iNodeType) || (2 == iNodeType)
|| (3 == iNodeType) || (4 == iNodeType)|| (5 == iNodeType)){ y2;} y1;}
//判断由配置文件中取出的CheckType是否有效
TBool isValidCheckType(const int iCheckType)
{return isValidValue(iCheckType);}
//判断由配置文件中取出的UnfreezeLockedCard是否有效
TBool isValidUnfreezeLockedCard(const int iUnfreezeLockedCard)
{return isValidValue(iUnfreezeLockedCard);}
//判断由配置文件中取出的MsgMode是否有效
TBool isValidMsgMode(TCheckType iCheckType, const int iMsgMode)
{ if (iCheckType == ActiveSend) {
if ((0 == iMsgMode) || (1 == iMsgMode) || (2 == iMsgMode)) {y2;}else{ y1;}}y2;}
//判断由配置文件中取出的CheckMode是否有效
TBool isValidCheckMode(TCheckType iCheckType, TMsgMode iMsgMode, const int iCheckMode)
{if (ActiveSend == iCheckType){ if (NoMsg != iMsgMode){ return isValidValue(iCheckMode); }}y2;}
//判断由配置文件中取出的isValidBalanceType是否有效
TBool isValidBalanceType(const int iBlanceType){
if (iBlanceType != (int)BalanceUseCCC && iBlanceType
!= (int)BalanceUseVCT){y1; }y2;}
//判断由配置文件中取出的NeedRecord是否有效
TBool isValidNeedRecord(int iNeedRecord){
if (iNeedRecord != 1 && iNeedRecord != 2 && iNeedRecord != 0){ y1;}y2;}
//判断由配置文件中取出的NodeNo信息是否有效
TBool isValidNodeNo(const char* j8)
{if (NodeNoFieldLength != strlen(j8)) { y1;}return isValidNum(j8);}
fsk_wyf 2012-04-13
  • 打赏
  • 举报
回复

//判断由配置文件中取出的NeedCompensate信息是否有效
TBool isValidNeedCompensate(TCheckMode iCheckMode, const int iNeedCompensate)
{if (OuterNode == iCheckMode){return isValidValue(iNeedCompensate);}y2;}
//是否含有@符号及不为空
TBool isValidDBName(const char* sDBName)
{if (NULL == sDBName){ y1;}if (!isValidName(sDBName)
|| NULL == (strstr(sDBName, "@"))){ y1;}y2;}
//判断给出的数是否大于其范围
TBool IsSuspend(const int iValue, const int iMax)
{ if ((iValue < 0) || (iValue > iMax)){ y1;}y2;}
//判断给出的字符串转化为时间后是否有效
TBool isValidTime(const char* sTime){if (NULL == sTime
|| TimeFieldLength != strlen(sTime)){ y1;}
int itime;int iMM;int iHH;int iSS;//此字符中必须全部为数字
if (Wrong == isValidNum(sTime)){ y1;}itime = atoi(sTime);
iHH = itime / 10000; iMM = (itime - iHH * 10000) / 100;
iSS = itime - iHH * 10000 - iMM * 100;
if (iHH < 0 || iHH > 24 || iMM > 59 || iSS > 59)
{ y1;}//如果iHH为24,那么iMM和iSS必须为0
if (24 == iHH) {if (iMM != 0 || iSS != 0){y1;}}y2;}
//判断给出的值是否在0,1,2范围内
TBool isValidTransFileSwitch(const int iValue){
if (0 == iValue || 1 == iValue || 2 == iValue){ y2; }y1;}
//判断从配置文件中得到的msgcode值是否长度为4且每位均为数字
TBool isValidMsgCode(const char* j7){if (NULL == j7){y1;}
//长度为4if (MsgTypeFieldLength != strlen(j7)){y1;}
//每位必须为数字 return isValidNum(j7);}
//判断从配置文件中得到的RecFields值是否在范围内(1~20)之间
TBool isValidRecFields(const int iTransFileSwitch, const int* pRecFields,
const int iCount){if (NULL == pRecFields){ y1;}int i;
if (iTransFileSwitch == 1){for (i = 0; i < iCount; i++){
if (pRecFields[i] > MaxNrOfRecFields || pRecFields[i] < 0){ y1; } }}y2;}
贝隆 2012-04-12
  • 打赏
  • 举报
回复
是你的sql语句构建除了问题,Option.value=True是不正确的

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧