En el script lo que esta haciendo, es crear una tabla nueva con el nuevo formato, cargarle los datos y después renombrarla.
Para agregar un campo, podes ejecutar directamente: ALTER TABLE Matriz ADD NuevoCampo char(10) NULL Saludos, Eugenio _____ De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Eliseo Alegre Enviado el: Jueves, 07 de Febrero de 2008 12:55 p.m. Para: [email protected] Asunto: [puntonet] Modificar tabla SQl desde VB.NET Hola: gracias por responder... pero mi mayor problema ya no es como saber si existe el campo o la tabla porque, aunque no se si es la forma correcta, con hacer una consulta con control de errores puedo saberlo. El tema es que por ejemplo para agregar un campo a una tabla genero la secuencia de comandos en SQL Server 2005 y me arroja varias lineas de codigo TSQL como el que está más abajo. El tema es que no se como ejecutar ese código TSQL desde VB.NET codigo: BEGIN TRANSACTION SET QUOTED_IDENTIFIER ON SET ARITHABORT ON SET NUMERIC_ROUNDABORT OFF SET CONCAT_NULL_YIELDS_NULL ON SET ANSI_NULLS ON SET ANSI_PADDING ON SET ANSI_WARNINGS ON COMMIT BEGIN TRANSACTION GO CREATE TABLE dbo.Tmp_Matriz ( Id int NOT NULL IDENTITY (1, 1), IdCuenta varchar(36) NOT NULL, IdUsuario varchar(36) NOT NULL, Cuenta varchar(100) NOT NULL, Division varchar(50) NULL, SubDivision varchar(50) NULL, Demostracion int NULL, Venta int NULL, Mantenimiento int NULL, Venta3M float(53) NULL, VentaCompetencia float(53) NULL, Potencial float(53) NULL, Share float(53) NULL, Penetracion float(53) NULL, GAP float(53) NULL, Mercado varchar(30) NULL, Dato1 varchar(100) NULL, Dato2 varchar(100) NULL ) ON [PRIMARY] GO SET IDENTITY_INSERT dbo.Tmp_Matriz ON GO IF EXISTS(SELECT * FROM dbo.Matriz) EXEC('INSERT INTO dbo.Tmp_Matriz (Id, IdCuenta, Cuenta, Division, SubDivision, Demostracion, Venta, Mantenimiento, Venta3M, VentaCompetencia, Potencial, Share, Penetracion, GAP, Mercado, Dato1, Dato2) SELECT Id, IdCuenta, Cuenta, Division, SubDivision, Demostracion, Venta, Mantenimiento, Venta3M, VentaCompetencia, Potencial, Share, Penetracion, GAP, Mercado, Dato1, Dato2 FROM dbo.Matriz WITH (HOLDLOCK TABLOCKX)') GO SET IDENTITY_INSERT dbo.Tmp_Matriz OFF GO DROP TABLE dbo.Matriz GO EXECUTE sp_rename N'dbo.Tmp_Matriz', N'Matriz', 'OBJECT' GO COMMIT Gracias por responder! Eliseo ----- Original Message ----- From: Carlos <mailto:[EMAIL PROTECTED]> Marcelo Santos To: [email protected] Sent: Thursday, February 07, 2008 10:18 AM Subject: [puntonet] Modificar tabla SQl desde VB.NET Hola: En el mismo sentido que te recomendó Eugenio podés usar esto: SELECT C.* FROM syscolumns C LEFT JOIN sysobjects O ON C.id = C.id WHERE O.name = 'tuTabla' AND C.name = 'tuCampo' Pero cuidado, esto anda bien siempre y cuando tu nombre de campo no sea una palabra reservada, por ejemplo si ejecutás esto con nombre de campo Name te trae unos cuantos registros aunque no sea campo de la tabla. Necesitás agregar un WHERE jugando con el campo xtype de syscolumns y con algún otro más. Si hacés la consulta en la lista de DBMS te van a poder ampliar. Carlos Marcelo Santos. From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Eliseo Alegre Sent: Miércoles, 06 de Febrero de 2008 03:40 p.m. To: [email protected] Subject: [puntonet] Modificar tabla SQl desde VB.NET Gracias por tu ayuda, algo así se me había ocurrido. La duda que tengo es comoejecuto el codigo TSQL desde la aplicación. Eliseo ----- Original Message ----- From: [EMAIL PROTECTED] To: [email protected] Sent: Tuesday, February 05, 2008 3:49 PM Subject: [puntonet] Modificar tabla SQl desde VB.NET Primero apunta al SysObject sino una vez tuve que hacer algo asi y lo que se me ocurrio entonces era muuy trucho pero anduvo Disparas una consulta a la BD controlando errores. El TOP 0 es para que no devuelva registros y sea lo mas rapido posible "Select TOP 0 * From <TABLA>" Si Da OK, la tabla existe, sino no "Select TOP 0 <CAMPO> From <TABLA>" Ahi no recuerdo como te da el error, pero algo similar a lo anterior No creo que sea lo mejor, debe haber almo muchisimo mejor, pero alomejor sirve Ing. Diego M. Basélica e-mail: <blocked::blocked::blocked::mailto:[EMAIL PROTECTED]> [EMAIL PROTECTED] UpSoft Sistemas Informáticos Rafael Nuñez 3498 (X5009CFO) Córdoba, Argentina Tel/Fax: 0351-4814812 (rot.) www.upsoft.com.ar <blocked::http://www.upsoft.com.ar/> _____ De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Eugenio Alonso Enviado el: Martes, 05 de Febrero de 2008 14:11 Para: [email protected] Asunto: [puntonet] Modificar tabla SQl desde VB.NET Si es SQL Server Podes consultar la tabla sysobjects y syscolumns Saludos, Eugenio _____ De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Eliseo Alegre Enviado el: Martes, 05 de Febrero de 2008 11:26 a.m. Para: [email protected] Asunto: [puntonet] Modificar tabla SQl desde VB.NET Alguien tiene algún ejemplo para saber si existe un campo en una tabla y si no existe crearlo desde una aplicación vb.net. También necesito hacer lo mismo con toda una tabla. Gracias Eliseo No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.516 / Virus Database: 269.19.20/1262 - Release Date: 06/02/2008 09:13 a.m. No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.5.516 / Virus Database: 269.19.21/1263 - Release Date: 06/02/2008 08:14 p.m.
