Page 1 of 1

SQL Server

Posted: Fri Sep 23, 2011 3:10 pm
by juan carlos bellucci
Buenos Días Foro: Por favor estoy desarrollando un sistema para muchas maquinas y el sistema anterior trabaja con bases de datos tipo mdb y necesitaría algun ejemplo si son tan amables de como crear, abrir, etc con bases tipo SQL SERVER. desde ya se agradece. Si alguien cree que debo abonar los ejemplos que me pase los precios a mi correo juanca252@yahoo.com.ar ... tengo fwh612 t bcc55.

Re: SQL Server

Posted: Fri Sep 23, 2011 4:50 pm
by horacio
Puedes usar ado para comunicarte con el motor. Es fácil y práctico y no necesitas ninguna utilidad para trabajar con motores SQL.

Saludos

Re: SQL Server

Posted: Fri Sep 23, 2011 5:43 pm
by Enrrique Vertiz
Tambien tienes una opcion pago SQLRDD que comercializa la gente de xharbour.com tienen una opcion para Borland C 5.5, Yo la he robado, y funciona Ok, es mas en el foro Alfredo Artega hasta donde lei tiene sus sistemas trabajando con esta libreria y le va Ok.

Re: SQL Server

Posted: Fri Sep 23, 2011 5:53 pm
by QAZWSX2K
como asi que la has robado?, esperamos todos sea un error de teclado y que te falto la "P" jajaja

Re: SQL Server

Posted: Fri Sep 23, 2011 6:00 pm
by Enrrique Vertiz
Efectivamente se quedo la "P" atracada :-)

Re: SQL Server

Posted: Fri Sep 23, 2011 11:42 pm
by Simon
Yo ya he hecho 2 aplicaciones usando solo harbour y fivewin (sin usar nada mas), debes conocer un poco de lenguaje sql.

yo trabajo mucho con stored procedures y funciones del lado del servidor.

por ejemplo debes olvidarte de manejar las tablas como si fueran un archivo dbf, la arquitectura es distinta aunque ya pasaste de dbf a mdb y ya debes saber usar querys.
primero descargas sqlexpress desde la pagina de microsoft y lo instalas.
segundo revisa si tienes instalado el sql native client, porque ese es el driver que uso en el ejemplo (si no lo instalo el sqlexpress lo puedes bajar desde la web de microsoft)
por ultimo usas estas 2 funciones en tus programas estas son las funciones que uso:

Code: Select all


function main()
Local oAdo := ADOConnector()
Local oRs  := ADORecordSet( oAdo, "SELECT * FROM itemfac")

xbrowse( oRs )

Return nil


Function ADOConnector()

   Local cStr     := "Driver={SQL Native Client};database=basededatos;server=localhost;user id=sa;password=123"  
   Local oReturn  := tOleAuto():New("ADODB.connection")

   oReturn:ConnectionSTring  := cStr

   try
      oReturn:Open()
   catch
      oReturn := nil
      msginfo( 'Error conectando con el servidor' )
   end try

Return oReturn

Function ADORecordSet( oConnect, cSql )
   Local oRs
   Local cError := "No se ha podido crear el objeto RECORDSET !"

   try

      oRs := CreateObject("ADODB.RecordSet")
      oRs:CursorLocation  := 3
      oRs:LockType        := 4
      oRs:ActiveConnection:= oConnect
      oRs:source := cSql

      oRs:Open()

   catch oerror

      //MsgStop( "Error construyendo recordset (ADO)" + CRLF + cSql, cError )
      memoedit( cSql ) //uso memoedit para en caso de un error con la sintaxis copio y pego en el sql management studio del servidor y lo pruebo

   end try

Return oRS


 

Re: SQL Server

Posted: Fri Sep 23, 2011 11:47 pm
by Simon
Disculpa no habia visto que usa 6.12, esto no te va a servir, si quieres hacer algo moderno y profesional vas a tener rascarte el bolsillo, el salto es demasiado grande yo uso 11.01 y ya estoy en proceso de comprar la nueva version de fw (es la mejor inversion que he hecho).

Re: SQL Server

Posted: Tue Apr 10, 2012 4:55 pm
by Miguel Salas
Hola Simon!

Veo que usas ado para tus sistemas, estoy empezando a migrar mis aplicaciones a MySql, podrias proporcionarme un ejemplo basico de como le hiciste.

Saludos y gracias de antemano

Re: SQL Server

Posted: Wed Apr 11, 2012 9:52 pm
by leandro
Amigo aqui un ejemplo con altas bajas y modificaciones con ADO, espero te sirva

Code: Select all

**********************************************************
* PROGRAMA DE INVENTARIOS Y COSTOS DE PRODUCCION EN MYSQL*
* Modulo: Catálogo de Bodegas                   *
* Inicio: 06 de Abril de 2006                    *
* Actual: 19 de Febrero de 2008                  *
**********************************************************
#include "fivewin.ch"
#include "xbrowse.ch"
#include "report.ch"
#include "Ado.ch"

pBodegas()

********************
*Catalogo de Bodegas
********************
PROC pBodegas()

LOCAL aCol:={0,0},oCuadro
oLamcla:oC1vg1:=space(100)
oLamcla:vOrden:="b_nombre"
oLamcla:oTimpr:=1

oVar   := "SELECT * from "+oLamcla:tBode+" ORDER BY "+alltrim(oLamcla:vOrden)
TRY
  oLamcla:oRsBodega:=tOleAuto():New("ADODB.RecordSet")
CATCH oError
  MsgStop( "No se ha podido crear el RECORDSET !","Error de Datos" )
END

oLamcla:oRsBodega:CursorLocation  := adUseClient //adUseServer
oLamcla:oRsBodega:LockType        := adLockOptimistic
oLamcla:oRsBodega:CursorType      := adOpenKeyset
oLamcla:oRsBodega:Source          := oVar
oLamcla:oRsBodega:ActiveConnection( oLamcla:oServer )
TRY
  oLamcla:oRsBodega:Open()
CATCH oError
  MsgStop( "No se ha podido ejecutar el comando !", "Error de Datos" )
END

DEFINE BRUSH oFondo FILE ".\res\res_403.BMP"
DEFINE DIALOG oCuadro RESOURCE "orMedida" ICON "#8001" TRANSPARENT BRUSH oFondo

  REDEFINE BUTTONBMP Btn_Limp ID 4003 OF oCuadro BITMAP "Blimpi2" TOOLTIP oLamcla:mTfil ACTION pBusBod(oLamcla:oC1vg1:=space(100))
  REDEFINE GET oC1og1 VAR oLamcla:oC1vg1 ID 4002 OF oCuadro UPDATE VALID(pBusBod(),.T.)

  oLamcla:oBrwBode := TXBrowse():New( oCuadro )
  oLamcla:oBrwBode:nMarqueeStyle       := MARQSTYLE_HIGHLROW
  oLamcla:oBrwBode:nColDividerStyle    := LINESTYLE_RAISED
  oLamcla:oBrwBode:nHeaderLines        := 1
  oLamcla:oBrwBode:lColDividerComplete := .t.
  oLamcla:oBrwBode:lRecordSelector     := .t.
  oLamcla:oBrwBode:bClrSel         := {|| { CLR_BLACK,oLamcla:cClr7 } }
  oLamcla:oBrwBode:bClrStd         := {|| IF( (oLamcla:oRsBodega:AbsolutePosition()%2)==0,{CLR_BLACK,oLamcla:cClr2},{CLR_BLACK,oLamcla:cClr1} ) }
  oLamcla:oBrwBode:bClrSelFocus        := {|| { CLR_WHITE,RGB(147,160,112) } }

  aCol[ 1]                   := oLamcla:oBrwBode:AddCol()
  aCol[ 1]:bStrData          := { || If( oLamcla:oRsBodega:Eof, Space( nWidth ), cValtoChar( oLamcla:oRsBodega:Fields( "b_bodega" ):Value ) ) }
  aCol[ 1]:cHeader            := "Codigo"
  aCol[ 1]:nHeadStrAlign     := AL_LEFT
  aCol[ 1]:nDataStrAlign     := AL_LEFT
  aCol[ 1]:nWidth            := 80

  aCol[ 2]                   := oLamcla:oBrwBode:AddCol()
  aCol[ 2]:bStrData          := { || If( oLamcla:oRsBodega:Eof, Space( nWidth ), cValtoChar( oLamcla:oRsBodega:Fields( "b_nombre" ):Value ) ) }
  aCol[ 2]:cHeader            := "Nombre"
  aCol[ 2]:nHeadStrAlign     := AL_LEFT
  aCol[ 2]:nDataStrAlign     := AL_LEFT
  aCol[ 2]:nWidth            := 225

  oLamcla:oBrwBode:SetADO( oLamcla:oRsBodega )
  oLamcla:oBrwBode:CreateFromResource( 102 )

  oCuadro:cTitle   := "Tabla de Bodegas"
  oCuadro:bKeyDown := {|nKey|iif(nKey == 114,(oLamcla:vgraba:=.t.,oLamcla:autoriza(64)),(iif(nKey == 115,(oLamcla:vgraba:=.f.,oLamcla:autoriza(65)),(iif(nKey == 116,(oLamcla:autoriza(66)),(""))))))}

ACTIVATE DIALOG oCuadro NOWAIT On Init (Centra( oCuadro ),oCuadro:refresh(),BarraBod( oCuadro )) CENTERED


**************************************
*CREA LA BARRA DE HERRAMIENTAS BODEGAS
**************************************
FUNCTION BarraBod( oCuadro )
LOCAL oBar,oBtn,oCodigo,oNombre

MENU oOrdTal POPUP 2007
  MENUITEM oCodigo PROMPT "Código" ACTION (oCodigo:SetCheck( .T. ),oNombre:SetCheck( .F. ),oLamcla:vOrden:="b_bodega",pOrdBod())
  MENUITEM oNombre PROMPT "Nombre" ACTION (oCodigo:SetCheck( .F. ),oNombre:SetCheck( .T. ),oLamcla:vOrden:="b_nombre",pOrdBod())
ENDMENU

MENU oPopup POPUP 2007
  MENUITEM "Configurar Impresora" ACTION PrinterSetup()
  SEPARATOR
  MENUITEM "Generar reporte a impresora" ACTION (oLamcla:oTimpr:=1,oLamcla:autoriza(67))
  MENUITEM "Generar reporte a Excel"  ACTION (oLamcla:oTimpr:=2,oLamcla:autoriza(67))
ENDMENU

oCodigo:SetCheck( .T. )
oNombre:SetCheck( .F. )
DEFINE BUTTONBAR oBar OF oCuadro SIZE 60,60 2007
DEFINE BUTTON OF oBar RESOURCE "#8016" PROMPT "Agregar" TOOLTIP "Agregar Registro - F3" ACTION (oLamcla:vgraba:=.t.,oLamcla:autoriza(64))
DEFINE BUTTON OF oBar RESOURCE "#8014" PROMPT "Modificar" TOOLTIP "Modificar Registro - F4" ACTION (oLamcla:vgraba:=.f.,oLamcla:autoriza(65))
DEFINE BUTTON OF oBar RESOURCE "#8017" PROMPT "Borrar" TOOLTIP "Borrar Registro - F5" ACTION oLamcla:autoriza(66)
DEFINE BUTTON OF oBar RESOURCE "#8012" PROMPT "Imprimir" TOOLTIP "Imprimir Listado" MENU oPopup ACTION (oLamcla:oTimpr:=1,oLamcla:autoriza(67))
DEFINE BUTTON OF oBar RESOURCE "#8019" PROMPT "Ordenar" TOOLTIP "Organizar Información" MENU oOrdTal ACTION (oCodigo:SetCheck( .F. ),oNombre:SetCheck( .T. ),oLamcla:vOrden:="b_nombre",pOrdBod())
DEFINE BUTTON OF oBar RESOURCE "#8013" PROMPT "Cerrar" TOOLTIP "Cerra Ventana" ACTION (oLamcla:oRsBodega:Close(),oCuadro:End())
oBar:GoTop()

RETURN .T.

****************
*Agregar Bodegas
****************
PROC pAgreBod()

oB2vg1:=space(3)
oB2vg2:=space(50)
oB2vg3:=space(50)
oB2vg4:=space(20)

DEFINE BRUSH oFondo FILE ".\res\res_403.BMP"
DEFINE DIALOG oCuadr1 RESOURCE "orBodeg1" ICON "#8001" TRANSPARENT BRUSH oFondo

 REDEFINE BUTTONBMP Btn_Grab ID 11 OF oCuadr1 BITMAP "Bgrab" ACTION pValiBod()
 REDEFINE BUTTONBMP Btn_Canc ID 10 OF oCuadr1 BITMAP "Bcanc" ACTION oCuadr1:End()

 REDEFINE GET oB2og1 VAR oB2vg1 ID 4001 OF oCuadr1
 REDEFINE GET oB2og2 VAR oB2vg2 ID 4003 OF oCuadr1
 REDEFINE GET oB2og3 VAR oB2vg3 ID 4004 OF oCuadr1
 REDEFINE GET oB2og4 VAR oB2vg4 ID 4006 OF oCuadr1

 oCuadr1:cTitle := "Agregar Registro Bodegas"

ACTIVATE DIALOG oCuadr1 CENTERED

****************
*Validar Bodegas
****************
PROC pValiBod()

IF Empty(oB2vg1)
  MsgStop("Digite Codigo Bodega",oLamcla:mImco)
  oB2og1:setfocus()
ELSE
  IF Empty(oB2vg2)
    MsgStop("Digite Nombre Bodega",oLamcla:mImco)
    oB2og2:setfocus()
  ELSE
    IF oLamcla:vgraba=.t.
      oVar:="SELECT * from " + oLamcla:tBode +" WHERE b_bodega='"+alltrim(oB2vg1)+"'"
      TRY
        oConsBO := CreateObject("ADODB.Recordset")
      CATCH oError
        MsgStop(oLamcla:mErnt,oLamcla:mErco)
        RETURN(.F.)
      END
      oConsBO:CursorLocation  := adUseClient //adUseServer
      oConsBO:LockType        := adLockOptimistic
      oConsBO:CursorType      := adOpenKeyset
      oConsBO:Source          := oVar
      oConsBO:ActiveConnection( oLamcla:oServer )
      TRY
        oConsBO:Open()
      CATCH oError
        MsgStop(oLamcla:mComa,mDato)
      END
      nRegistros := oConsBO:RecordCount()

      IF nRegistros#0
        oConsBO:MoveFirst()
        vMedi:=oConsBO:Fields("b_bodega"):Value
        vNomb:=oConsBO:Fields("b_nombre"):Value
        oConsBO:close()
        MsgAlert("Bodega Existente:"+CRLF+;
                 "Código:->"+alltrim(vMedi)+CRLF+;
             "Nombre:->"+alltrim(vNomb)+CRLF+;
             "Digite Nuevamente",oLamcla:mDato)
        oB2og1:setfocus()
      ELSE
        oConsBO:close()
    pGrabBod()
      ENDIF

    ELSEIF oLamcla:vgraba=.f.
      pGrabBod()
    ENDIF
  ENDIF
ENDIF

************************************
*Graba los datos en la base de datos
************************************
PROC pGrabBod()

uFec:=date()
uTim:=subs(time(),1,8)
uCou:=alltrim(oLamcla:vCous)

IF oLamcla:vgraba=.t.
  oLamcla:oRsBodega:Addnew()
  oLamcla:oRsBodega:Fields("b_bodega"):value := alltrim(oB2vg1)
  oLamcla:oRsBodega:Fields("b_nombre"):value := alltrim(oB2vg2)
  oLamcla:oRsBodega:Fields("b_direcc"):value := alltrim(oB2vg3)
  oLamcla:oRsBodega:Fields("b_telefo"):value := alltrim(oB2vg4)
  oLamcla:oRsBodega:Fields("umovim"):value := 0
  oLamcla:oRsBodega:Fields("usuari"):value := uCou
  oLamcla:oRsBodega:Fields("ufecha"):value := uFec
  oLamcla:oRsBodega:Fields("uhoras"):value := uTim
  oLamcla:oRsBodega:Update()
ELSE
  oLamcla:oRsBodega:Fields("b_bodega"):value := alltrim(oB2vg1)
  oLamcla:oRsBodega:Fields("b_nombre"):value := alltrim(oB2vg2)
  oLamcla:oRsBodega:Fields("b_direcc"):value := alltrim(oB2vg3)
  oLamcla:oRsBodega:Fields("b_telefo"):value := alltrim(oB2vg4)
  oLamcla:oRsBodega:Fields("usuari"):value := uCou
  oLamcla:oRsBodega:Fields("ufecha"):value := uFec
  oLamcla:oRsBodega:Fields("uhoras"):value := uTim
  oLamcla:oRsBodega:Update()
ENDIF
oLamcla:oRsBodega:Requery()
oLamcla:oBrwBode:Refresh()
oCuadr1:end()


******************
*Modificar Bodegas
******************
PROC pModiBod()

tama:=50-len(oLamcla:oRsBodega:Fields("b_nombre"):Value)
tamb:=50-len(oLamcla:oRsBodega:Fields("b_direcc"):Value)
tamc:=20-len(oLamcla:oRsBodega:Fields("b_telefo"):Value)
oB2vg1:=oLamcla:oRsBodega:Fields("b_bodega"):Value
oB2vg2:=oLamcla:oRsBodega:Fields("b_nombre"):Value+space(tama)
oB2vg3:=oLamcla:oRsBodega:Fields("b_direcc"):Value+space(tamb)
oB2vg4:=oLamcla:oRsBodega:Fields("b_telefo"):Value+space(tamc)

DEFINE BRUSH oFondo FILE ".\res\res_403.BMP"
DEFINE DIALOG oCuadr1 RESOURCE "orBodeg1" ICON "#8001" TRANSPARENT BRUSH oFondo

 REDEFINE BUTTONBMP Btn_Grab ID 11 OF oCuadr1 BITMAP "Bgrab" ACTION pValiBod()
 REDEFINE BUTTONBMP Btn_Canc ID 10 OF oCuadr1 BITMAP "Bcanc" ACTION oCuadr1:End()

 REDEFINE GET oB2og1 VAR oB2vg1 ID 4001 OF oCuadr1
 REDEFINE GET oB2og2 VAR oB2vg2 ID 4003 OF oCuadr1
 REDEFINE GET oB2og3 VAR oB2vg3 ID 4004 OF oCuadr1
 REDEFINE GET oB2og4 VAR oB2vg4 ID 4006 OF oCuadr1

 oB2og1:disable()
 oCuadr1:cTitle := "Modificar Registro Tabla Bodegas"

ACTIVATE DIALOG oCuadr1 CENTERED

****************
*Borrar Registro
****************
PROC pBorrBod()
nRegistros := oLamcla:oRsBodega:RecordCount()
IF nRegistros#0
  oM2vg1:=oLamcla:oRsBodega:Fields("b_bodega"):Value
  oM2vg2:=oLamcla:oRsBodega:Fields("b_nombre"):Value
  IF MSGNOYES("Confirma Eliminar Bodega"+CRLF+;
              "Código:->"+alltrim(oM2vg1)+CRLF+;
          "Nombre:->"+alltrim(oM2vg2),oLamcla:mCoto)
    oLamcla:oRsBodega:Delete()
    oLamcla:oRsBodega:Requery()
    oLamcla:oBrwBode:Refresh()
  ENDIF
ENDIF

************************************
*hace la busqueda global en la tabla
************************************
PROC pBusBod()
IF Empty(oLamcla:oC1vg1)
    oLamcla:oRsBodega:Filter := ""
ELSE
  oLamcla:oRsBodega:Filter := oLamcla:vOrden+" LIKE '%" + alltrim(oLamcla:oC1vg1) + "%'"
  IF oLamcla:oRsBodega:EOF .and. oLamcla:oRsBodega:BOF
    MsgStop( oLamcla:mBusc,oLamcla:mDato)
    oLamcla:oRsBodega:Filter := ""
  ENDIF
ENDIF
oLamcla:oRsBodega:REQUERY()
oLamcla:oBrwBode:Refresh()
RETURN( NIL )

******************
*orden de la tabla
******************
PROC pOrdBod()
oLamcla:oRsBodega:Sort := oLamcla:vOrden
oLamcla:oRsBodega:REQUERY()
oLamcla:oBrwBode:Refresh()

*********************
*Imprimir Información
*********************
PROC pImprBod()
nRegistros := oLamcla:oRsBodega:RecordCount()
IF nRegistros#0
  IF (oLamcla:oTimpr=1,pIPBod(),pIXBod())
ELSE
  Msginfo(oLamcla:mErim,oLamcla:mDato)
ENDIF
********************
*IMPRIME EN PANTALLA
********************
PROC pIPBod()
local oReport,nLinea := 1, nHasta := oLamcla:oRsBodega:RECORDCOUNT(), ;
nBookMark := oLamcla:oRsBodega:BookMark
oLamcla:oRsBodega:MoveFirst()
uFec:=dtoc(date())
uTim:=subs(time(),1,8)

REPORT oReport CAPTION "TABLA DE BODEGAS"  HEADER oLamcla:vGnom,"NIT:"+lymatrim(oLamcla:vGnit)+"-"+lymatrim(oLamcla:vGdig),"TABLA DE BODEGAS","Página Número: " + STR (oReport:nPage, 3),"Fecha Reporte: "+uFec+" - Hora: "+uTim;
CENTER  PREVIEW
  COLUMN TITLE "Código" DATA oLamcla:oRsBodega:Fields("b_bodega"):value SIZE 9
  COLUMN TITLE "Nombre" DATA oLamcla:oRsBodega:Fields("b_nombre"):value SIZE 25
  COLUMN TITLE "Dirección" DATA oLamcla:oRsBodega:Fields("b_direcc"):value SIZE 25
  COLUMN TITLE "Teléfono" DATA oLamcla:oRsBodega:Fields("b_telefo"):value SIZE 15
END REPORT

oReport:bWhile := { || nLinea <= nHasta }
oReport:oDevice:SetPortrait()
oReport:oDevice:lPrvModal := .T.
IF oReport:lCreated
  oReport:bSkip := { | | nLinea++, oLamcla:oRsBodega:MoveNext() }
ENDIF

ACTIVATE REPORT oReport ;
ON END oLamcla:oRsBodega:BookMark := nBookMark
oLamcla:oRsBodega:REQUERY()
oLamcla:oBrwBode:Refresh()


********************
*IMPRIME EN EXCEL
********************
PROC pIXBod()

LOCAL fila:=1
LOCAL vCod:="CODIGO"
LOCAL vNom:="NOMBRE"
LOCAL vDir:="DIRECCION"
LOCAL vTel:="TELEFONO"

Gvtitu:="TABLA DE BODEGAS"
oXls    := Txls():New( ".\xls\Bodegas.xls",, .T. )

oXls:Width( 01 , 10 )
oXls:Width( 02 , 50 )
oXls:Width( 03 , 50 )
oXls:Width( 04 , 20 )

oXls:Say( fila, 01, Gvtitu ,,,,,1 )
++fila

oXls:Say( fila, 01, vCod ,,,,,1 )
oXls:Say( fila, 02, vNom ,,,,,1 )
oXls:Say( fila, 03, vDir ,,,,,1 )
oXls:Say( fila, 04, vTel ,,,,,1 )
++fila

oLamcla:oRsBodega:MoveFirst()
Do While !oLamcla:oRsBodega:Eof()
  oXls:Say( fila, 01, oLamcla:oRsBodega:Fields( "b_bodega" ):Value ,,,,,0 )
  oXls:Say( fila, 02, oLamcla:oRsBodega:Fields( "b_nombre" ):Value ,,,,,0 )
  oXls:Say( fila, 03, oLamcla:oRsBodega:Fields( "b_direcc" ):Value ,,,,,0 )
  oXls:Say( fila, 04, oLamcla:oRsBodega:Fields( "b_telefo" ):Value ,,,,,0 )
  oLamcla:oRsBodega:MoveNext()
  ++fila
EndDo

oXls:End()

oLamcla:oRsBodega:REQUERY()
oLamcla:oBrwBode:Refresh()

SHELLEXECUTE(,"OPEN",".\xls\Bodegas.xls",,,)
 
Aquí el trozo de código que hace la conexión con la db

Code: Select all

***************************************
*REALIZA CON CONEXION PARA LOS PERMISOS
***************************************
FUNCTION ConPerm()

TRY
  oLamcla:oConPer:=toleauto():new("adodb.connection")
CATCH oError
  MsgStop( "No se ha podido crear la conexión !", "Error de datos")
END

oLamcla:oConPer:ConnectionString:="Driver={MySQL ODBC 3.51 Driver};Server=localhost;Port=3306;User=root;Password=Pass;Option=3;"
TRY
  oLamcla:oConPer:Open()
CATCH oError
  MsgStop( "No pude abrir la conexión para crear las tablas !", "Error de datos")
END

cCommandSql := "USE "+oLamcla:cEmpDBda
TRY
  oLamcla:oConPer:Execute(cCommandSql)
CATCH oError
  IF MSGNOYES(oLamcla:mEdb1+CRLF+oLamcla:mEdb2+CRLF+oLamcla:mEdb3,oLamcla:mErco)
    cCommandSql := "CREATE DATABASE IF NOT EXISTS "+oLamcla:cEmpDBda
    TRY
      oLamcla:oConPer:Execute(cCommandSql)
    CATCH oError
       MSGINFO(oLamcla:mEdb4,oLamcla:mErco)
    END
  ELSE
    QUIT
  ENDIF
END

 

Re: SQL Server

Posted: Thu Apr 12, 2012 10:33 pm
by Miguel Salas
Agradezco mucho tu aporte, Leandro

voy a probarlo, me llevaré un rato en esto

Saludos
desde México