Ir al contenido


Foto

[RESUELTO] dataset not in edit or insert mode


  • Por favor identifícate para responder
10 respuestas en este tema

#1 Kamael

Kamael

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 23 enero 2011 - 10:57

Estoy haciendo una base de datos con Access, con dos tablas relacionadas.
Al añadir los datos me da este error "dataset not in edit or insert mode".
Las tablas estan abiertas y en modo append. no entiendo que pasa.
;e podeis ayudar?.
Un saludo.



  • 0

#2 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 23 enero 2011 - 11:06

Bienvenido a DA.
Podrías regalarnos un poco mas de información?
-Como te conectas?
-Si es posible un poco de tu código, (en donde te sale el error).

Saludos
  • 0

#3 Kamael

Kamael

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 23 enero 2011 - 11:45

me conecto con jet 4.0 provider.
el codigo



delphi
  1. if TMaq.Locate('Ser',OSer.Text,[]) then
  2.   TCont.Open ;
  3.   TCont.Edit ;
  4.   TCont.FieldValues['Fec'] := cFec.Date ;
  5.   TCont.FieldValues['Ca1'] := StrToFloatDef(Cb1.Text,0) ;
  6.   TCont.FieldValues['Ca05'] := StrToFloatDef(Cb05.Text,0) ;
  7.   Dt4.TCont.Post ;



el error me lo da cuando entra en la tabla TCont.
  • 0

#4 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 23 enero 2011 - 11:58

Lo que hace tu código en el momento es buscar un registro en la tabla TMaq y si lo encuentra abre la tabla TCont, si no lo encuentra salta directamente a TCon.Edit sin abrir la tabla lo que genera un error.

En caso de que Locate devuelva True, lo que hará es Abrir la tabla TCont, posicionarse en el primer registro y editarlo ( no se si eso es lo que quieres) de todas formas te faltan el begin y el end para que no de error en caso de que Locate devuelva false. Si lo que qieres es agregar un nuevo resgistro cambia el TCot.Edit por TCont:Append.



delphi
  1. if  TMaq.Locate('Ser',OSer.Text,[]) then
  2. begin
  3. TCont.Open ;
  4. TCont.Edit ;
  5. TCont.FieldValues['Fec'] := cFec.Date ;
  6. TCont.FieldValues['Ca1'] := StrToFloatDef(Cb1.Text,0) ;
  7. TCont.FieldValues['Ca05'] := StrToFloatDef(Cb05.Text,0) ;
  8. TCont.Post
  9. end


  • 0

#5 Kamael

Kamael

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 23 enero 2011 - 01:34



delphi
  1. TMaq.Open ;
  2. TCont.open ;
  3. TMaq.Append ;
  4. TCont.Append ;
  5.  
  6. TMaq.FieldValues['Ser'] := ASer.Text ;
  7. TCont.FieldValues['Ser'] := ASer.Text ;
  8. TMaq.FieldValues['Mod'] := AMod.Text ;
  9. TCont.FieldValues['Fec'] := AFec.Date ;
  10. TCont.FieldValues['Ca1'] := StrToFloatDef(Ca1.Text,0) ;
  11. Tcont.FieldValues['Ca2'] := StrToFloatDef(Ca2.Text,0) ;
  12. TCont.FieldValues['Ca05'] := StrToFloatDef(Ca05.Text,0) ;
  13. TCont.FieldValues['Ca02'] := StrToFloatDef(Ca02.Text,0) ;
  14. TCont.FieldValues['Ca01'] := StrToFloatDef(Ca01.Text,0) ;
  15.  
  16. TMaq.Post ;
  17. TCont.Post ;



Oerdona pero me he equivocado de codigo.
Este es el codigo que me da el error, al añadir en tabla Tcont.

  • 0

#6 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 24 enero 2011 - 05:14

Perdona pero me he equivocado de codigo.
Este es el codigo que me da el error, al añadir en tabla Tcont.


¿ En que línea salta el error ?.
  • 0

#7 Kamael

Kamael

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 24 enero 2011 - 01:52



delphi
  1. TCont.FieldValues['Ser'] := ASer.Text ;


en esta linea.

  • 0

#8 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 24 enero 2011 - 02:34

Revisa si depronto hay un evento ONChange asociado con ese campo, o con el dbcontrol de ese campo, o con el TDataSource, que depronto llamara a Post antes de terminar el procedimiento.

Saludos
  • 0

#9 pacopenin

pacopenin

    Member

  • Miembros
  • PipPip
  • 12 mensajes
  • LocationAsturias

Escrito 24 enero 2011 - 02:39

Hola.
Yo te aconsejo que hagas las cosas de forma secuencial, es decir


delphi
  1. TMaq.Open ;
  2. TMaq.Append ;
  3.  
  4. TMaq.FieldValues['Ser'] := ASer.Text ;
  5. TMaq.FieldValues['Mod'] := AMod.Text ;
  6.  
  7. TMaq.Post ;
  8.  
  9. TCont.open ;
  10. TCont.Append ;
  11. TCont.FieldValues['Ser'] := ASer.Text ;
  12. TCont.FieldValues['Fec'] := AFec.Date ;
  13. TCont.FieldValues['Ca1'] := StrToFloatDef(Ca1.Text,0) ;
  14. Tcont.FieldValues['Ca2'] := StrToFloatDef(Ca2.Text,0) ;
  15. TCont.FieldValues['Ca05'] := StrToFloatDef(Ca05.Text,0) ;
  16. TCont.FieldValues['Ca02'] := StrToFloatDef(Ca02.Text,0) ;
  17. TCont.FieldValues['Ca01'] := StrToFloatDef(Ca01.Text,0) ;
  18.  
  19. TCont.Post ;



Saludos,

  • 0

#10 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 25 enero 2011 - 05:08

Revisa si depronto hay un evento ONChange asociado con ese campo, o con el dbcontrol de ese campo, o con el TDataSource, que depronto llamara a Post antes de terminar el procedimiento.


Coincido en que esto parece lo más probable.

Hay algún evento que te hace un Post en el Dataset.
  • 0

#11 Kamael

Kamael

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 26 enero 2011 - 02:27

No no hay evento onChange asociado.
al final he echo lo que me dijo pacopenin y funciona perfectamente.
Gracias a todos por vuestra ayuda.
Un saludo
  • 0




IP.Board spam blocked by CleanTalk.