Ir al contenido


Foto

Conexion Informix


  • Por favor identifícate para responder
12 respuestas en este tema

#1 Ace-Cathedral

Ace-Cathedral

    Member

  • Miembros
  • PipPip
  • 28 mensajes
  • LocationGuadalajara, Jalisco

Escrito 07 mayo 2009 - 02:42

Buen dia...

Aunque he visto que no se maneja mucho el informix por aqui, quisiera preguntar si alguien sabe si puedo conectar Delphi 2009 con Informix usando ADO en una aplicacion de varias capas...

Y si es mas rapido que DBExpress...

Saludos...
  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 07 mayo 2009 - 03:02

Tengo entendido que Informix te proporciona un proveedor nativo OleDb lo que de ser cierto lo harí­a más rápido que DbExpress.

Saludos.
  • 0

#3 Ace-Cathedral

Ace-Cathedral

    Member

  • Miembros
  • PipPip
  • 28 mensajes
  • LocationGuadalajara, Jalisco

Escrito 07 mayo 2009 - 03:08

OK... Gracias por la respuesta...

De hecho si hay un proveedor OLE DB... Intentare hacer unas pruebas para checarlo...

Saludos...
  • 0

#4 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 07 mayo 2009 - 03:12

Suerte y ojalá puedas comentar los resultados de las pruebas.

Suerte
  • 0

#5 Ace-Cathedral

Ace-Cathedral

    Member

  • Miembros
  • PipPip
  • 28 mensajes
  • LocationGuadalajara, Jalisco

Escrito 07 mayo 2009 - 03:16

Asi lo hare... Saludos
  • 0

#6 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 08 mayo 2009 - 08:48

y en que quedo ???

si se puede o no se puede  ??

navegas o vuelas por la base de datos ??
  • 0

#7 Ace-Cathedral

Ace-Cathedral

    Member

  • Miembros
  • PipPip
  • 28 mensajes
  • LocationGuadalajara, Jalisco

Escrito 08 mayo 2009 - 12:05

Buen dia...

He logrado hacer la conexion usando ADO, pero quiero manejar 3 capas usando Datasnap de Delphi 2009...

Repito, la conexion si se realiza en la capa intermedia... Pero en la capa cliente no puedo visualizar los datos de una consulta... Supongo que quiere decir que no se puede usar ADO con Datasnap???...

Use DBExpress y funciona a la perfeccion...

Sera entonces que no son compatibles ADO y Datasnap... Seguire intentando...

Saludos...
  • 0

#8 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 08 mayo 2009 - 03:17

el cliente al realizar la consulta usando ADO e Informix te muestra algún error?
  • 0

#9 Ace-Cathedral

Ace-Cathedral

    Member

  • Miembros
  • PipPip
  • 28 mensajes
  • LocationGuadalajara, Jalisco

Escrito 08 mayo 2009 - 03:30

En efecto, en el servidor de aplicaciones puedo realizar bien la conexion y la consulta al activar el ADODataset funciona....



sql
  1. SELECT * FROM Tabla



Pero a la hora de ejecutar la consulta usando un ClientDataset desde el cliente me marca el siguiente error: Remote error: Unexpected metadata type...

A que se refiere ese error?
  • 0

#10 Ace-Cathedral

Ace-Cathedral

    Member

  • Miembros
  • PipPip
  • 28 mensajes
  • LocationGuadalajara, Jalisco

Escrito 09 mayo 2009 - 11:16

Siguiendo con este tema...

El escenario es el siguiente:

Tengo esta funcion de informix:



sql
  1. CREATE PROCEDURE informix.capturarvalor ( entrada VARCHAR(30) )
  2. RETURNS INTEGER
  3. DEFINE salida INTEGER;
  4. SELECT valorcampo INTO salida FROM tabla
  5. WHERE nombre = entrada;
  6. RETURN salida;
  7. END PROCEDURE



Como capturo el valor de la variable "salida" desde delphi?

Gracias de antemano y saludos...
  • 0

#11 Ace-Cathedral

Ace-Cathedral

    Member

  • Miembros
  • PipPip
  • 28 mensajes
  • LocationGuadalajara, Jalisco

Escrito 22 mayo 2009 - 12:59

Buen dia...

Le estuve moviendo a este asunto de delphi con informix y ha costado un poco de trabajo...

Por si alguien esta interesado les digo como realizo las cosas en el sistema...

Las consultas las tengo en la capa intermedia y utilizo un TSQLDataSet...

Los procedimientos almacenados tambien los ejecuto desde un TSQLDataSet con la instruccion execute procedure nombre(parametros)... Esto porque no me funcionaron los TSQLStoredProc...

Entiendo por lo que he investigado que el funcionamiento depende mucho de la forma en que esta configurada la BDD... Pero en fin, hasta el momento asi es como me funciona...

Ahora la aplicacion que estoy haciendo de repente me sale el error "Remote error: Connection name in use"... Alguien sabe a que se refiere?... O que puedo hacer?...

Saludos...
  • 0

#12 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 22 mayo 2009 - 03:04

Siguiendo con este tema...

El escenario es el siguiente:

Tengo esta funcion de informix:



sql
  1. CREATE PROCEDURE informix.capturarvalor ( entrada VARCHAR(30) )
  2. RETURNS INTEGER
  3. DEFINE salida INTEGER;
  4. SELECT valorcampo INTO salida FROM tabla
  5. WHERE nombre = entrada;
  6. RETURN salida;
  7. END PROCEDURE



Como capturo el valor de la variable "salida" desde delphi?

Gracias de antemano y saludos...


Aunque no se nada de Informix te voy a comentar como  hago algo parecido  con firebird:
Primero que todo no olvides poner la siguiente directiva de compilación  en el  módulo del servidor para que los métodos públicos puedan ser vistos en el lado cliente:



delphi
  1. type
  2.   {$MethodInfo ON}
  3.   TMiModulo = class(TDSServerModule)



luego declaro la función en public



delphi
  1.   public
  2.   function CapturarValor(Entrada: string):Integer;



La implementacion (con un StoreProcedure de dbExpress que apunta al procedimiento 'Informix.CapturarValor', que automaticamente deberí­a cargar los parámetros de la DB):


delphi
  1. function CapturarValor(Entrada: string):Integer;
  2. begin
  3.   MiStoreProcdure.ParamByName('Entrada').AsString := Entrada;
  4.   MiStoreProcedure.ExecProc;
  5.   Result := MiStoreProcedure.ParamByName('Salida').AsInteger;
  6. end;



Ahora en el lado cliente llevamos desde dbExpress un TSQLServerMethod que apunte en su propiedad ServerMethodName a: TMiModulo.CapturarValor, en GetMetadata := False y obviamente SQLConecction a la respectiva conexión.

Para ejecutarlo en el lado cliente hacemos lo siguiente:



delphi
  1. function CapturarValorEnCliente(Entrada:String):Integer;
  2. begin
  3. MiTSqlServerMethod.Params[0].asString := Entrada;
  4. MiTSqlServerMethod.ExecuteMethod;
  5. Result := MiTSqlServerMethod.Params[1].asInteger;
  6. end;


Espero te sirva de algo.
Saludos.



  • 0

#13 Ace-Cathedral

Ace-Cathedral

    Member

  • Miembros
  • PipPip
  • 28 mensajes
  • LocationGuadalajara, Jalisco

Escrito 22 mayo 2009 - 03:39

Muchas gracias por la respuesta Wilson...

Tienes razon, de hecho asi lo hago con Firebird y funciona...

El problema con Informix es precisamente que el TSQLStoredProc no carga todos los parametros automaticamente... Es decir, si mi procedimiento almacenado tiene 3 parametros solo me carga el primero, los otros dos no los toma en cuenta... Entonces procedo a ponerselos manualmente, pero me marca error al ejecutarlo porque solo toma en cuenta el primer parametro...

Por eso mismo uso un TSQLDataSet como query y en su propiedad CommandText le pongo



sql
  1. EXECUTE PROCEDURE MiProcedimiento(:parametro1, :parametro2, :parametro3)



Asi si me carga los parametros y me funciona bien...

Es un poco raro, pero asi funciona...

Saludos...
  • 0




IP.Board spam blocked by CleanTalk.