Jump to content


Photo

[RESUELTO] dataset not in edit or insert mode


  • Please log in to reply
10 replies to this topic

#1 Kamael

Kamael

    Member

  • Miembros
  • PipPip
  • 18 posts

Posted 23 January 2011 - 10:57 AM

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
  • 2137 posts

Posted 23 January 2011 - 11:06 AM

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 posts

Posted 23 January 2011 - 11:45 AM

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
  • 2137 posts

Posted 23 January 2011 - 11:58 AM

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 posts

Posted 23 January 2011 - 01:34 PM



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
  • 1484 posts
  • LocationMallorca

Posted 24 January 2011 - 05:14 AM

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 posts

Posted 24 January 2011 - 01:52 PM



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


en esta linea.

  • 0

#8 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2137 posts

Posted 24 January 2011 - 02:34 PM

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 posts
  • LocationAsturias

Posted 24 January 2011 - 02:39 PM

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
  • 1484 posts
  • LocationMallorca

Posted 25 January 2011 - 05:08 AM

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 posts

Posted 26 January 2011 - 02:27 PM

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.