这一段时间,敲了两个系统,遇到了很多“小问题”,总结一下。
1.对象变量或With块变量未设置
这是我们经常遇到的问题,产生此类问题的原因很多,我们这段时间是用VB和数据库交互的,所以现阶段引起此类问题的主要原因是:数据库未连接!解决此问题的方法是查看数据库连接字符串是否正确,进行测试。
2.BOF或EOF中有一个是真,或者当前记录已被删除,要求一个当前记录
用到数据库时经常出现这个问题,可能原因是查询的数据表里无记录,当用到MoveFirst或MoveLast等时就会产生此类错误,因为数据表为空时EOF和BOF同时为True。解决方法有很多种,比如加上判断:
If mrc.RecordCount = 0 Then '判断记录集是否存在记录 MsgBox "没有记录!" Exit Sub End If或者使用错误处理:
On ErrorResumeNext RSS.MoveFirst if Err=3021 then Response.write "无数据!" End If3.多步OLE DB操作产生错误
产生此错误的原因可能是:数据类型或长度的输入与数据库设定的不符,导致输入的数据无法存入数据库中!解决方法是根据报错的代码所显示的数据库表,查看数据库表中的类型和长度,并在输入时设定上限制。为了防止这类问题的发生,在设计时,应该先设计好数据库中各字段存储的数据类型,根据类型和长度,在VB中限定相对应的类型和长度,防止此类错误的发生。
4.对象关闭时不允许操作
这个问题很简单,但是很容易犯这样的错误,产生原因:如果需要某些表中的记录,则需要对表进行操作,表示打开表失败。解决方法是测试所需要的表是否进行了打开的操作,进行测试!
这个问题报错时会报 “对象变量或With块变量未设置” 需要调试查出真正出问题的地方,产生此问题的一般原因是数据库表的名称和数据库的关键字相同,解决方法很简单,将数据库表名用[ ]括起来就行了!
下面这些词都是T-sql语句中的关键字,在你写sql语句,存储过程,触发器或字段命名等时要避免使用这些词!
ADD |
EXIT |
@H_301_136@
ALL |
FETCH |
@H_301_136@
ALTER |
FILE |
@H_301_136@
AND |
FILLFACTOR |
@H_301_136@
ANY |
FLOPPY |
@H_301_136@
AS |
FOR |
@H_301_136@
ASC |
FOREIGN |
@H_301_136@
AUTHORIZATION |
FREETEXT |
@H_301_136@
AVG |
FREETEXTTABLE |
@H_301_136@
BACKUP |
FROM |
@H_301_136@
BEGIN |
FULL |
@H_301_136@
BETWEEN |
GOTO |
@H_301_136@
BREAK |
GRANT |
@H_301_136@
BROWSE |
GROUP |
@H_301_136@
BULK |
HAVING |
@H_301_136@
BY |
HOLDLOCK |
@H_301_136@
CASCADE |
IDENTITY |
@H_301_136@
CASE |
IDENTITY_INSERT |
@H_301_136@
CHECK |
IDENTITYCOL |
@H_301_136@
CHECKPOINT |
IF |
@H_301_136@
CLOSE |
IN |
@H_301_136@
CLUSTERED |
INDEX |
@H_301_136@
COALESCE |
INNER |
@H_301_136@
COLUMN |
INSERT |
@H_301_136@
COMMIT |
INTERSECT |
@H_301_136@
COMMITTED |
INTO |
@H_301_136@
COMPUTE |
IS |
@H_301_136@
CONFIRM |
ISOLATION |
@H_301_136@
CONSTRAINT |
JOIN |
@H_301_136@
CONTAINS |
KEY |
@H_301_136@
CONTAINSTABLE |
KILL |
@H_301_136@
CONTINUE |
LEFT |
@H_301_136@
CONTROLROW |
LEVEL |
@H_301_136@
CONVERT |
LIKE |
@H_301_136@
COUNT |
LINENO |
@H_301_136@
CREATE |
LOAD |
@H_301_136@
CROSS |
MAX |
@H_301_136@
CURRENT |
MIN |
@H_301_136@
CURRENT_DATE |
MIRROREXIT |
@H_301_136@
CURRENT_TIME |
NATIONAL |
@H_301_136@
CURRENT_TIMESTAMP |
NOCHECK |
@H_301_136@
CURRENT_USER |
NONCLUSTERED |
@H_301_136@
CURSOR |
NOT |
@H_301_136@
DATABASE |
NULL |
@H_301_136@
DBCC |
NULLIF |
@H_301_136@
DEALLOCATE |
OF |
@H_301_136@
DECLARE |
OFF |
@H_301_136@
DEFAULT |
OFFSETS |
@H_301_136@
DELETE |
ON |
@H_301_136@
DENY |
ONCE |
@H_301_136@
DESC |
ONLY |
@H_301_136@
DISK |
OPEN |
@H_301_136@
DISTINCT |
OPENDATASOURCE |
@H_301_136@
DISTRIBUTED |
OPENQUERY |
@H_301_136@
DOUBLE |
OPENROWSET |
@H_301_136@
DROP |
OPTION |
@H_301_136@
DUMMY |
OR |
@H_301_136@
DUMP |
ORDER |
@H_301_136@
ELSE |
OUTER |
@H_301_136@
END |
OVER |
@H_301_136@
ERRLVL |
PERCENT |
@H_301_136@
ERROREXIT |
PERM |
@H_301_136@
ESCAPE |
PERMANENT |
@H_301_136@
EXCEPT |
PIPE |
@H_301_136@
EXEC |
PLAN |
@H_301_136@
EXECUTE |
PRECISION |
@H_301_136@
EXISTS |
PREPARE |
@H_301_136@