FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Comando SQL para Sql Server 2008
Posts: 400
Joined: Tue Oct 16, 2007 05:51 PM
Comando SQL para Sql Server 2008
Posted: Thu Mar 07, 2013 09:17 PM

Buenas Tardes Foro,

Para los expertos en SQL Server,

Estoy usando ADO, para Crear una tabla en SQL Server 2008, con el comando "CREATE TABLE ..." todo bien, Pero cuando vuelvo a
ejecutar el programa me da el error de que la tabla ya existe, tengo entendido que en MySQL funciona el comando "CREATE TABLE IF EXIST ...",
pero en SQL Server no reconoce el comando "IF ", me da error..

Estoy comenzando a usar ADO con SQL Server, les agradeceria si tienen un Link o Documentacion de SQL para asi tener referencia de lo que necesito,

Desde ya Muchas Gracias,

Albeiro,

Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Comando SQL para Sql Server 2008
Posted: Fri Mar 08, 2013 12:44 AM

Albeiro:

No conozco SQL server, y tal vez el error que veo es de teclado, la sintaxis correcta,
al menos en MySql, es "CREATE DATABASE IF NOT EXISTS " para una base de datos y
"CREATE TABLE IF NOT EXISTS ...." para una tabla.

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 400
Joined: Tue Oct 16, 2007 05:51 PM
Re: Comando SQL para Sql Server 2008
Posted: Fri Mar 08, 2013 03:25 AM

Armando,

Es cierto me equivoque en la sintaxis es "CREATE TABLE IF NOT EXIT" pero eso es en MySQL,
En SQL Server no lo reconoce, me da "error de sintaxis en IF "...

Vi el comando "ALTER TABLE ...." Pero ese es para añadir una columna o eliminarla o modificar el tipo..

Aun no encuentro nada sobre eso ..

Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Comando SQL para Sql Server 2008
Posted: Fri Mar 08, 2013 04:02 AM
Albeiro:

Buscando en san google encontré este código, a ver si te sirve.

Code (fw): Select all Collapse
IF EXISTS (SELECT * FROM sysobjects WHERE type = 'U' AND name = 'Nombre de tu tabla')
    BEGIN
        PRINT 'Existe'
        
    END
ELSE
    BEGIN
        PRINT 'no existe'
    END


Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 400
Joined: Tue Oct 16, 2007 05:51 PM
Comando SQL para Sql Server 2008 (Resuelto)
Posted: Fri Mar 08, 2013 06:20 AM
Armando lo Solucione Asi :

Code (fw): Select all Collapse
cCmdSql:= " IF OBJECT_ID('dbo."+Alltrim(::Tabla)+"', 'U') IS NULL"+; 
            "   CREATE TABLE "+::Tabla+"( ROW_ID INTEGER    NOT NULL ,"+;
                                       "  CODIGO CHAR(5)    NOT NULL,"+;
                                       "  NOMBRE CHAR(30)   NOT NULL,"+;
                                       "  ACTIVO BIT        NOT NULL,"+;
                                       "  PRIMARY KEY(ROW_ID) )" 
                                                               
::oCon:Execute( cCmdSql )


Gracias,

Saludos,
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
Posts: 2706
Joined: Fri Oct 07, 2005 01:50 PM
Re: Comando SQL para Sql Server 2008
Posted: Fri Mar 08, 2013 03:05 PM
Albeiro:

You can always try to trap the opening of the table with Try\Catch ..

Code (fw): Select all Collapse
// look for New table Bin

cSay := "Looking for New Table BIN"
oSay:ReFresh()
SysReFresh()

lOk := .t.

oRs := TOleAuto():New( "ADODB.Recordset" )
oRs:CursorType     := 1        // opendkeyset
oRs:CursorLocation := 3        // local cache
oRs:LockType       := 3        // lockoportunistic

cSql := "Select * from [Bin] where 1 = 2"

TRY
  oRs:Open(cSQL,xCONNECT )
CATCH oErr
  lOk := .f.
END TRY

If lOk = .t.
   oRs:Close()
Endif

If lOk = .f.

   Try
     oCn  := CREATEOBJECT( "ADODB.Connection" )
   Catch
     Saying := "Could not create the ADO object for connection"+chr(10)
     Saying += "to Create the Table BIN"+chr(10)
     MsgInfo( Saying )
     oDlg:End()
     Return(.f.)
   End Try

   TRY
     oCn:Open( xCONNECT )
   CATCH oErr
     MsgInfo( "Could not open Connection to Database "+xSource )
     oDlg:End()
     RETURN(.F.)
   END TRY

   cSQL := "CREATE TABLE Bin"
   cSQL += "( "
   cSQL += "[BIN]       char(50) NOT NULL, "
   cSQL += "CONSTRAINT PK_BIN PRIMARY KEY ( BIN )"
   cSQL += " )"

   // create the table Bin
   // with primary key

   Try
      oCn:Execute( cSQL )
   Catch
      MsgInfo( "Table Create BIN Failed" )
      oDlg:End()
      Return(.f.)
   End try

   oCn:Close()
   oCn := nil
Posts: 400
Joined: Tue Oct 16, 2007 05:51 PM
Re: Comando SQL para Sql Server 2008
Posted: Sat Mar 09, 2013 06:09 PM

Rick,

Gracias por tu Tip, lo probare.

Saludos

Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com

Continue the discussion