Índice de la sección dedicada a .NET (en el Guille) ADO.NET

Cómo trabajar con tablas que tienen espacios en los nombres de los campos...
(ejemplo con una base de datos de Access)

Publicado el 18/Nov/2002
Actualizado el 18/Nov/2002

Cómo trabajar con tablas que tienen espacios o caracteres especiales como acentos, etc., en los nombres de los campos... (ejemplo con una base de datos de Access).

 

Y no sólo espacios, también caracteres "especiales" como acentos, etc.

El siguiente código es para usar con bases de datos de Access, pero me imagino que funcionará igual con una base de datos de SQL Server.

El truco consiste en asignar estas dos propiedades del objeto OleDbCommandBuilder:
.QuotePrefix = "["
.QuoteSuffix = "]"

De esta forma, los nombres de los campos se incluirán dentro de corchetes con lo cual podemos usar espacios y otros caracteres en los nombres de los campos.
Para poder probar esto que te digo, puedes usar la base de datos Biblio.MDB que se incluye con el Visual Basic 6.0, la tabla Authors contiene un campo llamado Year Born el cual dará problemas a la hora de actualizar la base si no se usa el QuotePrefix y el QuoteSuffix.

En el siguiente trozo de código puedes ver cómo usarlo:

Nota:
Las declaraciones de las variables usadas no están en el código, ya que esto es sólo para que veas "dónde" usar esos dos métodos.

...
nombreBase = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) & _
                    "\Microsoft Visual Studio\VB98\Biblio2000.MDB"
cadenaConexion = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & nombreBase
cadenaSelect = "SELECT * FROM Authors"
'
Try
    dbConnection = New Data.OleDb.OleDbConnection(cadenaConexion)
Catch ex As Exception
    MessageBox.Show("Error al crear la conexión:" & vbCrLf & _
                    cadenaConexion & vbCrLf & ex.Message)
    Exit Sub
End Try
'
dbDataSet = New Data.DataSet()
'
dbDataAdapter = New Data.OleDb.OleDbDataAdapter()
dbDataAdapter.SelectCommand = New Data.OleDb.OleDbCommand(cadenaSelect, dbConnection)
'
commandBuilder = New Data.OleDb.OleDbCommandBuilder(dbDataAdapter)
' Utilizar esto para los campos de las tablas que tengan espacios, etc.
commandBuilder.QuotePrefix = "["
commandBuilder.QuoteSuffix = "]"
'        
dbConnection.Open()
Try
    dbDataAdapter.Fill(dbDataSet, nombreTabla)
Catch ex As Exception
    dbConnection.Close()
    MessageBox.Show("Error en en fill:" & vbCrLf & ex.Message)
    Exit Sub
End Try
...

Espero que esto te sea de utilidad.

Nos vemos.
Guillermo


la Luna del Guille o... el Guille que está en la Luna... tanto monta...