Problema con resultsets vacíos
Hola a todos.
Estoy haciendo una aplicación que trabaja sobre sql server 2000.
Bien, una de las partes es la gestión de los clientes, y ya que tengo que saber el id más alto de la tabla antes de meter un nuevo, mi problema es que cuando hago la consulta con la tabla vacía. no soy capaz de controlar ese resultado.
En resumen, ¿cómo se detecta un resultset vacío?
PD: He probado con rs.RecordCount, EOF, BOF , igualando a NULL, igualando a " " , etc
Cuando intento imprimir el campo que me interesa (y único que recoge la consulta), me da un error de VB diciendo "Uso impropio de NULL" o algo parecido.
Por cierto, si alguien sabe como configurar una clave primaria de una tabla de sql server para que sea autoincremental, le estará muy agradecido.
Saludos!!
Estoy haciendo una aplicación que trabaja sobre sql server 2000.
Bien, una de las partes es la gestión de los clientes, y ya que tengo que saber el id más alto de la tabla antes de meter un nuevo, mi problema es que cuando hago la consulta con la tabla vacía. no soy capaz de controlar ese resultado.
En resumen, ¿cómo se detecta un resultset vacío?
PD: He probado con rs.RecordCount, EOF, BOF , igualando a NULL, igualando a " " , etc
Cuando intento imprimir el campo que me interesa (y único que recoge la consulta), me da un error de VB diciendo "Uso impropio de NULL" o algo parecido.
Por cierto, si alguien sabe como configurar una clave primaria de una tabla de sql server para que sea autoincremental, le estará muy agradecido.
Saludos!!
Supongo que la clave de cliente es numérica, si es asi puedes obtener el ID mas alto con el siguiente SQL:
SELECT MAX(CLAVE) FROM BASEDEDATOS/TABLACLIENTES
Y cuando empleas el recordset podrias hacer la validación:
IF NOT RSDESEADO.EOF THEN
dkdkdkdkdkdkdkdkdkdk
dddddddddddddddddddd
ELSE (en caso de que tengas varia la tabla)
MSGBOX "Error la tabla esta vacía", vbcritical (x si deseas enviar un archivo indicando que la tabla esta vacía)
ENDIF
Y para incrementar la clave, basta con que obtengas el máximo del ID y a este le incrementes el número que desees.
SELECT MAX(CLAVE) FROM BASEDEDATOS/TABLACLIENTES
Y cuando empleas el recordset podrias hacer la validación:
IF NOT RSDESEADO.EOF THEN
dkdkdkdkdkdkdkdkdkdk
dddddddddddddddddddd
ELSE (en caso de que tengas varia la tabla)
MSGBOX "Error la tabla esta vacía", vbcritical (x si deseas enviar un archivo indicando que la tabla esta vacía)
ENDIF
Y para incrementar la clave, basta con que obtengas el máximo del ID y a este le incrementes el número que desees.
En la SQL, puedes hacer el tratamiento de nulos con la funcion Coalesce de SQL Server.
SELECT COALESCE(MAX(CLAVE) + 1,1) FROM TABLA
De este modo, cuando la tabla está vacia, MAX +1 retorna nulo, entonces Coalesce te retorna el siguente valo no nulo de la lista, es decir, 1
Saludos
SELECT COALESCE(MAX(CLAVE) + 1,1) FROM TABLA
De este modo, cuando la tabla está vacia, MAX +1 retorna nulo, entonces Coalesce te retorna el siguente valo no nulo de la lista, es decir, 1
Saludos
La mejor forma de verificar si el recordset devuelve algo es con
If rs.BOF and rs.EOF then 'Es Vacio
Cuando BOF y EOF ambas son verdaderas el recordset es vacio.
If rs.BOF and rs.EOF then 'Es Vacio
Cuando BOF y EOF ambas son verdaderas el recordset es vacio.