Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Conección Delphi 2007 a Oracle (https://www.clubdelphi.com/foros/showthread.php?t=47767)

Fernando_dev 06-09-2007 17:24:32

Conección Delphi 2007 a Oracle
 
Hola,

Tengo que convertir una aplicación Delphi 5 a Delphi 2007 pero no puedo conectarme a Oracle.

La aplicación utiliza TStoredProc (s) cuya propiedad: DatabaseName apunta al nombre del db Oracle definido en BDE Administrator.

Con Delphi 5 todo funciona bien, pero con Delphi 2007 recibo los siguientes errores:

Cuando ejecuto la aplicación:
„Project Simulate.exe raised exception class EDBEngineError with message ‚ Your Application is not enabled for use with this driver. Alias: prk’. “

Cuando, en design mode, trato de acceder a la propiedad DatabaseName de un TStoredProc el error es:
An error occurred while attempting to initialize the Borland Database Engine(error $210D)

(Si configuro BDE Administrator para acceder a Oracle con ODBC el error es el mismo pero el código cambia a $2A06)

Tiene alguien alguna idea para resolver este problema?

Muchas gracias de antemano
Fernando

poliburro 06-09-2007 17:55:34

Ya que estas migrando, por que no contemplas utilizar ADO?, BDE es una tecnologia obsoleta.

Suerte

Fernando_dev 07-09-2007 16:18:14

Acceso con ADO a Oracle Stored procedures desde Delphi 2007
 
Gracias Poliburro,

No tengo experiencia con ADO pero me pregunto si seria factible la conversion sin tener que hacer el cambio en cada Stored Procedure / Formulario ya que el proyecto es bastante extenso.

Si alguien tiene una idea (o código disponible para acceder con ADO a Oracle Stored procedures desde Delphi 2007 ) les agradezco nuevamente de antemano

Fernando

rolandoj 08-09-2007 01:01:02

Algunas ideas adicionales
 
Hola,

En el caso del driver nativo BDE es probable que tenga alguna incompatibilidad con la versión de Oracle; pero en el caso del ODBC es un poco raro porque debería manejar un standard. Quizás sería bueno intentar con otro driver ODBC.

Paralelamente, te ocurre con todos los Stored Procedure ?. Pasa lo mismo si los invocas directamente vía el SQL Explorer ?.

Fernando_dev 18-09-2007 16:14:12

ADO parámetros para Oracle Stored Procedure
 
Gracias a todos por su ayuda pero parece que con Delphi 2007 no es facil acceder a un Stored Procedure Oracle, ni con BDE ni con ADO.

Para probar la conección con ADO he creado una aplicación muy sencilla. Al correr el código:
procedure TForm1.Button1Click(Sender: TObject);
begin
StpShowParking.Active := true;
end;

Hay un error que dice que hay incompatibilidad en el número o tipo de parámetros.

Luego de mucha busqueda en la Internet he encontrado una posible solución a este error y esta sería añadir a ConnectionString:

Extended Properties="PLSQLRSet=1"

pero luego de ejecutar el código el error es el mismo!!

Agradezco enormemente a alguien que pueda proporcionar alguna información para resolver este problema



Los controles TADOStoredProc y TADOConnection están definidos en Design view:
(Tanto la conección como el acceso a los diferentes Procedures del banco de datos estan correctos)

object ADOConn1: TADOConnection
Connected = True
ConnectionString =
'Provider=OraOLEDB.Oracle.1;Password=password;Persist Security Inf' +
'o=True;User ID=userid;Data Source=prk_server;Extended Properties="' +
'PLSQLRSet=1"'
Provider = 'OraOLEDB.Oracle.1'
Left = 16
Top = 8
end


object StpShowParking: TADOStoredProc
Connection = ADOConn1
ProcedureName = 'SHOW_PARKING'
Parameters = <
item
Name = 'CSR'
Attributes = [paNullable]
DataType = ftInterface
Direction = pdInputOutput
Value = Null
end>


El Stored Procedure de Oracle es:

CREATE OR REPLACE PROCEDURE "SHOW_PARKING" /
( csr IN OUT pck_int_cursors.csr_all)
AS
BEGIN
OPEN csr FOR SELECT parking.prk_id,
...

waly2k1 19-09-2007 11:00:10

Fijate como ejecutas el SP
 
Yo lo hice con SQL Server y no Oracle a traves de ADO
utilizando un comando, pero es lo mismo si ejecutas desde la conexion ADO
Supongamos q tu conexion se denomina Conx:

Conx.Execute( 'mySP ' + param1 + ', ' + param2 + ', ' + paramN );
Donde mySP es el nombre del Stored Procedure


Te copio un poco de codigo y perdon por el desorden, pero al editar no te muestran las etiquetas de codigo

with Data.adoCMD do
begin
CommandType := cmdStoredProc;
CommandText := 'dbo.SP_COMPRAS_INSERT';
Parameters.Clear;
Parameters.CreateParameter( '@Id_Compra' , ftLargeInt , pdOutput , 20, 0 );
Parameters.CreateParameter( '@Id_Proveedor' , ftLargeInt , pdInput , 20, StrToInt( txtProveedor.Text ) );
Parameters.CreateParameter( '@Tipo_Comprobante' , ftString , pdInput , 3 , cbTipoDOC.Text );
Parameters.CreateParameter( '@Nro_Comprobante' , ftString , pdInput , 13, txtComprobante.Text );
Parameters.CreateParameter( '@FechaRecepcion' , ftDate , pdInput , 10, Date );
Parameters.CreateParameter( '@MontoIVA' , ftCurrency , pdInput , 20, StrToFloat( txtIVAGral.Text ) );
Execute;
end;

adoCMD es un adocommand q esta en un datamodule

Saludos y Exitos


La franja horaria es GMT +2. Ahora son las 11:13:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi