Valor default en alter table
Espero me puedas ayudar con esta situación: resulta que quiero agregar una columna en mi tabla, eso lo se hacer, pero el punto es que necesito agregarle un valor default
te comento que se hacer lo primero, pero la sintaxis del default no la se hacer
mi consulta es :
ALTER TABLE Acceso ALTER COLUMN pruebix TEXT (50) not null DEFAULT ' '
Y como error me sale:
Error de sintaxis en la instrucción ALTER TABLE
te comento que se hacer lo primero, pero la sintaxis del default no la se hacer
mi consulta es :
ALTER TABLE Acceso ALTER COLUMN pruebix TEXT (50) not null DEFAULT ' '
Y como error me sale:
Error de sintaxis en la instrucción ALTER TABLE
1 respuesta
Respuesta de argytech
1
1
Si lo que quieres hacer es agregar una columna con un valor por defecto la sintaxis debería ser:
ALTER TABLE Acceso
ADD pruebix nvarchar(50) NOT NULL DEFAULT 'LoQueQuierasPoner'
Si por el contrario ya tienes la columna creada pero quieres agregarle un default, sería:
ALTER TABLE Acceso
ADD DEFAULT 'LoQueQuierasPoner' FOR pruebix
Saludos y espero te sirva, cualquier cosa a tu disposición!
ALTER TABLE Acceso
ADD pruebix nvarchar(50) NOT NULL DEFAULT 'LoQueQuierasPoner'
Si por el contrario ya tienes la columna creada pero quieres agregarle un default, sería:
ALTER TABLE Acceso
ADD DEFAULT 'LoQueQuierasPoner' FOR pruebix
Saludos y espero te sirva, cualquier cosa a tu disposición!
Hola de nuevo
Ya probé las dos consultas y ninguna de las dos me funcionan: en la primera consulta me sale esto: "Error de sintaxis en la instrucción ALTER TABLE"
En la segunda consulta me sale esto:
"Error de sintaxis en la definición del campo"
Gracias por tu atención y ayuda
Te agradezco
Y
Saludos
Ya probé las dos consultas y ninguna de las dos me funcionan: en la primera consulta me sale esto: "Error de sintaxis en la instrucción ALTER TABLE"
En la segunda consulta me sale esto:
"Error de sintaxis en la definición del campo"
Gracias por tu atención y ayuda
Te agradezco
Y
Saludos
La sintaxis es correcta :) pásame por favor la estructura actual de tu tabla, el problema debe ser otro. Necesito me digas la estructura completa (nombre tabla y campos, con definición completa)
Pues son muchos campos, ¿para pasarte la definiciion como que me tardo mucho
hay un método para extraer la estructura de las tablas?
Por cierto estoy trabajando con access 2007, con extensión .accdb
y las copie de una base de datos de access 2000, extensión .mdb,
ya verifique los permisos de todas las bases de datos
pero tu dime que procede
Reenvio saludos =)
hay un método para extraer la estructura de las tablas?
Por cierto estoy trabajando con access 2007, con extensión .accdb
y las copie de una base de datos de access 2000, extensión .mdb,
ya verifique los permisos de todas las bases de datos
pero tu dime que procede
Reenvio saludos =)
Si tienes acceso pleno a la base de datos en access procede más simple:
1. Abres la tabla
2. Vas a modo "Vista Diseño"
3. Te paras sobre el nombre del campo que quieres cambiar
4. Abajo, en las propiedades de dicho campo, vas a "Valor Predeterminado"
5. Colocas el valor que quieras (texto en tu caso)
6. Guardas y cierras la tabla
Abrazo!
1. Abres la tabla
2. Vas a modo "Vista Diseño"
3. Te paras sobre el nombre del campo que quieres cambiar
4. Abajo, en las propiedades de dicho campo, vas a "Valor Predeterminado"
5. Colocas el valor que quieras (texto en tu caso)
6. Guardas y cierras la tabla
Abrazo!
Eso es muy fácil, pero no puedo hacer eso, puesto que lo necesito así con código para manejarlo en cualquier base de datos, ¿me explico
tons que?
Saludos!
tons que?
Saludos!
Viendo tu línea original veo que te falta agregar el "SET", es decir:
ALTER TABLE Acceso ALTER COLUMN pruebix TEXT (50) not null SET DEFAULT ' '
No conozco tu código (sería bueno que des más info la próxima vez) pero supongo que debe tener la siguiente sintaxis o estructura:
Set db = TuDB
db.TableDefs("Acceso").Fields("pruebix").Properties("DefaultValue") = " "
Eso también te setearía el default,
Perdona si tardo en responder, pero estoy en el trabajo.
ALTER TABLE Acceso ALTER COLUMN pruebix TEXT (50) not null SET DEFAULT ' '
No conozco tu código (sería bueno que des más info la próxima vez) pero supongo que debe tener la siguiente sintaxis o estructura:
Set db = TuDB
db.TableDefs("Acceso").Fields("pruebix").Properties("DefaultValue") = " "
Eso también te setearía el default,
Perdona si tardo en responder, pero estoy en el trabajo.
Ya le agregue el set y me sale un error que es el mismo: error de sintaxis el la instrucción 'ALTER TABLE', así que no entiendo, lo curioso es que antes de empezar a programar hice una pruebas en access con default y claro que si lo hacia, es decir se puede, en cuanto al código, primero lo hago en access para después pasar la consulta a visual basic
aunque tengo que decirte que no uso el table defs
mi código, no tiene caso que te lo muestre puesto que aun no lo hago en visual, pues primero necesito como ya te había comentado, correrlo en access
pero pues ahí te va:
connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " & TextBox_bd_origen.Text.Trim & "; Persist Security Info = true;"
tsql = "ALTER TABLE " & ttabla & " ADD COLUMN " & TextBox_nombreCampo.Text.Trim
tsql += " " & TextBox_tipoDato.Text.Trim
MsgBox(tsql)
connection.Open()
Dim scomf As New OleDbCommand(tsql, connection)
msqldr = scomf.ExecuteReader
msqldr.Close()
connection.Close()
Así lo tengo por lo pronto y tmbn por lo pronto lo haré con tabledefs, aunque creo que si no lo use es porque ya es obsoleto =), pero dejame verlo
Gracias por tu atención y saludos,
aunque tengo que decirte que no uso el table defs
mi código, no tiene caso que te lo muestre puesto que aun no lo hago en visual, pues primero necesito como ya te había comentado, correrlo en access
pero pues ahí te va:
connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " & TextBox_bd_origen.Text.Trim & "; Persist Security Info = true;"
tsql = "ALTER TABLE " & ttabla & " ADD COLUMN " & TextBox_nombreCampo.Text.Trim
tsql += " " & TextBox_tipoDato.Text.Trim
MsgBox(tsql)
connection.Open()
Dim scomf As New OleDbCommand(tsql, connection)
msqldr = scomf.ExecuteReader
msqldr.Close()
connection.Close()
Así lo tengo por lo pronto y tmbn por lo pronto lo haré con tabledefs, aunque creo que si no lo use es porque ya es obsoleto =), pero dejame verlo
Gracias por tu atención y saludos,
Ok, hay 2 maneras correctas de realizar la operación que quieres hacer, yo siempre utilicé la 2da, pero te paso las 2.
También te agrego un link que te va a servir muchísimo para el futuro.
1° Forma:
ALTER TABLE Acceso ALTER COLUMN pruebix TEXT (50) not null SET DEFAULT ""
2° Forma (recomendada y funcionando)
Dim strSQL As String
strSQL = "ALTER TABLE Acceso ALTER COLUMN pruebix TEXT (50);"
CurrentDb.Execute strSQL
CurrentDb.TableDefs("Acceso").Fields("pruebix").DefaultValue = ""
IMPORTANTE: Si pones como default un espacio, es decir " " obviamente NO te funcionará, debe ser "". Tampoco uses comilla simple (como en tu primer ejemplo) usa la doble.
Por ejemplo si yo quisiera cambiar el tamaño de tu campo y el valor por defecto haría:
Dim strSQL As String
strSQL = "ALTER TABLE Acceso ALTER COLUMN pruebix TEXT (255);"
CurrentDb.Execute strSQL
CurrentDb.TableDefs("Acceso").Fields("pruebix").DefaultValue = "Prueba Texto"
Bueno, espero que te ayude, ahh el link:
http://msdn.microsoft.com/en-us/library/aa140015%28office.10%29.aspx#acintsql_alttable
También te agrego un link que te va a servir muchísimo para el futuro.
1° Forma:
ALTER TABLE Acceso ALTER COLUMN pruebix TEXT (50) not null SET DEFAULT ""
2° Forma (recomendada y funcionando)
Dim strSQL As String
strSQL = "ALTER TABLE Acceso ALTER COLUMN pruebix TEXT (50);"
CurrentDb.Execute strSQL
CurrentDb.TableDefs("Acceso").Fields("pruebix").DefaultValue = ""
IMPORTANTE: Si pones como default un espacio, es decir " " obviamente NO te funcionará, debe ser "". Tampoco uses comilla simple (como en tu primer ejemplo) usa la doble.
Por ejemplo si yo quisiera cambiar el tamaño de tu campo y el valor por defecto haría:
Dim strSQL As String
strSQL = "ALTER TABLE Acceso ALTER COLUMN pruebix TEXT (255);"
CurrentDb.Execute strSQL
CurrentDb.TableDefs("Acceso").Fields("pruebix").DefaultValue = "Prueba Texto"
Bueno, espero que te ayude, ahh el link:
http://msdn.microsoft.com/en-us/library/aa140015%28office.10%29.aspx#acintsql_alttable
La primera opción como has de saber me causa un error, sin embargo tampoco puedo usar la segunda opción, puesto que para usar lo que me dices tengo que usar DAO (ODBC) y mi cliente no quiere que lo use
sin embargo basándome en tu idea use ADO
y mi código es el siguiente:
cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " & TextBox_bd_origen.Text.Trim & "; Persist Security Info=true;"
Obj_catalog.ActiveConnection = cn
tsql = "select " & columna & "from " & tabla
Dim rs As New ADODB.Recordset
rs.ActiveConnection = cn
rs.Open(tsql)
rs.Fields(0).Properties("DEFAULT ") = " "
Solo que aquí me marca un error : Propiedad de item es READ ONLY
como veras no se que hacer
por cierto, gracias por la página, se que me servirá
TE pido por favor tu paciencia y tu ayuda si no es mucho pedir =)
Gracias por tu ayuda
Saludos!
sin embargo basándome en tu idea use ADO
y mi código es el siguiente:
cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " & TextBox_bd_origen.Text.Trim & "; Persist Security Info=true;"
Obj_catalog.ActiveConnection = cn
tsql = "select " & columna & "from " & tabla
Dim rs As New ADODB.Recordset
rs.ActiveConnection = cn
rs.Open(tsql)
rs.Fields(0).Properties("DEFAULT ") = " "
Solo que aquí me marca un error : Propiedad de item es READ ONLY
como veras no se que hacer
por cierto, gracias por la página, se que me servirá
TE pido por favor tu paciencia y tu ayuda si no es mucho pedir =)
Gracias por tu ayuda
Saludos!
Verifica bien el link que te pasé, creo que ahí menciona cómo debe usarse la conexión para que no produzca error la propiedad default.
"The DEFAULT statement can be executed only through the Jet OLE DB provider and ADO. It will return an error message if used through the Access SQL View user interface."
Me he creado una tabla como la tuya y ejecuté el código (2°) que te pasé y me ha creado la tabla con el campo de texto y su valor por defecto :(
El error no está en la instrucción ni la sintaxis, si quieres pásame tu código a [email protected] y lo miro
PD: Recuerda NO colocar espacios entre las comillas, te lo repito porque en tu ejemplo veo un " " en lugar de "".
Abrazo!
"The DEFAULT statement can be executed only through the Jet OLE DB provider and ADO. It will return an error message if used through the Access SQL View user interface."
Me he creado una tabla como la tuya y ejecuté el código (2°) que te pasé y me ha creado la tabla con el campo de texto y su valor por defecto :(
El error no está en la instrucción ni la sintaxis, si quieres pásame tu código a [email protected] y lo miro
PD: Recuerda NO colocar espacios entre las comillas, te lo repito porque en tu ejemplo veo un " " en lugar de "".
Abrazo!
- Compartir respuesta
- Anónimo
ahora mismo