找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 786|回复: 4

[编程申请]:to ms迷 及其他哥们

[复制链接]
发表于 2003-11-20 18:06:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
前一个问题,你可能没有看懂是吧?
现在我把具体的目的写出来,大家给个建议也好———
使用ACCESS数据库,类型表class,(字段有index,class_name)
等级表grade,(字段有index,class_index,grade_name)
一种类型对应几种等级,如类型GPS对应等级的A,B,C
类型表的index和等级表class_index对应关系(索引)
即当GPS的index为1时,则A,B,C的class_name分别都为1
现在,我有LISTBOX显示class_name(GPS等),
当我选择GPS点击删除时,那么其对应的等级(A,B,C)也应该被删除
目前是,类型删除了,等级删除不了。调试很久了没有成功啊
(遇到sqlda.value[0]就退出程序了,修改程序光删除CLASS(GPS)能成功)
于是出现了如下代码:...(index ,class_index及定义的indexclass都为整型 )
if( num <= 0 )
{
mdlDialog_openMessageBox(DIALOGID_MsgBoxOK,"没有!",MSGBOX_ICON_CRITICAL);
break;
}
                               
for( i = 0; i < num; i++)
sprintf(sql,"select index,class_name from class where class_name = '%s'",strClass);
if( mdlDB_openCursor(sql) != SUCCESS )
{ mdlDialog_openMessageBox(DIALOGID_MsgBoxOK,"CLASS数据库查询错  误!",MSGBOX_ICON_CRITICAL);
break;
   }                           
mdlDB_fetchRow(&sqlda);                                                
indexclass = atoi(sqlda.value[0]);                                           
sprintf(sql,"delete from grade where class_index = %d",indexclass);                       
   if( SUCCESS!=mdlDB_processSQL(sql)
{                                                 mdlDialog_openMessageBox(DIALOGID_MsgBoxOK,"删除等级出现错误!",MSGBOX_ICON_CRITICAL);
   erro = 1;
break;
  }
                                         
mdlStringList_getMember(&strClass,NULL,strlistP,i);
sprintf(sql,"delete from class where class_name = '%s'",strClass);
  if( SUCCESS!=mdlDB_processSQL(sql) )
{
sprintf(sql,"等级已经删除,但删除类型'%s'发生错误!",strClass);                 mdlDialog_openMessageBox(DIALOGID_MsgBoxOK,sql,MSGBOX_ICON_CRITICAL);
erro = 1;
}                                             
  mdlDB_freeSQLDADescriptor(&sqlda);
  mdlDB_closeCursor();
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-11-21 09:22:52 | 显示全部楼层
我觉得您的这个问题没有必要用Cursor功能,修改如下试一试【我没有实际测试】
char  strIndex[32];
sprintf(sql,"select index from class where class_name = '%s'",strClass);
mdlDB_sqlQuery (strIndex, sql);
sprintf(sql,"delete from grade where class_index = %s",strIndex);
mdlDB_processSQL(sql);
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-26 08:53:48 | 显示全部楼层
好旧没有来了,寒光四射开始编程了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-26 09:21:11 | 显示全部楼层
for循环块是不是少了一对大括号,应该是要把后面语句都括进去吧,否则只执行第一个查询了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-26 11:23:06 | 显示全部楼层
我是这样做的:
mdlDB_openCursor(sql);
       
                 while(mdlDB_fetchRow(&sqlda)!=QUERY_FINISHED)
                        {   
                                        strcpy(value, sqlda.value[0]);
                          }
mdlDB_closeCursor();
打开以后,查询到需要的值,给一个变量,然后就关闭这个查询。我想你有可能是打开了以后,没有关闭,所以后面的数据库没有办法打开。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-23 12:59 , Processed in 0.310277 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表