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 08-10-2003
jealousy jealousy is offline
Miembro
 
Registrado: ago 2003
Posts: 49
Poder: 0
jealousy Va por buen camino
Borrar registro en tabla maestra y todos los de la tabla detalles correspondientes

Holita de nuevo

Me estoy volviendo loco con este problema:

Tengo dos tablas: Ventas, LineasVentas (paradox). Todo va bien, pero me falta una cosa. Quiero poder cancelar una venta que tiene ya lineas. Pero siempe me sale el error diciendo que la tabla no esta en modo de edicion.

Tengo una opcion de borrar linea y esa si funciona bien.

¿Como puedo cancelar esa venta? Osea, Eliminar la venta de la Tabla Maestra y las lineas que corresponden a esta.

He probado con While Not LineasVenta.EOF y eliminar todas las lineas de esa venta y despues la Venta Maestra pero me muestra el error de que no esta en modo edicion.

Aparte de esto, es que me viene ocurriendo una cosa en todas las tablas que uso en el programa, y es que aunque elimine todos los registros de una tabla, siempre queda uno que no tiene nada, pero hay esta y no hay forma de quitarlo. Hago delete y se elimina pero me crea otro, pues lo veo en el campo codigo autoincrementable. Y con este problema nunca puedo usar la funcion RecordCount=0 por ejemplo porque nunca es 0.

Espero q puedan ayudarme, estoy desesperado ya

Gracias y saludos
Responder Con Cita
  #2  
Antiguo 08-10-2003
franchihq franchihq is offline
Registrado
 
Registrado: oct 2003
Ubicación: Republica Dominicana
Posts: 1
Poder: 0
franchihq Va por buen camino
no he trabajado mucho con paradox y al paradox no ser una base de datos relacional no puedes hacer eso a nivel de base de datos o se debes hacerlo en el codigo de delphi, entonces en el objeto table en delphi en la propiedades puedes espeficicarle cual es el padre y cual es el hijo y tambien puedes espedificarle por que campo estan relacionados y hay una opcion en la cual le exiges integridad referencial, por ahi creo que puedes solucionar tu problema.

Saludos,
Responder Con Cita
  #3  
Antiguo 08-10-2003
sanxpue sanxpue is offline
Miembro
 
Registrado: jul 2003
Posts: 196
Poder: 21
sanxpue Va por buen camino
En Paradox si puedes hacer referecia pero no es muy fiable...

pero weno me imagino que no hiciste entonces supongamos

en ventas cuando cancelas..supongamos el indice de la venta es 10
entonces cierras ventas despues lo abres y escribes

While TablaVentas.FindKey(['10']) Do
TablaVentas.Delete;
TablaVentas.Close;

Arriba imaginandonos que el Indice primario es indice en ventas

Ahora en LineasVentas me imagino que tienes un dato que lleva el 10 (digamos se llama el campo : IndiceVenta)

TablaLineasVentas.Index := 'IndVen'
(imaginandonos que le pusiste un indice secundario a tablaLineasVentas llamado IndVen que tiene el campo IndiceVenta)
While TablaLineasVentas.FindKey(['10']) Do
TablaLineasVentas.Delete;
TablaLineasVentas.Close;

TablaLineasVentas.Index := '';

y con eso debe de jalar...
__________________
saludos desde Puebla Mexico..
asanxt@hotmail.com
"como siempre a sus ordenes y siempre con buena cara"
'lolita me excitas, perversa piel de melocotón'
Responder Con Cita
  #4  
Antiguo 09-10-2003
jealousy jealousy is offline
Miembro
 
Registrado: ago 2003
Posts: 49
Poder: 0
jealousy Va por buen camino
Muchas gracias. Me va bien, ya lo tengo.

Pero me queda un registro en la tabla lineas, un registro vacio. Este problema ya lo he comentado aqui en el foro. Pero nadie me ha respondido y yo no he encontrado la solucion tampoco.

Saludos
Responder Con Cita
  #5  
Antiguo 14-10-2003
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Los autoincrementables son una lata, yo los he tenido que quitar todos de mi aplicación.

Si es una tabla maestra, sip, siempre se queda ahí ese registro para indicar que ese registro es el siguiente a Crear. Si además usas un autoincrementable, verás como se va aumentando cada vez más y más La única forma que he encontrado es quitar el autoincrementable, y programarlo a mano.

Al tiempo de llevar al cliente las tablas, borra con el database Desktop el registro ese que se te queda pillado.

Al borrar el ultimo registro, la tabla se queda en modo insercion, (por eso aparece ese registro)

Saludos.
Responder Con Cita
  #6  
Antiguo 14-10-2003
jealousy jealousy is offline
Miembro
 
Registrado: ago 2003
Posts: 49
Poder: 0
jealousy Va por buen camino
Muchas gracias por la info

Pues vaya putada ¿no?

Y eso de crear los autoincrementables uno mismo, ¿como se puede hacer?

¿Seria mejor usar dBase en lugar de Paradox?

De nuevo, muchas gracias y saludos!
Responder Con Cita
  #7  
Antiguo 14-10-2003
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
function NuevoIdCliente():integer ;
begin
Result:= 1;
with dtm do
begin
if qryNClientes.Active then qryNclientes.Close;
qryNClientes.Open;
if not qryClientes.IsEmpty then
if (qryNclientes.Fields[0].AsInteger > 0) then
Result:= qryNclientes.Fields[0].AsInteger+1;
qryNclientes.Close;
end;

end;

dtm es mi Datamodule
qryNClientes es una Tquery y en su SQL tiene : SELECT MAX(IDCLIENTE) FROM CLIENTES;


Si buscas por el foro encontrarás más información.

si tu programa es en red, en el BeforePost, busca el NuevoIdCliente de nuevo... no vaya a ser que otro gracioso en la red haya añadido un registro con ese Id

Saludos
Responder Con Cita
  #8  
Antiguo 14-10-2003
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Posteado originalmente por jealousy
Pero siempe me sale el error diciendo que la tabla no esta en modo de edicion.
Código:
if not (tabla.State in dsEditModes) then
   tabla.Edit ; //
y como decimos en Lepe .... " a juí " (y a salir corriendo)
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 14:19:03.


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