Clipper On Line • Ver Tópico - Executando Store Procedure MSSQL Via ADO

Executando Store Procedure MSSQL Via ADO

Discussão sobre SQL

Moderador: Moderadores

 

Executando Store Procedure MSSQL Via ADO

Mensagempor Itamar M. Lins Jr. » 26 Set 2014 00:14

Guardando aqui esse exemplo.

oConn := CreateObject("ADODB.Connection")

oConn:ConnectionString := "PROVIDER=SQLOLEDB;DATASOURCE=miservidor;DATABASE=mibasedatos;UID=miusuario;PWD=miclave"
oConn:Open()
oConn:Execute("Copiar_Diagrama "+Alltrim(Str(AUX->A_RECNO))+",  '"+Str(nDCODDES,3)+"', ")
oConn:Close()


SP = Store Procedure!

Pedro,

Te comparto unas líneas de código donde utilizo ADO, me conecto a una base de datos SQL, ejecuto un SP con parametro y me traigo información de los SP que voy ejecutando, espero te sirva para que tengas idea de CÓMO traer los datos de ResulSet a tu aplicación

PROCEDURE GetBEInformation()
  LOCAL oGetBEInfo := CreateObject("ADODB.Recordset")
  LOCAL oCommPer  := CreateObject("ADODB.Recordset")
  LOCAL oCountry  := CreateObject("ADODB.Recordset")
  TurnOffControls()
  IF Frm_BEInfo.Txt_BE.Value < 101
   MsgExclamation("Este DIN no se puede consultar ya que es"+CORTEL+"para uso exclusivo del sistema","¡Error!")
   Frm_BEInfo.Txt_BE.SetFocus
   RETURN
  ENDIF
  CursorWait()
  LnDin := ALLTRIM(STR(Frm_BEInfo.Txt_BE.Value))
  LsRSBEInfo := "usp_HMG_BEInfo &LnDin"
  oGetBEInfo:Open(LsRSBEInfo, cn, adOpenDynamic, adLockOptimistic)
DO CASE
  CASE oGetBEInfo:RecordCount = 0
   CursorArrow()
   MsgInfo("No existe ese DIN, teclee uno válido.","!Error¡")
   Frm_BEInfo.Txt_BE.SetFocus
   oGetBEInfo:Close()
   RETURN
  OTHERWISE
   oGetBEInfo:MoveFirst()
   CursorWait()
   WAIT WINDOW "Espere... Cargando información del DIN"  NOWAIT
   GnActive := oGetBEInfo:Fields("Active"):VALUE
   GnNameTy := oGetBEInfo:Fields("NameTy"):VALUE

// Pone el nombre en la etiqueta y si esta inactivo lo hace saber
   DO WHILE !oGetBEInfo:EOF()
    LsNameTy := oGetBEInfo:Fields("NameTy"):Value
    IF LsNameTy = 0
     Frm_BEInfo.Lbl_BEName.Value := IIF(GnActive = 1,"Nombre: "+(oGetBEInfo:Fields("Name"):VALUE),+;
              "Nombre: "+(oGetBEInfo:Fields("Name"):VALUE)+"  *INACTIVO*")
     GsEMailAddrAfiliate := oGetBEInfo:Fields("EMailAddr"):Value
    ELSE
     Frm_BEInfo.Lbl_CoAfiliate.Value := "Co-DIN "+(oGetBEInfo:Fields("Name"):VALUE)
     GsEMailAddrCoAfiliate := oGetBEInfo:Fields("EMailAddr"):Value
    ENDIF
    IF GnActive = 1
     Frm_BEInfo.Lbl_BEName.FontColor := {0,0,255}
    ELSE
     Frm_BEInfo.Lbl_BEName.FontColor := {255,0,0}
    ENDIF
    oGetBEInfo:MoveNext()
   ENDDO
   oGetBEInfo:CLOSE()
   WAIT CLEAR
ENDCASE

* Llena el combo de los periodos que se usa para buscar las órdenes
oCommPer:Open("usp_Nice_ShowCommPer", cn, adOpenDynamic, adLockOptimistic)
IF oCommPer:RecordCount = 0
  MsgInfo("No hay periodos a mostrar")
  oCommPer:CLOSE()
  RETURN
ELSE
  Frm_BEInfo.Cbo_InitEarningPeriod.DeleteAllItems
  Frm_BEInfo.Cbo_EndEarningPeriod.DeleteAllItems
  oCommPer:MoveFirst()
  DO WHILE !oCommPer:EOF()
     Frm_BEInfo.Cbo_CommPer.additem(oCommPer:Fields(""):VALUE)
     Frm_BEInfo.Cbo_FromCommPerComm.additem(oCommPer:Fields(""):VALUE)
     Frm_BEInfo.Cbo_ToCommPerComm.additem(oCommPer:Fields(""):VALUE)
     Frm_BEInfo.Cbo_InitEarningPeriod.additem(oCommPer:Fields(""):VALUE)
     Frm_BEInfo.Cbo_EndEarningPeriod.additem(oCommPer:Fields(""):VALUE)
   oCommPer:MOVENEXT()
  ENDDO
ENDIF
oCommPer:CLOSE()

* Llena el combo de monedas para la busqueda de cheques generados
oCurrencies := CreateObject("ADODB.Recordset")
oCurrencies:Open("usp_HMG_Currencies", cn, adOpenDynamic, adLockOptimistic)
IF oCurrencies:RecordCount = 0
  MsgInfo("No hay monedas que mostrar")
ELSE
  Frm_BEInfo.Cbo_CurrencyEarning.DeleteAllItems
  oCurrencies:MoveFirst()
  DO WHILE !oCurrencies:EOF()
   Frm_BEInfo.Cbo_CurrencyEarning.additem(oCurrencies:Fields("Currency"):VALUE)
   oCurrencies:MoveNext()
  ENDDO
  oCurrencies:CLOSE()
ENDIF

* Llena los datos Generales de BE
LsRSBEAddress := "usp_HMG_BEAddress &LnDin"
oGetBEInfo:Open(LsRSBEAddress, cn, adOpenDynamic, adLockOptimistic)
IF oGetBEInfo:RecordCount = 0
  MsgInfo("Este DIN no tiene ninguna dirección")
ELSE
  oGetBEInfo:MoveFirst()
  DO WHILE !oGetBEInfo:EOF()
   GnAddressTy := oGetBEInfo:Fields("AddressTy"):VALUE
   IF GnAddressTy = 0
    Frm_BEInfo.Edit_MailingAddress.Value := oGetBEInfo:Fields("Address1"):VALUE+CORTEL+;
    oGetBEInfo:Fields("Address2"):VALUE+CORTEL+;
    oGetBEInfo:Fields("Address3"):VALUE+CORTEL+;
    ALLTRIM(oGetBEInfo:Fields("City"):VALUE)+","+ALLTRIM(oGetBEInfo:Fields("State"):VALUE)+CORTEL+;
    ALLTRIM(oGetBEInfo:Fields("CountryCd"):VALUE)+" CP "+ALLTRIM(oGetBEInfo:Fields("Zip"):VALUE)+CORTEL+;
    "E-Mail: "+GsEMailAddrAfiliate
   ELSE
    Frm_BEInfo.Edit_ShippingAddress.Value := oGetBEInfo:Fields("Address1"):VALUE+CORTEL+;
    oGetBEInfo:Fields("Address2"):VALUE+CORTEL+;
    oGetBEInfo:Fields("Address3"):VALUE+CORTEL+;
    ALLTRIM(oGetBEInfo:Fields("City"):VALUE)+","+ALLTRIM(oGetBEInfo:Fields("State"):VALUE)+CORTEL+;
    ALLTRIM(oGetBEInfo:Fields("CountryCd"):VALUE)+" CP "+ALLTRIM(oGetBEInfo:Fields("Zip"):VALUE)+CORTEL+;
    "E-Mail: "+GsEMailAddrAfiliate
   ENDIF
   oGetBEInfo:MoveNext()
  ENDDO
ENDIF
oGetBEInfo:CLOSE()

* Llena el grid con los teléfonos
LsRSBEPhone := "usp_HMG_BEPhones &LnDin"
oGetBEInfo:OPEN(LsRSBEPhone, cn, adOpenDynamic, adLockOptimistic)
IF oGetBEInfo:RecordCount =0
  MsgInfo("Este DIN no tiene ningún teléfono")
ELSE
  oGetBEInfo:MOVEFIRST()
  DO WHILE !oGetBEInfo:EOF()
   Frm_BEInfo.Grd_BEPhone.AddItem ({ oGetBEInfo:Fields("Descr"):VALUE,oGetBEInfo:Fields("Phone"):VALUE})
   oGetBEInfo:MOVENEXT()
  ENDDO
ENDIF
oGetBEInfo:CLOSE()

* Lleno el grid con sus patrocinadores (UpLine)
LsRSMyUpLine := "usp_HMG_MyUpLine &LnDin"
oGetBEInfo:OPEN(LsRSMyUpLine, cn, adOpenDynamic, adLockOptimistic)
IF oGetBEInfo:RecordCount = 0
  MsgInfo("Ese DIN no tiene ascendencia")
ELSE
  oGetBEInfo:MOVEFIRST()
  DO WHILE !oGetBEInfo:EOF()
  Frm_BEInfo.Grd_UpLine.AddItem ({ ALLTRIM(STR(oGetBEInfo:Fields("ULBE"):VALUE)),+;
          oGetBEInfo:Fields("Descr"):VALUE,+;
          oGetBEInfo:Fields("Approval"):Value,+;
          oGetBEInfo:Fields("Reason"):Value })
  oGetBEInfo:MOVENEXT()
  ENDDO
ENDIF

/* Llena el combo de Paises para el tab de MISCELANEOS */
oCountry:Open("usp_HMG_Countries", cn, adOpenDynamic, adLockOptimistic)
IF oCountry:RecordCount > 0
  oCountry:MoveFirst()
  DO WHILE !oCountry:EOF()
   Frm_BEInfo.Cbo_CriteriaCountryCd.additem(oCountry:Fields("CountryName"):VALUE)
   oCountry:MoveNext()
  ENDDO
  oCountry:Close()
ENDIF

oGetBEInfo:CLOSE()
Wait Clear
CursorArrow()

* Revisa si el usuario tiene acceso a ver información general del DIN.
*IF !CheckAccess()
* Frm_BEInfo.Btn_Exit.SetFocus
* RETURN 
*ENDIF

RETURN

Si tienes alguna duda con gusto puedo ayudarte en lo poco que se. (que no se mucho)


C o r d i a l m e n t e  ,

Jorge Posadas Ch.
Director General.
http://posoft.mx


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes



Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro