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 06-12-2012
kornamenta kornamenta is offline
Miembro
NULL
 
Registrado: nov 2012
Posts: 16
Poder: 0
kornamenta Va por buen camino
Post Problema para eliminar y editar registros con query de por medio

Hola a todos necesito una pequeña ayuda para completar un simple programa que estoy realizando a pedido. Primero les explicaré brevemente en que consiste el programa, será utilizado para llevar registro de las modificaciones que se le realizaran a automóviles periódicamente. El usuario ingresará primeramente datos básicos de un automóvil en este caso solo Patente, Marca y Modelo [Tabla maestro "Ingresos"]. y luego al momento de realizar modificaciones al automóvil seran registradas en otra tabla donde deberá ingresar Patente (correspondiente a la tabla Ingresos), Fecha y Modificación [Tabla detalle "Modificaciones"]. Que por supuesto con su relación maestro detalle la patente seleccionada mostrara las modificaciones solo relacionadas a la misma.

TABLA MAESTRO Ingresos.db
--------------------------------
ID | PATENTE | MARCA | MODELO
1 asd345 Fiat 600
2 qwe123 Renault 12

(Aclaro que en esta tabla tengo la columna clave ID oculta con Key)


TABLA DETALLE Modificaciones.db
----------------------------------
ID | PATENTE | FECHA | MODIFICACIÓN
1 qwe123 01/04/2012 Cambio de aceite
2 qwe123 06/06/2012 Chapa y pintura
3 qwe123 08/06/2012 Cambio de neumáticos
4 asd345 21/04/2012 Testeo de frenos

(Aquí tambien se encuentran ocultos el campo clave ID y el campo Patente que es por el cual ambas tablas se conectan)

La conexión me funciona perfectamente, tengo un Table1 (tabla maestro) conectado a un datasource que a su vez esta conectado a un dbgrid. Por otro lado tengo un Table2 (tabla detalle)conectado a un datasource, este datasource esta conectado a un query que lo utilizo para ordenar las modificaciones por fecha mediante sql. Este query esta conectado a un segundo dbgrid mediante otro datasource.


Lo que me falta terminar y que a pesar de verme todos los temas existentes y ninguno que me solucione mi caso es para borrar registros(el problema solo esta en la tabla detalle que no me borra el seleccionado en el grid/query sino el primero del table2). Y por otro lado me gustaria poder realizar modificaciones a los registros por si luego se ingresar hay alguna palabra mal escrita u algo similar.

Estas dos acciones se me complican ya que tengo de por medio un query.

Uso Paradox 7

Les agradecería si pudieran ayudarme a esto que me falta para terminar el proyecto. Perdonen por hacerlo extenso quería dejar todo bien claro desde el principio xD
Responder Con Cita
  #2  
Antiguo 07-12-2012
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 el problema.
Da la impresion de que estas tratando de hacer alguna modificacion a la tabla detalle por medio de un dbgrid que esta ligado a otro lado.
Si quieres coloca el programa completo en algun sitio y lo bajo para solucionarte el problema.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 07-12-2012
kornamenta kornamenta is offline
Miembro
NULL
 
Registrado: nov 2012
Posts: 16
Poder: 0
kornamenta Va por buen camino
Hola Caral, gracias por responder. Mira me gustaría poder realizarlo para saber en que me equivoco pero de todas formas te paso el programa para que le des un vistazo

Te dejo el link por privado ya que no se me permite colocar enlaces
Responder Con Cita
  #4  
Antiguo 07-12-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Lo revisare mañana sábado.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 07-12-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por kornamenta Ver Mensaje
...
Te dejo el link por privado ya que no se me permite colocar enlaces
Hola.

Podes publicar el enlace al sitio con algún espacio en medio. Por ejemplo: w ww.google.com

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 07-12-2012
kornamenta kornamenta is offline
Miembro
NULL
 
Registrado: nov 2012
Posts: 16
Poder: 0
kornamenta Va por buen camino
Ah cierto! bueno entonces lo dejo por aqui a ver si alguien mas también puede darme una mano.

ww w.mediafire.com/?s8w1kfriwace9z0



Gracias
Responder Con Cita
  #7  
Antiguo 08-12-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Le hice algunas modificaciones que me parecieron logicas.
Primero, para que corra pon en cada table F:\Programa ya que yo lo modifique a C:\Programa.
El programa ahora tiene una pantalla por cada opcion que se necesite.
Cuando se quiere crear un nuevo automovil esta el boton de siempre, este creara los datos en la tabla ingresos.
Tienes dos dbgrid si le das click a cualquiera de ellos veras las opciones que tienes.
El de ingresos te dara dos opciones (modificar automovil y crear NUEVO trabajo o como le dices tu modificacion).
El de trabajos o modificaciones lo que hace es modificar los datos de esa modificacion, para que no se te complique use un dbnavigator en ese.
Si tienes dudas ya diras.
saludos
__________________
Siempre Novato

Última edición por Caral fecha: 08-12-2012 a las 15:56:35.
Responder Con Cita
  #8  
Antiguo 08-12-2012
kornamenta kornamenta is offline
Miembro
NULL
 
Registrado: nov 2012
Posts: 16
Poder: 0
kornamenta Va por buen camino
Genial Caral!! aunque me surgen algunos inconvenientes:

-Al eliminar patente no se borra, reaparece al refrescar tabla, aunque si se eliminan sus "Trabajos".
-Si al abrir ventana de edición de automóvil y se deja todo igual al clickear dos veces seguidas en aceptar salta un error.
-Si bien esta todo mas organizado no me ayuda en lo primordial del tema. Necesito que se pueda editar y eliminar registros de la tabla "Trabajos" la conectada al query, no solo la tabla maestro.


Muchisimas gracias por el tiempo que te has tomado para ayudarme y me gusta mucho como ha quedado si bien me gustaría hacerlo yo mismo y simplemente saber como se soluciona lo que digo. Aún así espero que puedas seguir ayudándome
Responder Con Cita
  #9  
Antiguo 08-12-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Ya modifique lo que necesitas.
Ahora tienes otra opcion en el dbgrid de automoviles, este borrara todo.
Tambien cambie el de modificaciones, puedes modificar o borrar.
Saludos
NOTA: El automovil que se borrara sera el que este en el Edit4, osea, en la búsqueda (revisa el codigo)
__________________
Siempre Novato

Última edición por Caral fecha: 03-02-2015 a las 18:52:44.
Responder Con Cita
  #10  
Antiguo 08-12-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Cuando vas a eliminar un automovil seria bueno preguntar si esta seguro o no:
En la opcion de eliminar datos del automovil en el dbgrid:

Código Delphi [-]
If MessageDlg('¿Está seguro que desea Eliminar La informacion ',mtConfirmation,[mbYes,mbNo],0) = mrYes then
  begin
  Query2.SQL.Text:= 'Delete from Ingresos where Patente = :dat';
  Query2.Params[0].Value:= Edit4.Text;
  Query2.ExecSQL;

  Query2.SQL.Text:= 'Delete from Modificaciones where Patente = :dat';
  Query2.Params[0].Value:= Edit4.Text;
  Query2.ExecSQL;

  showmessage('registros borrados');
  edit4.Clear;
  Button2.Click;
  end
  else
  // Lo que sea.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #11  
Antiguo 10-12-2012
kornamenta kornamenta is offline
Miembro
NULL
 
Registrado: nov 2012
Posts: 16
Poder: 0
kornamenta Va por buen camino
Hola Caral gracias por todo me gusta como quedo aunque quería saber si había alguna forma para poder eliminar registros en cascada sin la necesidad de hacerlo mediante búsqueda. Me gustaría que no fuera necesario realizar una búsqueda para poder eliminar ese registro
Responder Con Cita
  #12  
Antiguo 10-12-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Cual registro ?
Saludos
__________________
Siempre Novato
Responder Con Cita
  #13  
Antiguo 10-12-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por kornamenta Ver Mensaje
Hola Caral gracias por todo me gusta como quedo aunque quería saber si había alguna forma para poder eliminar registros en cascada sin la necesidad de hacerlo mediante búsqueda. Me gustaría que no fuera necesario realizar una búsqueda para poder eliminar ese registro
Hola.

Aunque en el Database Desktop figure la opción Update rule, según tengo entendido, Paradox no soporta la actualización en cascada.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #14  
Antiguo 10-12-2012
kornamenta kornamenta is offline
Miembro
NULL
 
Registrado: nov 2012
Posts: 16
Poder: 0
kornamenta Va por buen camino
Perdón ya lo solucione, hice que al hacer click en la celda automáticamente el Edit4 tome el valor de la patente.
Nuevamente gracias y veré si necesito realizarle alguna modificación loca xD, cualquier cosa te aviso.
Responder Con Cita
  #15  
Antiguo 10-12-2012
kornamenta kornamenta is offline
Miembro
NULL
 
Registrado: nov 2012
Posts: 16
Poder: 0
kornamenta Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Aunque en el Database Desktop figure la opción Update rule, según tengo entendido, Paradox no soporta la actualización en cascada.

Saludos.
Sisi Eficsa eso lo se pero yo me refería a la forma de hacerlo, yo utilizo un while para que elimine antes todos los registros relacionados y luego si pueda borrar el de la tabla maestro. El inconveniente que surgía era que de la forma en que me lo arregló Caral solo podía eliminar haciendo antes la búsqueda, pero ahora con directamente dar click a la celda de la patente y poner eliminar me lo hace directamente. Ya que el código se basaba en la patente registrada en el edit de búsqueda entonces hice que al hacer click sobre una patente este edit tomara su valor automáticamente. No se si me explique, no los culpo si no xD :P
Responder Con Cita
  #16  
Antiguo 10-12-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Si no se puede borrar en cascada entonces se borra chorrito a chorrito
Saludos
PD: podia poner la seleccion por medio del dbgrid, pero entonces que harias tu ?, es mejor que vayas aprendiendo poco a poco y no darte todo resuelto
__________________
Siempre Novato
Responder Con Cita
  #17  
Antiguo 10-12-2012
kornamenta kornamenta is offline
Miembro
NULL
 
Registrado: nov 2012
Posts: 16
Poder: 0
kornamenta Va por buen camino
Lo se Caral, eso quería decir unos post antes, que no quiero que me lo hagan, solo despejar mis dudas, pero igual te agradezco todo

Edit:
Acabo de descubrir un pequeño problema, pero ya prácticamente esta terminado. Al modificar un "Trabajo/Modificación" desde el Form4 se pone en modo edición, pero luego nose como hacer para que luego de modificar o no, se quite el modo edición. Intente poniendo un .Post en el botón eliminar pero al presionarlo luego de eliminar anteriormente un registro me salta un error, lo que me hace pensar que no es nada fiable colocar un .post allí.
Responder Con Cita
  #18  
Antiguo 10-12-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Tienes un boton de modificar y otro de eliminar.
Lo que puedes hacer facilmente es cambiar el caption de cualquiera de los botones una vez presionado, ejemplo>
Si presionas el boton modificar que el boton de eliminar quede el caption en Guardar, osea guardara los cambios siempre que se presione el boton, de lo contrario no.
Asi mismo con el boton de eliminar, quedara el bton de modificar el caption en guardar.
Luego con un simple (if caption = 'Guardar' then) tendras.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #19  
Antiguo 11-12-2012
kornamenta kornamenta is offline
Miembro
NULL
 
Registrado: nov 2012
Posts: 16
Poder: 0
kornamenta Va por buen camino
Gracias Caral ya me anda todo como quería, estuve arreglando unas cuantas cosas y yo muy feliz de la vida. Pero...ahora que decido probarlo bien, ingresando varios registros me doy cuenta que me permite ingresar solo 3 automóviles, cuando quiero ingresar un cuarto me salta un error u.u.

Edit: El error surge cuando ingreso una patente que contiene una parte por ejemplo numeral similar a una ya existente. Ejemplo: Si antes he ingresado una qwe098 cuando ingreso otra con parte de esa me tira el error: asd1209. Como se puede solucionar esto? Se que soy pesado pero si logro saber como se soluciona esto creo yo que estaría todo absolutamente terminado.

Última edición por kornamenta fecha: 11-12-2012 a las 04:18:53.
Responder Con Cita
  #20  
Antiguo 11-12-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No se la razon del error.
No me he fijado pero al hacer la busqueda no creo que se tenga ningun LIKE, pero si es asi quitalo y ponle un IGUAL (=).
Saludos
__________________
Siempre Novato
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
Eliminar registros de un query oscarac SQL 3 30-03-2011 17:09:48
Editar un campo calculado de un query jsanchez Conexión con bases de datos 0 11-06-2007 21:10:26
editar en un query nikotina SQL 2 08-11-2006 14:43:06
Problema para editar y borrar raugadel Firebird e Interbase 2 30-08-2005 17:54:38
Registros medio borrados en QuickReport ciscu Impresión 3 20-05-2004 20:48:27


La franja horaria es GMT +2. Ahora son las 10:46:23.


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