Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-05-2004
Avatar de wonder boy
wonder boy wonder boy is offline
Miembro
 
Registrado: mar 2004
Ubicación: Argentina
Posts: 50
Poder: 21
wonder boy Va por buen camino
dificultades con DBX

Hola, tengo un problema con el sqldataset, pasa que necesito ver datos de otra tabla con una sentencia SQL, uso DB7 y IB6

el sqldataset tiene el siguiente SQL

SELECT
TABLA1.*,
(SELECT
SUM(TABLA2)
FROM TABLA2) AS CAMPO_EXTRA
FROM TABLA1

el sqldataset esta dentro de un modulo de datos, lo llamo desde un formulario con un provider y un clientdataset, resulta que cuando voy a hacer un alta (insert), me dice que los campos que quiero guardar no existen, y ahi me di cuenta de que no hace el insert sobre la tabla1 sino sobre la tabla2, esto lo corrobore viendo el sqlmonitor, que permite ver todas las transacciones hechas por la conexion DBX. Quisiera saber de que manera lo soluciono, desde ya muchas gracias!!!
Responder Con Cita
  #2  
Antiguo 24-05-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Cuando hay subconsultas por en medio, DBX tiende a liarse sobre el nombre de la tabla donde aplicar los cambios. (Yo creo que se coge el primer nombre de tabla que encuentra).

Simplemente, indica la table base, en el evento OnGetTableName del sqlDataset :

TableName := 'TABLA1';

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 24-05-2004
Avatar de wonder boy
wonder boy wonder boy is offline
Miembro
 
Registrado: mar 2004
Ubicación: Argentina
Posts: 50
Poder: 21
wonder boy Va por buen camino
gracias por tu ayuda, pero..., siempre hay uno, no encontre el evento OnGetTableName en el SQLDATASET, sino en el provider, hago la aclaracion por las dudas que alguien mas lea esto...,

muchas gracias!!!
Responder Con Cita
  #4  
Antiguo 27-05-2004
Avatar de wonder boy
wonder boy wonder boy is offline
Miembro
 
Registrado: mar 2004
Ubicación: Argentina
Posts: 50
Poder: 21
wonder boy Va por buen camino
Hola, bueno, ahora anda todo barabaro, pero, "siempre hay uno", me esta faltando que me actualice el campo que se calcula en la sentencia SQL del dataset, resulta que si inserto un registro, lo hace bien, pero tengo que salir del formulario y volver a entrar para que actualice, quiero saber si existe la posibilidad de actualizar el registro pero sin salir o hacer close y open. Ya he probado con refresh, refreshrecord y updaterecord en el clientdataset y no ha pasado nada.


pd: si inserto un registro y luego inmediatamente inserto otro, me actualiza el primero y asi sucesivamente

desde ya muchas gracias!!!

Última edición por wonder boy fecha: 27-05-2004 a las 01:23:14.
Responder Con Cita
  #5  
Antiguo 27-05-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Puedes hacer un Refresh sobre el ClientDataset, (incluso puedes probar el RefreshRecord, que debería ejecutarse más rápido). Lo tienes que llamar después del ApplyUpdates (cuando los datos ya han sido pasados a la base de datos).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #6  
Antiguo 27-05-2004
Avatar de wonder boy
wonder boy wonder boy is offline
Miembro
 
Registrado: mar 2004
Ubicación: Argentina
Posts: 50
Poder: 21
wonder boy Va por buen camino
Hola

En realidad, yo estoy haciendo un refresh despues de el aplyupdates(0), o sea que no me anda tu sugerencia, aunque es valida para otras cosas, no lo es para actualizar estos campos calculados en el SQLDATASET y el CLIENTDATASET.

si pueden ayudarme me sera de mucha ayuda, gracias miles
Responder Con Cita
  #7  
Antiguo 27-05-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Cita:
Empezado por wonder boy
En realidad, yo estoy haciendo un refresh despues de el aplyupdates(0), o sea que no me anda tu sugerencia, aunque es valida para otras cosas, no lo es para actualizar estos campos calculados en el SQLDATASET y el CLIENTDATASET.
Entonces tiene que ser que la Base de Datos, en la tabla TABLA2, no tiene aún los registros relacionados con el registro actual de TABLA1.

Si añades los registros de TABLA2, mediante otro Clientdataset, deberás esperar a hacer el Refresh, a que hayas hecho el ApplyUpdates también en el segundo ClientDataset.

No me he explicado demasiado bien, pero espero que se entienda .

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #8  
Antiguo 27-05-2004
Avatar de wonder boy
wonder boy wonder boy is offline
Miembro
 
Registrado: mar 2004
Ubicación: Argentina
Posts: 50
Poder: 21
wonder boy Va por buen camino
Hola,

no, es probable que yo no me haya explicado bien, tengo un solo sqldataset en el modulo de datos, es el que tiene el SQL de dos tablas (ver mensajes anteriores), y despues un provider y un clientdataset en un formulario aparte, los cuales se activan cuando se crea el formulario. Yo hago, como decia antes, un refresh despues del applyupdates(0), ademas, agrego que, tengo esto como norma, pues asi me aseguro de poder "ver" las claves primarias que fueron generadas por un trigger en la DB (IB6 por las dudas). Como agravante, debo indicar que si hago las cosas tal cual las estoy haciendo, y ademas agrego un boton que con un click haga un refresh, este anda!!, cosa que me pone aun mas los pelos de punta, asi que realmente no entiendo que le pasa a esto, pero espero lo podamos resolver, desde ya muchisimas gracias por lo dado y por lo que venga!!!
Responder Con Cita
  #9  
Antiguo 28-05-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Creo que debe ser lo que te comentaba antes, que estás lanzando la consulta cuando los otros datos aún no han sido pasados a la base de datos.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 08:09:37.


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
Copyright 1996-2007 Club Delphi