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 29-09-2011
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
insertar y consultar una tabla desde datamodule

hola de nuevo.

Hay cosas que no entiendo todavia o me cuesta entender:

En primera, si tengo un datamodule y ahi asigno la base de datos, asigno las tablas a los querys y luego los activo porque no puedo hacer lo mismo desde otra unit si de otra unit si puedo consultar esas tablas, por que no me permite hacer:

module.datamodule1.zquery1.active:=true;

me dice que no encuentra la base de datos.

Pero si hago una consulta si me deja?

La otra cuestion es:

si inserto registros todo va bien pero, si posteriormente modifico alguno de ellos, no puedo volver a consultar porque me da error.

Ya probé, como digo a volver a activar el query pero no funciona.

Se que son cosas elementales pero es me atraganta.

El programa que estoy haciendo si inserta registros y los cambia pero las consultas nuevas no.

Una manita plis porque no entiendo por mas vueltas que doy.

gracias
Responder Con Cita
  #2  
Antiguo 29-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No entiendo esto:
Código Delphi [-]
module.datamodule1.zquery1.active:=true;

Se supone que el datamodule es como un form mas, solamente que no es visible.
No se deberia llamar simplemente asi ?:
Código Delphi [-]
datamodule1.zquery1.active:=true;

No entiendo que es module.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 29-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por anubis Ver Mensaje
no puedo volver a consultar porque me da error.
¿Y el error saca algún mensaje?
Responder Con Cita
  #4  
Antiguo 29-09-2011
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
tienes toda la razon caral con

Código Delphi [-]
datamodule1.query1.active
es mas que suficiente para que haga el enlace.

Voy por partes entonces.

en el datamodule asigno la base de datos y conecto los query y los activo, hasta ahi me funciona todo bien.

Hago consultas de unas tablas e inserto en otras, tambien todo bien.

El gran problema surge cuando en una tabla hago:

Código Delphi [-]
datamodule1.zquery1.sql.Clear;
datamodule1.ZQuery1.SQL.Text:='update tcuentas set  cuenta=:cuenta, nombrecuenta=:nombrecuenta, numcheque=:numcheque where clave=:clave';
datamodule1.zquery1.parambyname('clave').asinteger:=clavecuenta;
datamodule1.zquery1.ParamByName('cuenta').asstring:=ncuenta.Caption;
datamodule1.zquery1.parambyname('nombrecuenta').asstring:=label4.Caption;
datamodule1.zquery1.parambyname('numcheque').asinteger:=numcheque;
datamodule1.zquery1.ExecSQL;

me hace perfecta la modificacion, pero quiero volver a consultar esa tabla.
Como es logico me dice que no se puede porque estas consultando eun dataset inactivo, asi que lo intento activar con:

Código Delphi [-]
datamodule1.query1.active:=true;

ahi me dice que no encuentra la tabla, asi que se la asigno de nuevo con

Código Delphi [-]
datamodule1.zquery1.sql.text:='select * from tcuenta';

y ahi ya me dice que no la base de datos no esta.

Digo yo, hasta donde yo creia, con los insert no hay que hacer practicamente nada, pero con los update hay que reactivar la tabla no?.

gracias por contestar

editado: por cierto, el datamodule se autocrea antes de crear el form.

Última edición por anubis fecha: 29-09-2011 a las 03:22:28.
Responder Con Cita
  #5  
Antiguo 29-09-2011
Avatar de alej.villa
alej.villa alej.villa is offline
Miembro
NULL
 
Registrado: may 2011
Ubicación: Caracas, Venezuela
Posts: 76
Poder: 13
alej.villa Va por buen camino
Cita:
Empezado por anubis Ver Mensaje
El gran problema surge cuando en una tabla hago:
Código Delphi [-]datamodule1.zquery1.sql.Clear; datamodule1.ZQuery1.SQL.Text:='update tcuentas set cuenta=:cuenta, nombrecuenta=:nombrecuenta, numcheque=:numcheque where clave=:clave'; datamodule1.zquery1.parambyname('clave').asinteger:=clavecuenta; datamodule1.zquery1.ParamByName('cuenta').asstring:=ncuenta.Caption; datamodule1.zquery1.parambyname('nombrecuenta').asstring:=label4.Caption; datamodule1.zquery1.parambyname('numcheque').asinteger:=numcheque; datamodule1.zquery1.ExecSQL;
[FONT=verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif]
porque en vez de hacerlo por sql la modificacion no la haces de este modo

[/font]
Código Delphi [-]
datamodule1.tu_tabla.edit
datamodule1.tu_tabla.fieldbyname('campos').asstring:=clavecuenta;
datamodule1.tu_tabla.post

de esa forma no utilizarias el query y puedes hacer tu consulta sin problemas

PD: cuando me refiero a tu tabla no es al zquery1
sino a la tabla que tienes conectada directamente con la base de datos
Responder Con Cita
  #6  
Antiguo 29-09-2011
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Gracias por la respuesta.

Puedo probar con la tabla pero sigue sin servir un query?

El problema es reactivar luego el query o la tabla que no me deja puesto que esta enlazado con el datamodule.
Responder Con Cita
  #7  
Antiguo 29-09-2011
Avatar de alej.villa
alej.villa alej.villa is offline
Miembro
NULL
 
Registrado: may 2011
Ubicación: Caracas, Venezuela
Posts: 76
Poder: 13
alej.villa Va por buen camino
porque no pruebas haciendo esto

Código Delphi [-]
dm.query.close;
dm.query.sql.clear;
dm.query.sql.add('SELECT * FROM tu tabla');
dm.query.open;
Responder Con Cita
  #8  
Antiguo 29-09-2011
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
si, tambien lo he probado, al poner open me sigue diciendo que el dataset no esta activo.
Responder Con Cita
  #9  
Antiguo 29-09-2011
Avatar de alej.villa
alej.villa alej.villa is offline
Miembro
NULL
 
Registrado: may 2011
Ubicación: Caracas, Venezuela
Posts: 76
Poder: 13
alej.villa Va por buen camino
tienes algún código en la parte de propiedades del sql del query?

si es asi creo que lo mejor es dejarlo en blanco y cada vez que necesites consultar algo le indiques lo que deseas consultar
Responder Con Cita
  #10  
Antiguo 29-09-2011
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
gracias de nuevo

con el table1 como dices si funciona lo unico que no actualiza el dato hasta que cierro el programa yl o vuelvo a abrir, ya probe a desactivar la tabla, cerrarla abrirla, refrescarla, etc... el query no lo refresca porque no lo permite.

El principal problema qu etenia con el query es que desde el datamodule si me deja activar los query pero desde el programa principal no, y esto es un problemita.

edito:

con el zquery.refresh si actualiza pero creo que no es forma o si de hacer las cosas?.

Ya me lie.

lo que quiero saber es porque el zquery no me funciona con el active.

Última edición por anubis fecha: 29-09-2011 a las 04:34:21.
Responder Con Cita
  #11  
Antiguo 29-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Creas el datamodule en tiempo de ejecución cuando creas el form.
Lo destruyes en algún momento?, en que evento se crea ?.
El query esta en el datamodule por ende este se crea de igual forma, no es asi?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #12  
Antiguo 29-09-2011
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Si, el datamodule lo creo en tiempo de ejecucion cuando se abre la aplicacion, pero antes de crear el form.
No lo destruyo y si, el query esta en el datamodule asi que se crea a la vez.

Esta en el evento oncreate del datamodule.

Si algo estoy haciendo mal ahi cuentame porque por mas vueltas qu ele doy no doy con ello.

ah, la unidad del datamodule esta en el uses del interface de la unidad principal, no en la implementacion (que tambien lo puse ahi).

Me darias un soplo de aire si me haces ver la solucion.

gracias mil
Responder Con Cita
  #13  
Antiguo 29-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Pregunto solo por curiosidad:
Por que crear el datamodule y lo demas en ejecucion y no en diseño?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #14  
Antiguo 29-09-2011
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Perdon, no se crean en ejecución sino en diseño, automaticamente.

No se si es a lo que te refieres.

De todas formas, sigo sin entender por que no se puede acceder al query desde otra unit.

saludos
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consultar tabla desde DBCOMBOBOX ZeroHot Conexión con bases de datos 2 23-02-2010 17:43:54
Insertar un dato a una tabla desde fastreport 4 IVAND Impresión 10 29-12-2008 15:14:38
Consultar datos de una tabla en oracle desde prostgres jorgus PostgreSQL 1 10-06-2008 14:19:38
insertar desde una tabla externa sidneyb SQL 3 03-12-2007 13:43:37
Consultar otra tabla desde un Dbgrdid y traerse los datos al Dbgrid alejandroalba Conexión con bases de datos 2 08-05-2006 18:30:42


La franja horaria es GMT +2. Ahora son las 20:15:46.


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