Ver Mensaje Individual
  #6 (permalink)  
Antiguo 07/07/2008, 01:56
Avatar de Txoco
Txoco
 
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: contar campos vacios de un registro especifico

Donde pone "<indice>" debes poner el número del campo que quieras consultar, siendo 0 (cero) el primero.

Por ejemplo, a partir de la consulta "SELECT campo1, campo2, campo3 FROM tabla", el objeto Recordset te va a devolver:

<recordset>.Fields.Count = 3
<recordset>.Fields(0).Name = "campo1"
<recordset>.Fields(1).Name = "campo2"
<recordset>.Fields(2).Name = "campo3"

Si la tabla "tabla" contiene dos registros, con los valores "valor 1.1", "valor 1.2" y "valor 1.3" para el primer registro, y "valor 2.1", "valor 2.2" y "valor 2.3" para el segundo, nada más abrir el recordset, además, tendrás estos valores:

<recordset>.Fields(0).Value = "valor 1.1"
<recordset>.Fields(1).Value = "valor 1.2"
<recordset>.Fields(2).Value = "valor 1.3"

Si después de ver esto, hicieras un <recordset>.MoveNext, lo que verías en total, es esto:

<recordset>.Fields.Count = 3
<recordset>.Fields(0).Name = "campo1"
<recordset>.Fields(1).Name = "campo2"
<recordset>.Fields(2).Name = "campo3"
<recordset>.Fields(0).Value = "valor 2.1"
<recordset>.Fields(1).Value = "valor 2.2"
<recordset>.Fields(2).Value = "valor 2.3"

Observa que la propiedad Count siempre vale lo mismo y que las propiedades Name también, ya que son datos relativos a la definición de la consulta, no a su resultado (la instrucción SELECT es la misma mientras no la cambies explícitamente). Sin embargo, las propiedades Value sí cambian, porque contienen el valor del registro actual.

De todas formas, coméntanos si lo que quieres hacer es esto, o bien lo que dice Avellaneda, porque son cosas distintas. Por ejemplo, para una tabla que contuviera una única línea con los siguientes datos:

Campo1 = "hola"
Campo2 = null
Campo3 = null
Campo4 = null
Campo5 = "adios"

lo que yo te estoy proponiendo, te devolvería "3", mientras que según lo propone Avellaneda, (por ejemplo: "SELECT * FROM [LaTabla] WHERE IsNull(Campo2)") te devolvería "1".