SQL Server

Post Reply
juan carlos bellucci
Posts: 115
Joined: Sat Mar 07, 2009 9:36 pm
Location: Argentina
Contact:

SQL Server

Post 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.
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: SQL Server

Post 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
Enrrique Vertiz
Posts: 440
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru
Contact:

Re: SQL Server

Post 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.
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
User avatar
QAZWSX2K
Posts: 359
Joined: Tue Oct 25, 2005 7:06 pm
Location: Bogota - Caracas

Re: SQL Server

Post by QAZWSX2K »

como asi que la has robado?, esperamos todos sea un error de teclado y que te falto la "P" jajaja
Software especializado para oficinas contables con grandes volumenes de Informacion
Impresion de todos los formularios del Seniat, Dian

alex_patino74@hotmail.com
whatsapp 57+3214777217
Enrrique Vertiz
Posts: 440
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru
Contact:

Re: SQL Server

Post by Enrrique Vertiz »

Efectivamente se quedo la "P" atracada :-)
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
Simon
Posts: 105
Joined: Thu Oct 20, 2005 12:29 pm
Location: Maracaibo, Venezuela.

Re: SQL Server

Post 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


 
Simon
Posts: 105
Joined: Thu Oct 20, 2005 12:29 pm
Location: Maracaibo, Venezuela.

Re: SQL Server

Post 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).
Miguel Salas
Posts: 132
Joined: Sun Oct 23, 2005 4:09 pm
Location: Pánuco,Ver. México

Re: SQL Server

Post 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
User avatar
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: SQL Server

Post 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

 
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
Miguel Salas
Posts: 132
Joined: Sun Oct 23, 2005 4:09 pm
Location: Pánuco,Ver. México

Re: SQL Server

Post by Miguel Salas »

Agradezco mucho tu aporte, Leandro

voy a probarlo, me llevaré un rato en esto

Saludos
desde México
Post Reply