Borrar o midifcar una columna

Estoy programando en VB6 y trabajo con bases de datos access y Sql. Tengo que cambiar la longitud de un campo de texto 50 a 100. COmo no he podido conseguirlo porque me daba errores. He creado un campo nuevo, le he pasado los datos y lo intento borrar. En access ningún problema pero en sql no me funciona. Te indico el código si tu ves el error.
'Creamos un campo nuevo.
    Set Campo_Nuevo = Db.TableDefs("FCoBalanNPGC").CreateField("Nombre2")
    Campo_Nuevo.name = "Nombre2"
    Campo_Nuevo.Type = 10
    Campo_Nuevo.Size = 150
    Db.TableDefs("FCoBalanNPGC").Fields.Append Campo_Nuevo
    Db.Close
    'Pasamos los datos del Nombre al Nombre2.
    Call Abrir_BD_Softcon(Db)
    Criterio = "Update FCoBalanNPGC Set Nombre2=Nombre"
    Db.Execute Criterio
    'Borramos el campo anterior.
    If Tipo_Gestor = "Access" Then 
        'Access
        Db.TableDefs("FCoBalanNPGC").Fields.Delete ("Nombre")
    Else
        Criterio = "ALTER TABLE DBO.FCOBALANNPGC DROP COLUMN NOMBRE2" 
        Db.Execute Criterio
    end if
Me da el siguiente error con la base de datos sql. Error 3032. No se puede realizar esta operación. Creo que tengo todos los permisos necesarios. Si hago esta consulta en el Microsoft sql server management studio, me funciona. Pero si lo hago desde el código no.

1 Respuesta

Respuesta
1
a ver... prueba esto:
If Tipo_Gestor = "Access" Then
    'Access
   'Creamos un campo nuevo.
    Set Campo_Nuevo = Db.TableDefs("FCoBalanNPGC").CreateField("Nombre2")
    Campo_Nuevo.Name = "Nombre2"
    Campo_Nuevo.Type = 10
    Campo_Nuevo.Size = 150
    Db.TableDefs("FCoBalanNPGC").Fields.Append Campo_Nuevo
    Db.Close
    'Pasamos los datos del Nombre al Nombre2.
    Call Abrir_BD_Softcon(Db)
    Criterio = "Update FCoBalanNPGC Set Nombre2=Nombre"
    Db.Execute Criterio
    'Borramos el campo anterior.
    Db.TableDefs("FCoBalanNPGC").Fields.Delete ("Nombre")
Else
    Call Abrir_BD_Softcon(Db)
    Criterio = "ALTER table DBO.FCOBALANNPGC add Nombre2 char(150)"
    Db.Execute Criterio
    Criterio = "Update DBO.FCoBalanNPGC Set Nombre2=Nombre"
    Db.Execute Criterio
    Criterio = "ALTER TABLE DBO.FCOBALANNPGC DROP COLUMN NOMBRE"
    Db.Execute Criterio
End If
Ahora lo único que te quedaría sería cambiar el nombre2->nombre
No lo he podido ejecutar aquí porque no tengo esa bd
saludos si no te funciona entonces postea...
También al final de tu código debería decir (porque estabas borrando la columna de 150 caracteres que habías creado):
Criterio = "ALTER TABLE DBO.FCOBALANNPGC DROP COLUMN NOMBRE"
¿y? ¿Te sirvió?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas