PDA

Ver la Versión Completa : los query?


Giniromero
12-06-2003, 10:16:29
Hola,

sigo actualizando mi aplicación de paradox a interbase, estoy intentado usar menos tablas y más querys pero, por lo que veo, me dice el programa que en las query no puedo guardar registros nuevos.

El caso es que yo necesito, por un lado visualizar en un grid varios campos, de una tabla de datos económicos, pero que solo me figuren los que están relaccionados con el usuario que esté en este momento activo en la tabla de socios, esto lo filtra por el numero de socio, que es el campo numalu.

En esa ventana tengo que poder insertar nuevos registros económicos para este mismo usuario, pero me dice, si uso un query que esta en modo solo lectura.

Esto me está obligando a que, si quiero guardar el cambio, tengo que tener una tabla para la información económica, donde guardar datos, y el grid unido con el query, pero esto me parece absurso, supongo que para esto, mejor tengo todo directamente en tIBtables .

¿Alguien me puede orientar en este tema?. Porque me aconsejaron que no usara, en la medida de lo posible, tIBtables para el interbase, pero entonces ¿por que lo sustituyo?

Me han comentado que les eche un vistazo a los TIBDAtaset, y los TibSQL, pero la verdad, no se por donde cogerlos.

Ayuda!! help!!

gracias

Virginia:confused:

linsua
12-06-2003, 13:55:04
Hola Virginia,

Este es un cambio bastante costoso, deberás leer mucho y no creo que puedas llegar a algo concreto y elegante sin tener bien claro cuales son los cambios y diferencias entre una base de escritorio (Paradox - dBase) y una base relacional (Interbase – SQL Server)

Como Biografía te aconsejo “La Cara Oculta de DELPHI 6”

Como Orientación básica:
Si trabajas con BDE puedes hacer altas y bajas con TQuery si activas la propiedad RequesLive, pero si superas los 20.000 Registros vas a tener problemas muy serios de velocidad, también puedes hacer altas y bajas combinando TQuery y TUpdateSQL esto funciona mejor, pero no es lo optimo.

Si trabajas con componentes orientados a bases relacionados (IBExpress, ADO, DBExpress) te aconsejo que entres en el mundo de midas, para trabajar con DataSet, Provider y ClientDataSet

Para despedirme, sí, debes dejar las tablas en las paletas de componentes sin tocar :)

Un saludo

Giniromero
12-06-2003, 14:26:58
Hola,

lo primero gracias por contestarme.

En mi caso Si superaran ese numero de registros.
Pero, me estás aconsejando Tquerys o los TIBQuery? por que entiendo, que si lo que voy a usar es interbase desde ahora, no tiene, bajo me punto de vista, mucho sentido, usar los componentes que usaba para paradox.

>TQuery y TUpdateSQL esto funciona mejor, pero no es lo optimo.

¿por que no es lo optimo?¿como se usaría?

>Si trabajas con componentes orientados a bases relacionados
>(IBExpress, ADO, DBExpress) te aconsejo que entres en el mundo
>de midas, para trabajar con DataSet, Provider y ClientDataSet

¿ME puedes explicar a que te refieres con esto?, no te entiendo, supongo que soy más novata de lo que creía.


>Para despedirme, sí, debes dejar las tablas en las paletas de
>componentes sin tocar

¿ni siquiera para insertar registros nuevos? bien, ¿y que utilizo en su lugar?

Muchas gracias por todo

Virginia

PD (disculpad que este mismo mensaje lo haya puesto como hilo nuevo, me he confundido de botón :(

linsua
12-06-2003, 15:53:08
No te estoy aconsejando ni TQuery, ni TIBQuery, solo eran comentarios y forma de utilizar uno u otro componente.
Es verdad que no tiene sentido seguir utilizando los mismo componentes que con Paradox, pero para esto te tienes que olvidar de la Paleta de Componentes BDE y decidirte por alguna de las tantas maneras de conectase a una base de datos Cliente-Servidor (IBExpress, DBExpress, ADO, OBDC), una vez decidido, empezar a estudiar el como conectarme, creo que estas en un punto, que no tienes claro que componente utilizar, y eso es porque no te decides por uno en concreto, me explico?
Bien ahora te voy a contar mi experiencia, que de hecho no creo que sea la mejor, pero a mi me funciona perfectamente:
Tengo una Base de Datos Interbase 6.0 de 125MB, con 97 Tablas, la tabla mas grande tiene 104.000 registros y la cantidad de usuarios varia entre los 50 y 60.
Tengo implementado un servidor de datos (W 2000 Server)
En el mismo servidor tengo una aplicación de capa intermedia, se puede distribuir pero no entremos en detalles, que me gestiona todas las peticiones de los equipos clientes, esta capa intermedia, realiza una conexión a la base de datos con el Componente TSQLConexion (DBExpress) y los DataSet son TSQLQuery (DBExpress)
La aplicación Cliente se conecta a esta capa intermedia con un TSocketConection y los datos los recupero con TClientDataSet.
Esto es una orientación solamente, creo que tu problema es bastante amplio y no te puedo explicar con detalles todo el funcionamiento de cada componente.
Ahora te respondo las preguntas
¿por que no es lo optimo? Porque hay metodos mejores (Conexiones C-S)
¿como se usaría? TQuery tiene una propiedad UpdateObject que es un puntero a TUpdataSQL, luego debes hacer doble clic sobre este componente (TUpdateSQL) y configurar los scrips para insert, update y delete

¿ME puedes explicar a que te refieres con esto?, no te entiendo, supongo que soy más novata de lo que creía.
Con esto quiero decir que un sistema de bases de datos Cliente-Servidor se debe tratar como tal y no es buena idea utilizar herramientas que se diseñaron en un principio para Bases de escritorio ej: BDE

¿ni siquiera para insertar registros nuevos? bien, ¿y que utilizo en su lugar?
No, usa TClientDataSet, con este componente puedes hacer consultas SQL y además actualizaciones (Insert, Edit, Post, cancel, etc)

Giniromero
12-06-2003, 16:55:03
Gracias de nuevo por tu ayuda, si no es mucho pedir, hay algo que no me queda claro.


>usa TClientDataSet, con este componente puedes hacer
>consultas SQL y además actualizaciones (Insert, Edit, Post,
>cancel, etc)

He estado echandole un vistazo a un IBClientDataSet, pero no se como puedo usarlo, ¿podrías orientarme algo en como funciona?. ¿como funciona eso de las actualizaciones (Insert, Edit, Post, cancel, etc) ?

Muchas gracias por la ayuda

Virginia