No Puedo Borrar Columna Desde Consola Gambas


Subject: No Puedo Borrar Columna Desde Consola Gambas
buenas,

ALTER TABLE "tablataller" DROP COLUMN "costo"


se supone que con este comando borro la columna costo en la tabla tablataller pero no funciona.
alguien sabe porque?

Subject: Re: No Puedo Borrar Columna Desde Consola Gambas
también probé esto y no funciona

ALTER TABLE tablataller DROP costo

Subject: Re: No Puedo Borrar Columna Desde Consola Gambas
Supongo que hablas de SQLite. La compatibilidad de SQLite con DDL no es completa. Es necesario crear una tabla nueva, pasar los datos a ésta y borrar la antigua. Algo así:

BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;


Por supuesto, también lo puedes hacer con código gambas.

Saludos

Profile PM  
Subject: Re: No Puedo Borrar Columna Desde Consola Gambas
lo que intento hacer es cambiar un campo llamado costo que es de tipo texto, a tipo float (cambiar el tipo de dato en el campo costo, de texto a float)

no puedo cambiar el tipo porque borra todos los datos

entonces la idea era crear un campo costo1 copiar los datos de costo a costo1 y borrar costo.

y renombrar costo1 a costo

Last edited by v3ctor on Saturday, 14 November 2015, 18:57; edited 1 time in total
Subject: Re: No Puedo Borrar Columna Desde Consola Gambas
a ver que le parece esto sensei shordi?


Public Sub NuevaTablaTaller()
Dim sql As String
Dim Campos, Campos1 As String

sql = "Create TABLE tablataller1(id INTEGER Not Null PRIMARY KEY AUTOINCREMENT,"
sql &= "ingreso DATETIME,nombre VARCHAR(64),celular VARCHAR(16),telefono VARCHAR(16),"
sql &= "costo float(6,2) Not Null Default '0',"
sql &= "correo VARCHAR(64),domicilio VARCHAR(255),tipo VARCHAR(32),marca VARCHAR(32),modelo VARCHAR(32),serie VARCHAR(32),"
sql &= "datos TEXT,entrega DATETIME,"
sql &= "pagado VARCHAR(8) Not Null Default 'No',enTaller VARCHAR(8) Not Null Default 'Si',aCasa VARCHAR(8) Not Null Default 'No',"
sql &= "clientenuevo VARCHAR(8) Not Null Default 'No',pendiente VARCHAR(8) Not Null Default 'No',clave VARCHAR(32), rutaimagen text)"

Try FMain.Conectar1.Exec(sql)

If Error Then
Print Error.Text

Else

Campos = "id,ingreso,nombre,celular,telefono,costo,correo,domicilio,tipo,marca,modelo,serie,datos,entrega,"
Campos &= "pagado,enTaller,aCasa,clientenuevo,pendiente,clave,rutaimagen"

FMain.Conectar1.Exec("insert into tablataller1 (" & Campos & ") select " & Campos & " from tablataller ")
Wait 0.1
FMain.Conectar1.Exec("drop table tablataller")
Wait 0.1
FMain.Conectar1.Exec("alter table tablataller1 rename to tablataller")

Endif

End


al parecer funciona bien

Subject: Re: No Puedo Borrar Columna Desde Consola Gambas
rutina que chequea si el campo costo no es de tipo float llama a la rutina nuevatablataller()


Public Sub CampoCosto()
Dim Resultado As Result
Dim CampoX As Field
Dim TablaX As Table

For Each TablaX In FMain.Conectar1.Tables
If TablaX.Name = "tablataller" Then
For Each CampoX In TablaX.Fields
If CampoX.Name = "costo" Then
If CampoX.Type <> gb.Float Then
NuevaTablaTaller()
Endif
Endif
Next
Endif
Next

End

Subject: Re: No Puedo Borrar Columna Desde Consola Gambas
Ok. Con eso no tendrás prolemas, creo.

Sin embargo, en lugar de recorrer todas las tablas y campos ¿Por qué no usas en la rutina la búsqueda directa?

Algo como:

if FMain.Conectar1.Tables["tablataller"].fields["costo"].type <> gb.float then
etc. etc.
endif


Ganarías en velocidad, creo.

Profile PM  
Subject: Re: No Puedo Borrar Columna Desde Consola Gambas
gracias, excelente aporte, ni idea que se podía hacer así, que lejos se esta de conocer todo el potencial de gambas


Page 1 of 1


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.1222s (PHP: -26% SQL: 126%)
SQL queries: 24 - Debug Off - GZIP Enabled