Armando wrote:Estimado César:
En principio me ayudarías mucho si me compartes la cadena de conexión al servidor
de la base de datos. y saber si necesito algún conector
Saludos
Tienes que instalar el cliente Oracle.
Luego en tu programa creas la conexión así:
cConnStr := "Provider=MSDASQL.1;Password =mypassword;Persist Security Info=False;User ID=myuser;Data Source=Oracle"
oCn := FW_OpenAdoConnection( cConnStr )
IF oCn = NIL
MsgStop( "Error al conectarse a ORACLE!!","Error al conectar")
RETURN nil
ENDIF
Luego, por ejemplo para consultar un dato y llenar campos get con ellos hago:
STATIC FUNCTION CargarDato(oGet,nBuscar)
LOCAL lRta := .f., oErr, oRs, cSql
cSql := "select cod_prov, razon_social "+;
"from proveedores "+;
"where cod_prov = "+Str(nBuscar)
TRY
oRs := TOleAuto():New("ADODB.Recordset")
oRs:Open(cSql,oCn)
CATCH oErr
MsgStop( "Error en la consulta, verifique!!"+CHR(10)+;
oErr:Operation+CHR(10)+oErr:Description,"Error SQL")
RETURN .f.
END TRY
IF oRs:RecordCount() > 0
oGet[02]:cText := oRs:Fields("razon_social"):value
lRta := .t.
ELSE
oRs := BrowseOracle("proveedores",{"cod_prov","razon_social","fantasia"}) //Tabla, array con campos que quiero mostrar, where
oGet[01]:cText := oRs:Fields("cod_prov"):value
oGet[02]:cText := oRs:Fields("razon_social"):value
lRta := .f.
ENDIF
RETURN lRta
******************************************************
*** Buscar en tabla generica Oracle
FUNCTION BrowseOracle(cTabla,aCampos,cWhere)
LOCAL i, oWnd1, oBrw, oDlg, oBot, nRes, oRs,oErr, cSql
DEFAULT cWhere := ""
cSql := "SELECT "
FOR i := 1 to LEN(aCampos)
cSql += aCampos[i] + ","
NEXT i
cSql := LEFT(cSql,LEN(cSql)-1)
cSql += " FROM "+cTabla
IF !EMPTY(cWhere)
cSql += " WHERE "+cWhere
ENDIF
TRY
oRs := TOleAuto():New("ADODB.Recordset")
oRs:Open(cSql,oCn)
CATCH oErr
MsgStop( "Error en la consulta, verifique!!"+CHR(10)+;
oErr:Operation+CHR(10)+oErr:Description+chr(10)+;
cSql ,"Error SQL")
RETURN nil
END TRY
DEFINE DIALOG oDlg RESOURCE "BUSCAR" TITLE cTabla
oDlg:lHelpIcon := .f.
REDEFINE XBROWSE oBrw ID 111 OF oDlg RECORDSET oRs AUTOCOLS AUTOSORT CELL
oBrw:SetAdo(oRs,.f.,.T.)
REDEFINE SAY oBrw:oSeek PROMPT "" ID 102 OF oDlg
PintaBrw(oBrw,0)
oBrw:bKeyDown := {|nKey| IF(nKey==13,oDlg:End(),.t.) }
REDEFINE BUTTON oBot ID 103 OF oDlg ACTION oDlg:end() CANCEL
ACTIVATE DIALOG oDlg ON INIT oBrw:SetFocus() CENTER
RETURN oRs
El RC de BUSCAR es
BUSCAR DIALOG DISCARDABLE 15, 19, 593, 244
STYLE WS_POPUP|DS_MODALFRAME|WS_CAPTION|WS_SYSMENU|WS_VISIBLE
CAPTION "Buscar"
FONT 8, "MS Sans Serif"
{
CONTROL "&Ok", 103, "Button", WS_TABSTOP, 384, 212, 50, 14
CONTROL "", 111, "TXBROWSE", WS_TABSTOP|0x00a000a1, 4, 5, 584, 204
CONTROL "Buscar:", -1, "Static", WS_GROUP, 6, 215, 47, 8
CONTROL "", 102, "Edit", WS_BORDER|WS_TABSTOP, 34, 212, 339, 14
}
Espero te sirva de inicio