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)
-   -   Ayuda por favor: TZQuery + TClientDataSet = Error. (https://www.clubdelphi.com/foros/showthread.php?t=60152)

juanblack 22-09-2008 19:54:08

Ayuda por favor: TZQuery + TClientDataSet = Error.
 
Saludos de nuevo amigos del foro.

Aquí de nuevo yo con un gran problema:
Sucede que queriendo realizar una prueba de transacciones muy simple manejando esta vez componentes zeos (TZQuery) y componentes midas (TClientDataSet) me tope con el espantoso error -901. :confused: :eek: :(

Me explico mejor:
Como antecedente estoy usando Firebird 2.1 como base de datos, Delphi 5, Componentes Zeos ver. 6.6.1 beta (diganme si es o no una versión estable por favor). Todo ello bajo el SO windows vista.

La tabla es bien sencilla:

Código SQL [-]
CREATE TABLE MOVIMIENTOS_MASTER (
    ID_MOVI           INTEGER NOT NULL,
    AREA_CLAVE        INTEGER NOT NULL,
    FECHA_MOVIMIENTO  DATE NOT NULL
);


En una forma nueva agrego los siguientes componentes:
Código Delphi [-]
  object MiZConnect: TZConnection
    Protocol = 'firebird-2.0'
    HostName = 'localhost'
    Database = 'PRUEBA01.FDB'
    User = 'sysdba'
    Password = 'masterkey'
    AutoCommit = False
    TransactIsolationLevel = tiReadCommitted
    Connected = True
  end
  object MiZQuery: TZQuery
    Connection = MiZConnect
    SQL.Strings = ('select id_movi, area_clave, fecha_movimiento'
      'from movimientos_master')
    Params = <>
  end
  object MiDSProvider: TDataSetProvider
    DataSet = MiZQuery
    Constraints = False
    Options = [poIncFieldProps, poCascadeDeletes, poCascadeUpdates, poAllowMultiRecordUpdates, poPropogateChanges]
    UpdateMode = upWhereKeyOnly
  end
  object MiCDS: TClientDataSet
    Active = True
    Aggregates = <>
    Params = <>
    ProviderName = 'MiDSProvider'
    object MiCDSID_MOVI: TIntegerField
      FieldName = 'ID_MOVI'
      Required = True
    end
    object MiCDSAREA_CLAVE: TIntegerField
      FieldName = 'AREA_CLAVE'
      Required = True
    end
    object MiCDSFECHA_MOVIMIENTO: TDateField
      FieldName = 'FECHA_MOVIMIENTO'
      Required = True
    end
  end
  object MiDS: TDataSource
    DataSet = MiCDS
  end
  object DBNavigator1: TDBNavigator
    DataSource = MiDS
    TabOrder = 0
  end
  object DBEdit1: TDBEdit
    DataField = 'ID_MOVI'
    DataSource = MiDS
    TabOrder = 1
  end

Como veran no es gran cosa, pues para empezar solo quiero navegar por la tabla con mi TDBNavigator y todo esto solo para probar este -para mi- nuevo tipo de interacción con mi base de datos. Esto lo tome de unos ejemplos que el mismo Delphi ya trae al instalarlo con la diferencia de que esos son para tablas de Interbase.

Pues bueno, todo hasta ahi bien, pero al ejecutar la aplicación me lanza el siguente error -cosa curiosa- AL CERRAR la aplicación (funciona bien aparente mente y todo pero al cerrar la forma surge el error):
Project prueba.exe raised exception class EZSQLException with message 'SQL Error: Invalid statement handle. ErrorCode: -901. Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements '.

Ya intente cambiar el componente TZQuery por un TZTable y me da el mismo resultado, he cambiado las propiedades de los componentes y nada, sigo con el mismo error. ¿Que es lo que estoy haciendo mal? ¿Es asi como deben configurarse los componentes? Una mano aquí por favor.

Muchas gracias de antemano.

AzidRain 23-09-2008 17:16:43

Te falta ponernos el codigo, solo pusiste la definición de la forma.

juanblack 23-09-2008 20:46:13

Resuelto.

Muchas gracias por responder Azid, y dejame te cuento que no hay código alguno en esta aplicación, pues solo estoy configurando los componentes para poder ejecutarla asi tal cual, es por eso que solo pongo la descripción de los componentes.

Pero mira que cosa, ya encontre el problema y al parecer se trataba de un DataModule que estaba tambien dentro del proyecto y que contenia algunos componentes Zeos que hacian referencia a la misma tabla con la que estaba probando. Aun cuando no lo estaba auto-creando al ejecutar la aplicación, de alguna forma esta estaba haciendo "ruido" a la forma principal donde llevaba a cabo la prueba. Solo la elimine del proyecto y listo, todo bien.

Pues bueno, ya pude hechar a andar una tabla usando estos componentes, ahora el gran reto: ¿como conecto mis componentes para poder trabajar con un sistema maestro-detalle? y es ahi donde estoy más confundido todavia.

Es simple, pues tengo dos tablas: MOVIMIENTOS_MASTER & MOVIMIENTOS_DETALLE en donde por cada registro de la primera tabla existen 'n' registros hijos en la segunda tabla. Lo que quiero es ver en componentes DBEdit, LookupcomboBox, etc. los datos de la tabla maestra y en un DBGrid sus registros hijos, ambos controlados con sus respectivos DBNavigator. Puede que sea muy obvio para algunos, pero no para mi. ¿Como lo hago?

Gracias mil de nuevo.


La franja horaria es GMT +2. Ahora son las 01:08:40.

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