这一段时间,敲了两个系统,遇到了很多“小问题”,总结一下。
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 |
PRIMARY |
ALL |
FETCH |
|
ALTER |
FILE |
PRIVILEGES |
AND |
FILLFACTOR |
PROC |
ANY |
FLOPPY |
PROCEDURE |
AS |
FOR |
PROCESSEXIT |
ASC |
FOREIGN |
PUBLIC |
AUTHORIZATION |
FREETEXT |
RAISERROR |
AVG |
FREETEXTTABLE |
READ |
BACKUP |
FROM |
READTEXT |
BEGIN |
FULL |
RECONFIGURE |
BETWEEN |
GOTO |
REFERENCES |
BREAK |
GRANT |
REPEATABLE |
BROWSE |
GROUP |
REPLICATION |
BULK |
HAVING |
RESTORE |
BY |
HOLDLOCK |
RESTRICT |
CASCADE |
IDENTITY |
RETURN |
CASE |
IDENTITY_INSERT |
REVOKE |
CHECK |
IDENTITYCOL |
RIGHT |
CHECKPOINT |
IF |
ROLLBACK |
CLOSE |
IN |
ROWCOUNT |
CLUSTERED |
INDEX |
ROWGUIDCOL |
COALESCE |
INNER |
RULE |
COLUMN |
INSERT |
SAVE |
COMMIT |
INTERSECT |
SCHEMA |
COMMITTED |
INTO |
SELECT |
COMPUTE |
IS |
SERIALIZABLE |
CONFIRM |
ISOLATION |
SESSION_USER |
CONSTRAINT |
JOIN |
SET |
CONTAINS |
KEY |
SETUSER |
CONTAINSTABLE |
KILL |
SHUTDOWN |
CONTINUE |
LEFT |
SOME |
CONTROLROW |
LEVEL |
STATISTICS |
CONVERT |
LIKE |
SUM |
COUNT |
LINENO |
SYSTEM_USER |
CREATE |
LOAD |
TABLE |
CROSS |
MAX |
TAPE |
CURRENT |
MIN |
TEMP |
CURRENT_DATE |
MIRROREXIT |
TEMPORARY |
CURRENT_TIME |
NATIONAL |
TEXTSIZE |
CURRENT_TIMESTAMP |
NOCHECK |
THEN |
CURRENT_USER |
NONCLUSTERED |
TO |
CURSOR |
NOT |
TOP |
DATABASE |
NULL |
TRAN |
DBCC |
NULLIF |
TRANSACTION |
DEALLOCATE |
OF |
TRIGGER |
DECLARE |
OFF |
TRUNCATE |
DEFAULT |
OFFSETS |
TSEQUAL |
DELETE |
ON |
UNCOMMITTED |
DENY |
ONCE |
UNION |
DESC |
ONLY |
UNIQUE |
DISK |
OPEN |
UPDATE |
DISTINCT |
OPENDATASOURCE |
UPDATETEXT |
DISTRIBUTED |
OPENQUERY |
USE |
DOUBLE |
OPENROWSET |
USER |
DROP |
OPTION |
VALUES |
DUMMY |
OR |
VARYING |
DUMP |
ORDER |
VIEW |
ELSE |
OUTER |
WAITFOR |
END |
OVER |
WHEN |
ERRLVL |
PERCENT |
WHERE |
ERROREXIT |
PERM |
WHILE |
ESCAPE |
PERMANENT |
WITH |
EXCEPT |
PIPE |
WORK |
EXEC |
PLAN |
WRITETEXT |
EXECUTE |
PRECISION |
|
EXISTS |
PREPARE |