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