FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour MSSQL con Server 2003
Posts: 198
Joined: Fri Nov 18, 2005 07:34 PM
MSSQL con Server 2003
Posted: Fri May 06, 2011 04:46 PM

Hola:
Necesito agregar, eliminar y modificar campos a una tabla de MS SQL instalado en un server 2003, ya instale el MS SQL 2005 e hice la conversion de los archivos a SQL, alguien tendra un ejemplo completo de movimientos a una tabla (a帽adir, eliminar y modificar) ???

y aprovechando la ocacion, si me pueden decir donde encontrar algun manual o informacion de conexiones y uso de sql, se los agradezco bastante.

Saludos

Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: MSSQL con Server 2003
Posted: Fri May 06, 2011 09:30 PM
Aqui hay algo con ADO, esta un poco desorganizado pero creo que puede servir para empezar
Code (fw): Select all Collapse
****************************************************
*REGISTRA EN LA BASE DE DATOS LOS PEDIDOS
****************************************************
PROC Graba

LOCAL oCon
LOCAL oError
LOCAL cCommandSql
LOCAL oVar
LOCAL oContactos
LOCAL oPrecio
LOCAL oGrid
LOCAL Csc2:=0

SELE tCons
ZAP
Dbgotop()

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

oCon:ConnectionString:= "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog="+alltrim(oR5vg2)+";Data Source=SERVER\SQLEXPRESS;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=GERENCIA;Use Encryption for Data=False;Tag with column collation when possible=False"
TRY
  oCon:Open()
CATCH oError
  MsgStop( "No pude abrir la conexi贸n para crear las tablas !", "Error de datos")
  RETURN(.F.)
END

   *------------------------------------------------------------------
   * Creamos el objeto recordset de ADO
   * un recorset esta formado por Registros(filas) y campos (columnas)
   *------------------------------------------------------------------

   oVar   := "SELECT * FROM MAEPEDCXC"
   if oContactos = nil

   TRY
      oContactos := CreateObject("ADODB.Recordset")
   CATCH oError
      MsgStop( "No se ha podido crear el RECORDSET !","Error de Datos" )
      RETURN(.F.)
   END

   oContactos:CursorLocation  := adUseClient //adUseServer
   oContactos:LockType        := adLockOptimistic
   oContactos:CursorType      := adOpenKeyset
   oContactos:Source          := oVar
   oContactos:ActiveConnection( oCon )

   TRY
      oContactos:Open()
   CATCH oError
      MsgStop( "No se ha podido ejecutar el comando !", "Error de Datos" )
      RETURN(.F.)
   END
      // msginfo( oContactos )

   else
     msginfo("no esta nil")
   endif

   nRegistros := oContactos:RecordCount()

  //Msginfo(nRegistros)

   if nRegistros > 0
      oContactos:MoveFirst()
      DO WHILE !oContactos:Eof()
         Cod:= oContactos:Fields("PED_NUMPED"):Value

     SELE tCons
         APPEND BLANK
     tCons->CON_CODIGO:=Cod

     oContactos:MoveNext()
      ENDDO
   endif

   SELE tCons
   GO BOTT
   Csc:=tCons->CON_CODIGO

Csc2:=val(Csc)
Csc2++
numped:=strzero(Csc2++,9)

*------------------------------------------------------------------
* HACE EL REGISTRO EN LA CABECERA DEL PEDIDO
*------------------------------------------------------------------
cFecha := StrZero( Year( vDate ),4 )+"/"+StrZero( Day( vDate ),2 )+"/"+StrZero( Month( vDate ),2 )
//Msginfo(cFecha)

IF oRSvg2="Pedidos Ventas"
  cCommandSql := "INSERT INTO MAEPEDCXC (PED_TIPPED,PED_NUMPED,PED_ESTADO,PED_CIUDAD,PED_CEDULA,PED_TIPNOT,PED_USUARIO,PED_VENDED,PED_TIPCLI,PED_TIPCTA,PED_LISPRE,PED_PLAZO,PED_BODEGA,PED_CODSEC,PED_DIRENV,PED_ACTIVO,PED_MONEDA,PED_TASARM,PED_CODOPE,PED_NOMEMP,PED_PROREG,PED_FECPED,PED_FECINI,PED_FECVEN,PED_CEDCON,PED_SECTOR) VALUES (1,'"+numped+"',0,'"+alltrim(Subzona)+"','"+alltrim(oC1vg1)+"',' ',' ','"+alltrim(Vendedor)+"',1,'"+alltrim(oC1vg2)+"',"+transform(lista,"9")+","+transform(plazo,"999")+",'"+alltrim(oC1vg3)+"','00030005','"+alltrim(oC1vg5)+"',1,"+Subs(oRSvgM,1,1)+","+alltrim(Str(oC1vg7))+",'"+alltrim(oC1vusu)+"','"+alltrim(oRSvg1)+"','frmFAC101','"+cFecha+"','"+cFecha+"','"+cFecha+"','"+alltrim(oC1vg6)+"','"+vSector+"')"
ELSEIF oRSvg2="Pedidos Compras"
  cCommandSql := "INSERT INTO MAEPEDCXP (PED_TIPPED,PED_NUMPED,PED_ESTADO,PED_CIUDAD,PED_CEDULA,PED_TIPNOT,PED_USUARIO,PED_VENDED,PED_TIPCLI,PED_TIPCTA,PED_LISPRE,PED_PLAZO,PED_BODEGA,PED_CODSEC,PED_DIRENV,PED_ACTIVO,PED_MONEDA,PED_TASARM,PED_CODOPE,PED_NOMEMP,PED_PROREG,PED_FECPED,PED_FECINI,PED_FECVEN,PED_CEDCON,PED_SECTOR) VALUES (1,'"+numped+"',0,'"+alltrim(Subzona)+"','"+alltrim(oC1vg1)+"',' ',' ','"+alltrim(Vendedor)+"',1,'"+alltrim(oC1vg2)+"',"+transform(lista,"9")+","+transform(plazo,"999")+",'"+alltrim(oC1vg3)+"','00030005','"+alltrim(oC1vg5)+"',1,"+Subs(oRSvgM,1,1)+","+alltrim(Str(oC1vg7))+",'"+alltrim(oC1vusu)+"','"+alltrim(oRSvg1)+"','frmFAC101','"+cFecha+"','"+cFecha+"','"+cFecha+"','"+alltrim(oC1vg6)+"','"+vSector+"')"
ENDIF
//msginfo(cCommandSql)
TRY
  oCon:Execute(cCommandSql)
CATCH oError
  MsgInfo("El registro no pudo ser insertado MAEPEDCXC")
END
*------------------------------------------------------------------
* HACE EL REGISTRO DEL NUEVO CONSECUTIVO
*------------------------------------------------------------------
IF oRSvg2="Pedidos Ventas"
  cCommandSql   := "UPDATE DATPEDCXC SET PED_ULTPED="+alltrim(numped)+" WHERE PED_CODIGO=1"
ELSEIF oRSvg2="Pedidos Compras"
  cCommandSql   := "UPDATE DATPEDCXP SET PED_ULTPED="+alltrim(numped)+" WHERE PED_CODIGO=1"
ENDIF
TRY
  oCon:Execute(cCommandSql)
CATCH oError
  MsgInfo("El registro no pudo ser insertado")
END

oCon:Close()

//Msginfo("inicia proceso busqueda de precios en ka base de chantall")

*------------------------------------------------------------------
* BUSCAMOS LOS PRECIOS EN LA BASE DE DATOS DE CHANTALL
*------------------------------------------------------------------

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

oConP:ConnectionString:= "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=CHANTALL;Data Source=SERVER\SQLEXPRESS;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=GERENCIA;Use Encryption for Data=False;Tag with column collation when possible=False"
TRY
  oConP:Open()
CATCH oError
  MsgStop( "No pude abrir la conexi贸n para crear las tablas !", "Error de datos")
  RETURN(.F.)
END

*------------------------------------------------------------------
* HACE EL REGISTRO EN LA TABLA DE MOVIMIENTO
*------------------------------------------------------------------
SELE tPe05
DbGotop()
Do while !Eof()

   SELE tPe05
   Refer:=alltrim(tPe05->REFER)
   Nombr:=alltrim(tPe05->NOMBRE)
   Colos:=alltrim(tPe05->COLOR)
   Talla:=alltrim(subs(tPe05->TALLA,3,5))
   Canti:=tPe05->CANT

   //OJO CON ESTA PARTE.... TRAE EL PRECIO DE VENTA O DE COMPRA DEL ARTICULO
   //IF oRSvg2="Pedidos Ventas"
   //ELSEIF oRSvg2="Pedidos Compras"
     //oVar   := "SELECT * FROM MAEINV WHERE INV_REFER='"+Refer+"'"
   //ENDIF


   oVar   := "SELECT * FROM LISPRE WHERE PRE_CODIGO="+transform(lista,"9")+" AND PRE_REFER='"+alltrim(Refer)+"'"
   TRY
      oPrecio := CreateObject("ADODB.Recordset")
   CATCH oError
      MsgStop( "No se ha podido crear el RECORDSET !","Error de Datos" )
      RETURN(.F.)
   END

   oPrecio:CursorLocation  := adUseClient //adUseServer
   oPrecio:LockType        := adLockOptimistic
   oPrecio:CursorType      := adOpenKeyset
   oPrecio:Source          := oVar
   oPrecio:ActiveConnection( oConP )

   TRY
      oPrecio:Open()
   CATCH oError
      MsgStop( "No se ha podido ejecutar el comando !", "Error de Datos" )
      RETURN(.F.)
   END

   nRegistros := oPrecio:RecordCount()
   if nRegistros > 0
      oPrecio:MoveFirst()
      //OJO CON ESTA PARTE.... TRAE EL PRECIO DE VENTA O DE COMPRA DEL ARTICULO
      //IF oRSvg2="Pedidos Ventas"
        Precio:= oPrecio:Fields("PRE_VALOR"):Value
        Porcen:= oPrecio:Fields("PRE_PORCEN"):Value
        Refer:= oPrecio:Fields("PRE_REFER"):Value
        Valor:= oPrecio:Fields("PRE_VALOR"):Value
      //ELSEIF oRSvg2="Pedidos Compras"
       // Precio:= oPrecio:Fields("INV_VALCOM"):Value
        //Porcen:= 0
      //ENDIF
   else
      Precio:=Porcen:=Valor:=0
   endif
   oPrecio:close()

   SELE tPe05
   tPe05->Precio:=Valor
   Skip
Enddo

oConP:Close()


//Msginfo("Inicia proceso registro en la cabecera del pedido")

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

oCon:ConnectionString:= "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog="+alltrim(oR5vg2)+";Data Source=SERVER\SQLEXPRESS;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=GERENCIA;Use Encryption for Data=False;Tag with column collation when possible=False"
TRY
  oCon:Open()
CATCH oError
  MsgStop( "No pude abrir la conexi贸n para crear las tablas !", "Error de datos")
  RETURN(.F.)
END

*------------------------------------------------------------------
* HACE EL REGISTRO EN LA TABLA DE MOVIMIENTO
*------------------------------------------------------------------
SELE tPe05
DbGotop()
Do while !Eof()

   SELE tPe05
   Refer:=alltrim(tPe05->REFER)
   Nombr:=alltrim(tPe05->NOMBRE)
   Colos:=alltrim(tPe05->COLOR)
   Talla:=alltrim(subs(tPe05->TALLA,3,5))
   Canti:=tPe05->CANT
   Precio:=tPe05->Precio
   Porcen:=0

   IF oRSvg2="Pedidos Ventas"
     IF Val(Subs(oRSvgM,1,1))#0
       cCommandSql := "INSERT INTO MOVPEDCXC (PED_TIPPED,PED_NUMPED,PED_BODEGA,PED_CLASE,PED_MARCA,PED_MODELO,PED_UBICA,PED_REFER,PED_CODIGO,PED_NOMREF,PED_CANPED,PED_VALUND,PED_VALTOT,PED_CONTEN,PED_PORIVA,PED_TIPINV,PED_CODSEC,PED_CANORI,PED_GRUPO,PED_UNDMED,PED_IVAINC,PED_LISPRE,PED_NOMEMP,PED_UNIDAD1,PED_PROREG,PED_FECHA,PED_FECVEN,PED_LOTE) VALUES (1,'"+numped+"','"+alltrim(oC1vg3)+"','00','"+alltrim(Marca)+"','"+Subs(Talla,3,Len(alltrim(Talla)))+"','"+Colos+"','"+Refer+"','"+Refer+"','"+Nombr+"',"+Str(Canti)+","+Str((Precio/(1+(PorcentajeIVA/100)))*oC1vg7)+","+Str(((Precio/(1+(PorcentajeIVA/100)))*oC1vg7)*Canti)+","+Str(Canti)+","+Str(PorcentajeIVA)+",'51','00030005',"+Str(Canti)+",'"+alltrim(Grupo)+"','"+alltrim(Unidad)+"',1,"+transform(lista,"9")+",'"+alltrim(oRSvg1)+"','"+alltrim(Unidad)+"','frmFAC101','"+cFecha+"','"+cFecha+"','"+vLote+"')"
     ELSE
       cCommandSql := "INSERT INTO MOVPEDCXC (PED_TIPPED,PED_NUMPED,PED_BODEGA,PED_CLASE,PED_MARCA,PED_MODELO,PED_UBICA,PED_REFER,PED_CODIGO,PED_NOMREF,PED_CANPED,PED_VALUND,PED_VALTOT,PED_CONTEN,PED_PORIVA,PED_TIPINV,PED_CODSEC,PED_CANORI,PED_GRUPO,PED_UNDMED,PED_IVAINC,PED_LISPRE,PED_NOMEMP,PED_UNIDAD1,PED_PROREG,PED_FECHA,PED_FECVEN,PED_LOTE) VALUES (1,'"+numped+"','"+alltrim(oC1vg3)+"','00','"+alltrim(Marca)+"','"+Subs(Talla,3,Len(alltrim(Talla)))+"','"+Colos+"','"+Refer+"','"+Refer+"','"+Nombr+"',"+Str(Canti)+","+Str((Precio/(1+(PorcentajeIVA/100))))+","+Str((Precio/(1+(PorcentajeIVA/100)))*Canti)+","+Str(Canti)+","+Str(PorcentajeIVA)+",'51','00030005',"+Str(Canti)+",'"+alltrim(Grupo)+"','"+alltrim(Unidad)+"',1,"+transform(lista,"9")+",'"+alltrim(oRSvg1)+"','"+alltrim(Unidad)+"','frmFAC101','"+cFecha+"','"+cFecha+"','"+vLote+"')"
     ENDIF
   ELSEIF oRSvg2="Pedidos Compras"
     IF Val(Subs(oRSvgM,1,1))#0
       cCommandSql := "INSERT INTO MOVPEDCXP (PED_TIPPED,PED_NUMPED,PED_BODEGA,PED_CLASE,PED_MARCA,PED_MODELO,PED_UBICA,PED_REFER,PED_CODIGO,PED_NOMREF,PED_CANPED,PED_VALUND,PED_VALTOT,PED_CONTEN,PED_PORIVA,PED_TIPINV,PED_CODSEC,PED_CANORI,PED_GRUPO,PED_UNDMED,PED_IVAINC,PED_LISPRE,PED_NOMEMP,PED_UNIDAD1,PED_PROREG,PED_FECHA,PED_FECVEN) VALUES (1,'"+numped+"','"+alltrim(oC1vg3)+"','00','"+alltrim(Marca)+"','"+Subs(Talla,3,Len(alltrim(Talla)))+"','"+Colos+"','"+Refer+"','"+Refer+"','"+Nombr+"',"+Str(Canti)+","+Str((Precio/(1+(PorcentajeIVA/100)))*oC1vg7)+","+Str(((Precio/(1+(PorcentajeIVA/100)))*oC1vg7)*Canti)+","+Str(Canti)+","+Str(PorcentajeIVA)+",'51','00030005',"+Str(Canti)+",'"+alltrim(Grupo)+"','"+alltrim(Unidad)+"',1,"+transform(lista,"9")+",'"+alltrim(oRSvg1)+"','"+alltrim(Unidad)+"','frmFAC101','"+cFecha+"','"+cFecha+"')"
     ELSE
       cCommandSql := "INSERT INTO MOVPEDCXP (PED_TIPPED,PED_NUMPED,PED_BODEGA,PED_CLASE,PED_MARCA,PED_MODELO,PED_UBICA,PED_REFER,PED_CODIGO,PED_NOMREF,PED_CANPED,PED_VALUND,PED_VALTOT,PED_CONTEN,PED_PORIVA,PED_TIPINV,PED_CODSEC,PED_CANORI,PED_GRUPO,PED_UNDMED,PED_IVAINC,PED_LISPRE,PED_NOMEMP,PED_UNIDAD1,PED_PROREG,PED_FECHA,PED_FECVEN) VALUES (1,'"+numped+"','"+alltrim(oC1vg3)+"','00','"+alltrim(Marca)+"','"+Subs(Talla,3,Len(alltrim(Talla)))+"','"+Colos+"','"+Refer+"','"+Refer+"','"+Nombr+"',"+Str(Canti)+","+Str((Precio/(1+(PorcentajeIVA/100))))+","+Str((Precio/(1+(PorcentajeIVA/100)))*Canti)+","+Str(Canti)+","+Str(PorcentajeIVA)+",'51','00030005',"+Str(Canti)+",'"+alltrim(Grupo)+"','"+alltrim(Unidad)+"',1,"+transform(lista,"9")+",'"+alltrim(oRSvg1)+"','"+alltrim(Unidad)+"','frmFAC101','"+cFecha+"','"+cFecha+"')"
     ENDIF
   ENDIF

   TRY
     oCon:Execute(cCommandSql)
   CATCH oError
     MsgInfo("El registro no pudo ser insertado MOVPEDCXC")
   END

   SELE tPe05
   Skip
Enddo

IF MSGYESNO(IF(oRSvg2="Pedidos Ventas","Pedido No ","Ord.Compra No ")+alltrim(numped)+" Fue"+CRLF+;
    "Creado Exitosamente."+CRLF+;
    " "+CRLF+;
    "Desea Generar Otro Pedido","Informaci贸n")
  LIMPIA()
ELSE
  oCuadro:End()
ENDIF
Saludos
LEANDRO AREVALO
Bogot谩 (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 198
Joined: Fri Nov 18, 2005 07:34 PM
Re: MSSQL con Server 2003
Posted: Mon May 09, 2011 12:17 AM

Muchas Gracias Leandro, necesito alguna libreria para hacer la conexion ?
puedes mandarmela a mi correo ?

servicomver@hotmail.com

saludos

Continue the discussion