FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
alter table / modify -> Problemas en tablas dbase
Hola de nuevo:
Estoy intentando cambiar la estructura de una tabla dbase... Código:
alter table "tabla.dbf" modify campo nuevoformato ¿Alguien sabe como se hace?. Saludos. |
#2
|
||||
|
||||
No creo que esto sea posible en dbase. Me parece que tendrás que crear una nueva columna, pasar los datos de la anterior a la nueva y finalmente eliminar la anterior.
// Saludos |
#3
|
|||
|
|||
Eso me estaba temiendo.
Gracias. |
#4
|
||||
|
||||
Otra opción sería utilizar la API del BDE en lugar de SQL. Busca en la ayuda del BDE acerca de la función DbiDoRestructure. En la sección de ejemplos viene uno para cambiar un campo en una tabla paradox o dbase.
// Saludos |
#5
|
|||
|
|||
Ya lo socioné del otro modo. De todos modos es bueno saberlo.
Gracias. |
#6
|
||||
|
||||
Cita:
// Saludos |
#7
|
|||
|
|||
Hola Roman:
Me refería a que lo solucionés tal como tú me sugerías en la primera respuesta. Código:
procedure TfrmPrincipal.ModificarCampo(Tabla, NombreCampo: String; TipoCampo: TFieldType; Longitud: Integer); var Consulta: String; Begin // Añade un campo temporal con la nueva estructura. Consulta:='alter table "'+Tabla+'" add CampoTemp'; Case TipoCampo Of ftBoolean: Consulta:=Consulta+' boolean'; ftDate: Consulta:=Consulta+' date'; ftString: Consulta:=Consulta+' char('+IntToStr(Longitud)+')'; ftInteger: Consulta:=Consulta+' integer'; ftFloat: Consulta:=Consulta+' numeric'; End; With Datamodulo.qryConsultas Do Begin Close; SQL.Clear; SQL.Add(Consulta); ExecSQL; End; // Actualiza el campo temporal con la información del campo a modificar. Consulta:='update "'+Tabla+'" set CampoTemp='+NombreCampo; With Datamodulo.qryConsultas Do Begin SQL.Clear; SQL.Add(Consulta); ExecSQL; End; // Elimina el campo a Modificar Consulta:='alter table "'+Tabla+'" drop '+NombreCampo; With Datamodulo.qryConsultas Do Begin SQL.Clear; SQL.Add(Consulta); ExecSQL; End; // Vuelve a crear el campo modificado con la nueva estructura. Consulta:='alter table "'+Tabla+'" add '+NombreCampo; Case TipoCampo Of ftBoolean: Consulta:=Consulta+' boolean'; ftDate: Consulta:=Consulta+' date'; ftString: Consulta:=Consulta+' char('+IntToStr(Longitud)+')'; ftInteger: Consulta:=Consulta+' integer'; ftFloat: Consulta:=Consulta+' numeric'; End; With Datamodulo.qryConsultas Do Begin Close; SQL.Clear; SQL.Add(Consulta); ExecSQL; End; // Actualiza el campo a modificar con la información del campo temporal. Consulta:='update "'+Tabla+'" set '+NombreCampo+'=CampoTemp'; With Datamodulo.qryConsultas Do Begin SQL.Clear; SQL.Add(Consulta); ExecSQL; End; // Elimina el campo temporal. Consulta:='alter table "'+Tabla+'" drop CampoTemp'; With Datamodulo.qryConsultas Do Begin SQL.Clear; SQL.Add(Consulta); ExecSQL; End; End; Última edición por Jose_Pérez fecha: 04-01-2005 a las 14:46:36. |
|
|
|