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 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: [EMAIL PROTECTED]
UpSoft Sistemas Informáticos
Rafael Nuñez 3498 (X5009CFO) Córdoba, Argentina
Tel/Fax: 0351-4814812 (rot.)
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.