Id. de artículo: 191717 - Última revisión: jueves, 01 de julio de 2004 - Versión: 3.2

Cómo mostrar valores booleanos en DataGrid enlazado

Nota acerca de su sistema operativoEste artículo se aplica a un sistema operativo distinto al que usa. El contenido del artículo que puede que no sea importante para usted, se deshabilitará

En esta página

Expandir todo | Contraer todo

Resumen

Un campo binario vacío formateado con reglas para imprimir texto, como "Sí" para true y "No" para false, devolverá un error a menos que se permiten valores nulos.

Más información

Pasos para reproducir este comportamiento

  1. Crear un nuevo proyecto EXE estándar en Visual Basic. Se creará Form1 de manera predeterminada.
  2. En el proyecto, hacer referencia a biblioteca Microsoft ActiveX Data Objects 2.0 y biblioteca de objetos de formato de datos de Microsoft.
  3. Agregue un control DataGrid al formulario.
  4. Agregue el siguiente código y ejecuta:
          Option Explicit
    
          Private rs As ADODB.Recordset
          Private fmtBooleanData As StdDataFormat
    
          Private Sub Form_Load()
          Dim i As Integer
    
          Set rs = New ADODB.Recordset
          rs.Fields.Append "Field1", adBSTR, 64
          rs.Fields.Append "BooleanField", adBoolean
          rs.Open
    
          rs.AddNew
          rs.Fields("Field1").Value = "Field1"
          rs.Fields("BooleanField").Value = True
          rs.Update
    
          For i = 1 To 5
             rs.AddNew
             rs.Update
          Next i
          rs.MoveFirst
    
          Set DataGrid1.DataSource = rs
    
          ' set up Boolean Formatting
          Set fmtBooleanData = New StdDataFormat
          fmtBooleanData.Type = fmtBoolean
          fmtBooleanData.TrueValue = "Yes"
          fmtBooleanData.FalseValue = "No"
          fmtBooleanData.NullValue = ""
    
          Set DataGrid1.Columns(1).DataFormat = fmtBooleanData
    
          End Sub
    
    					
Cuando se ejecuta el código, verá "Sí" en la segunda columna de la primera fila y # error en el resto.

Esto ocurre porque OLE no puede determinar lo que debe devolver para un campo vacío que no aceptan valores NULL y, por lo tanto, genera un error. Marcar el campo como que aceptan valores NULL cambiando la línea:
   rs.Fields.Append "BooleanField", adBoolean
				

para:
   rs.Fields.Append "BooleanField", adBoolean, , adFldIsNullable
				

dará como resultado los campos vacíos devueltos como NULL en lugar de errores.

La información de este artículo se refiere a:
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Data Access Components 2.0
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
Palabras clave: 
kbmt kbctrl kbdatabase kbhowto KB191717 KbMtes
Traducción automáticaTraducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 191717  (http://support.microsoft.com/kb/191717/en-us/ )