![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Visto por encima hay algo raro: tanto en Form9 como en Form23 tienes una componente llamada Tabla_clientes. Cuando abres Form23 el Tabla_clientes es el del Form9 mientras que el Post que haces en Form23 es el de su propia Tabla_clientes. Esto no está bien, tienes que usar la misma componente.
Si este es el error, y creo que así es, te recomiendo el uso de módulos de datos (DataModule) para colocar tus componentes TTable que vayas a usar desde distintos formularios. // Saludos |
|
#2
|
|||
|
|||
|
Hemos cambiado una cosa, y es que teníamos declaradas en cada Form la tabla y el datasource, y ahora suponemos que hay que usar siempre el mismo. De todas formas, al ejecutar, nos ha dado el siguiente error:
Proyect Proyecto.exe raised exception class EDatabaseError with message "Tablaclientes:dataset not in edit or insert mode". Process stopped. |
|
#3
|
||||
|
||||
|
Cita:
El error que te está dando, indica que al hacer post, la tabla no está en modo de inserción/edición. Si mantenes algo de la estructura anterior, te valdria con: Código:
procedure TForm9.BitBtn1Click(Sender: TObject); begin Form23.Visible:=true; Form9.Visible:=False; Form23.Tabla_clientes.Insert; end; ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#4
|
||||
|
||||
|
Cita:
El error lo manda cuando intentas modificar los campos de una tabla que no está ni en modo de edición (luego del Edit) ni en modo de inserción (luego de Append o Insert). // Saludos |
|
#5
|
|||
|
|||
|
Ahora es este nuestro nuevo código, en la unidad que tiene todo:
Código:
procedure TForm9.BitBtn1Click(Sender: TObject); begin Form23.Visible:=true; Form9.Visible:=False; Tabla_clientes.Insert; end; procedure TForm9.Tabla_clientesAfterPost(DataSet: TDataSet); begin Tabla_clientes.FlushBuffers; end; y en la unidad de insertar : Código:
procedure TForm23.Button1Click(Sender: TObject); begin Form9.Tabla_clientes.Post; Form23.Visible:=false; Form24.Visible:=true; end; |
|
#6
|
||||
|
||||
|
¿Y en qué línea te marca el error?
// Saludos |
|
#7
|
|||
|
|||
|
El programa se para,pero si que elimina registros de la tabla
No nos da la línea del error,sólo nos dice que la tabla de clientes no esta en insert o edit mode.
Muchas gracias |
|
#8
|
|||
|
|||
|
Ya hemos solucionado nuestros problemas con las tablas, muchas gracias.Le queríamos comentar a jachguate :
-Todavía no tenemos tu nivel de conocimientos de delphi,pero muchas gracias por el recochineo de tus comentarios |
|
#9
|
||||
|
||||
|
Cita:
Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#10
|
||||
|
||||
|
Hola.
Solo un consejo, este código es muy dificil de mantener y entender. Ponle nombres a los componentes, y evita el acceder a los componentes de otros formularios. En lugar de Form9 y Form23, llámalos frmClientes y frmProductos, y en lugar de BitBtn1 y Button1 llámalos btnInsertar y btnGuardar. O algo parecido, verás como entonces el código se entiende mucho mejor. Además accedes directamente a las propiedades y componentes de un Formulario desde otros. Esto puede ser un gran problema cuando el programa sea muy grande, puesto que cuando debas modificar un formulario, no sabes en cuantos otros sitios te va a afectar. Para eso se inventó la modularidad, lo que hay dentro de un formulario solo lo debe tocar él mismo. Si otros formularios necesitan algo, declara un función pública para que la llamen, y programa el código en esa función (que estará en el mismo formulario). O sea donde pones : Código:
procedure TForm23.Button1Click(Sender: TObject); begin Form9.Tabla_clientes.Post; Form23.Visible:=false; Form24.Visible:=true; end; Código:
procedure frmProductos.btnGuardarClick(Sender: TObject); begin frmClientes.Guardar; Visible := false; frmPrincipal.Mostrar; end; /* La próxima función estará definida publicamente en frmClientes (antes Form9) */ procedure frmClientes.Guardar; begin TablaClientes.Post; end; /* La próxima función estará definida publicamente en frmPrincipal (antes Form24) */ procedure frmPrincipal.Mostrar; begin Visible := True; end;
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|