Ir al contenido


Foto

Editar Formulario con DB Firebird


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

#1 Minoru

Minoru

    Newbie

  • Miembros
  • Pip
  • 6 mensajes

Escrito 18 diciembre 2014 - 07:03

muy buenas tardes, este es mi primer post. recién estoy aprendiendo a utilizar lazarus y estoy aprendiendo a utilizar códigos con base de datos.

ya aprendí a vincular, filtros, reportes

pero tengo un problema:
No puedo editar los datos que selecciono del form1 al form2 :(
alguien me puede ayudar? para crear el boton "guardar". cuando quiero por ejemplo cambiar el nombre del usuario seleccionado

Codigo
https://www.dropbox....ver1.3.rar?dl=0
  • 0

#2 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 18 diciembre 2014 - 07:15

Hola
Lo que tienes que hacer es añadir el uses del form2 en el form1
Despues del inicio coloca:
Uses form2 en el form1 y podras ver el contenido del form2 en el primero y viceversa
Saludos
  • 0

#3 Minoru

Minoru

    Newbie

  • Miembros
  • Pip
  • 6 mensajes

Escrito 19 diciembre 2014 - 09:42

Haber si me explico mejor :p

Imagen Enviada

por ese motivo subí el código para que sea mas fácil ayudarme y también para ayudar a otras personas que están empezando a aprender como yo. :)
  • 0

#4 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 19 diciembre 2014 - 09:53

1. Tienes en el Form2 un TQuery o un TTable asociado a un TDataSource y a su vez éste ligado a los DBEdit ?
2. Ese TQuery o TTable está en modalidad de Edit (edición de datos) ?

Eso es lo que yo revisaría primero...

Lo de guardar es lo más sencillo, después de tener el TQuery o TTable en modo de edición, es cosa de que en el código del botón pongas algo asó: Table.Post o Query.Post y con eso guarda la información en la base de datos...

Saludox ! :)
  • 0

#5 Minoru

Minoru

    Newbie

  • Miembros
  • Pip
  • 6 mensajes

Escrito 19 diciembre 2014 - 10:14

Imagen Enviada

1) creo que el TQuery te refieres al TSQLQuery? y si lo tengo vinculado TDataSource y los TDBEdit estan vinculados al TDataSource
2) el TSQLQuery, en donde se ve si esta en modalidad edición? ya que en el inspector de objetos. no sale nada con edit. sorry soy nuevo. recien estoy aprendiendo a utilizar Lazarus. y delphi nunca lo he usado. :(



  • 0

#6 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 19 diciembre 2014 - 11:07

No te preocupes...

1. Si, me refiero al TSQLQuery.
2. De inicio cualquier TDataSet (que es la clase de la cual desciende el TSQLQuery) no está en modo de edición, uno lo pone en modo de edición. Esto puede ser en varios eventos: un botón de Modificar, al cargar el formulario, etc. pero siempre después de hacer el Open del TDataSet. En ese momento el TDataSet se pone en modo de edición.

Cualquier duda, por acá seguimos...

Saludox ! :)
  • 0

#7 Minoru

Minoru

    Newbie

  • Miembros
  • Pip
  • 6 mensajes

Escrito 19 diciembre 2014 - 11:52


2. De inicio cualquier TDataSet (que es la clase de la cual desciende el TSQLQuery) no está en modo de edición, uno lo pone en modo de edición. Esto puede ser en varios eventos: un botón de Modificar, al cargar el formulario, etc. pero siempre después de hacer el Open del TDataSet. En ese momento el TDataSet se pone en modo de edición.


el problema que en lazarus, no esta el componente TIBDataSet que existe en delphi. por lo cual el equivalente TSQLQuery. no tiene el "DataSet Editor" que genera automaticamente el Modificar, Insertar, Borrar y Refrescar, por la clave primaria de las Tablas seleccionadas en el editor.

por ese motivo, estoy atrapado :(
  • 0

#8 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 19 diciembre 2014 - 01:10



2. De inicio cualquier TDataSet (que es la clase de la cual desciende el TSQLQuery) no está en modo de edición, uno lo pone en modo de edición. Esto puede ser en varios eventos: un botón de Modificar, al cargar el formulario, etc. pero siempre después de hacer el Open del TDataSet. En ese momento el TDataSet se pone en modo de edición.


el problema que en lazarus, no esta el componente TIBDataSet que existe en delphi. por lo cual el equivalente TSQLQuery. no tiene el "DataSet Editor" que genera automaticamente el Modificar, Insertar, Borrar y Refrescar, por la clave primaria de las Tablas seleccionadas en el editor.

por ese motivo, estoy atrapado :(


Una disculpa... pensé en ponerte el código y luego lo olvidé...

Mira, en el evento OnShow del Form coloca esto:



delphi
  1. TSQLQuery.Open;  {Abre el TDataSet}
  2. TSQLQuery.Edit;  {Pone el TDataSet en modo de edición}



Saludox ! :)
  • 0

#9 Minoru

Minoru

    Newbie

  • Miembros
  • Pip
  • 6 mensajes

Escrito 19 diciembre 2014 - 01:44

Imagen Enviada

SQLQ es el TSQLQuery. se genera el ejecutable pero como es lo primero que carga sale el error ese :(.
no puedes descargar mi código y echarle un vistazo? porfa    T_T
te lo agradecería enormemente!! cuando tengas tiempo. no hay apuro :p

Codigo
https://www.dropbox....ver1.3.rar?dl=0
  • 0

#10 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 19 diciembre 2014 - 05:37

Pues yo no recibo ese error. Al menos en CodeTyphon 5.10 Revision 005100 con FPC: 2.7.1 Revisión SVN: 46696

Recuerdo que en el foro ya se habló sobre extraño error. No hay una única causa del error, aunque en el foro de Lazarus mayormente lo atribuyen al firewall comodo y otros antivirus que afectan en parte al debugger gdb.exe.
También se puede deber a que estás empleando una versión inestable de Lazarus. ¿Que versión de Lazarus empleas?

Puedes ver en este enlace sobre el tema.

He descargado tu proyecto pero tengo que reconocer que a esos componentes no los he usado como para determinar que pueda estar mal. Ha simple vista no he encontrado algo raro que pudiera afectarlo. Los DataSource tienen la propiedad AutoEdit en true por lo que no debiera de ser problema en habilitar la edición sin problemas. Pero como bien señalas no lo permite. Raro.

En vista a que empleas SQLdb recomiendo que sigas su tutorial.

Saludos,
  • 0

#11 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 19 diciembre 2014 - 06:26

He logrado reproducir el error. Basta con llamar a .Edit para que salte. O bien algo pasa con dichos componentes (los SQLdb) o es cosa de la configuración de la transacción... he notado que tiene en su valor caRollback.

A pesar de que los DataSource tienen el AutoEdit, los componentes data controls no entran en edición. Ante la duda de que fuera algo de los componentes data controls hice un proyecto básico a modo de prueba con una base de datos propia. Usando Zeos los componentes entran en edición.

Ahora probando con SQLdb... También puedo editar, incluso invocando al .Edit
A mi me funciona bien. Algo tienes mal en tu proyecto. Hay que darle una mirada profunda. Lamento no tener demasiado tiempo como para profundizar por ahora.

Saludos,
  • 0

#12 Minoru

Minoru

    Newbie

  • Miembros
  • Pip
  • 6 mensajes

Escrito 19 diciembre 2014 - 06:52

He logrado reproducir el error. Basta con llamar a .Edit para que salte. O bien algo pasa con dichos componentes (los SQLdb) o es cosa de la configuración de la transacción... he notado que tiene en su valor caRollback.

A pesar de que los DataSource tienen el AutoEdit, los componentes data controls no entran en edición. Ante la duda de que fuera algo de los componentes data controls hice un proyecto básico a modo de prueba con una base de datos propia. Usando Zeos los componentes entran en edición.

Ahora probando con SQLdb... También puedo editar, incluso invocando al .Edit
A mi me funciona bien. Algo tienes mal en tu proyecto. Hay que darle una mirada profunda. Lamento no tener demasiado tiempo como para profundizar por ahora.

Saludos,


si esta raro, es que intente crear uno mismo pero mas de usar SQLDB, utilize el IBX FIREBIRD
y en este si me permitía modificar con el DBNavigator. cosa que con el SQLDB no puedo
Imagen Enviada

pero el problema que con IBX no puedo aplicar filtros :(

si tienes tiempo me puedes ayudar con el codigo? como lo dije antes. no hay problema cuando tengas chance :)

Codigo SQLDB (No Permite Modificar DBNavigator):
https://www.dropbox....ver1.3.rar?dl=0


Codigo IBX Firebird (No logro hacer filtro de buscar por cliente o telefono, pero si puedo modificar datos por el DBNavigator):
https://www.dropbox....ver1.4.rar?dl=0

me puedes ayudar con cualquiera de las opciones. o si tienes tiempo para las dos mucho mejor.. :3  jejeje
  • 0

#13 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 19 diciembre 2014 - 08:21

OJO, he dicho que en tu proyecto hay algo raro.
En mis pruebas noté que el error salta cuando lo forcé a hacer un .Edit, y noté que los componentes no permiten la edición.

Pero en una prueba en un proyecto en limpio, tanto con Zeos como con SQLDB las cosas andan bien. Tu proyecto tiene algo mal, y no he logrado determinar que es.

Me extraña que digas que con IBX no puedas aplicar filtros. Fíjate bien, debe tener la propiedad Filter con la cadena que hará de filtro, y a su vez la propiedad Filtered debe ser true.

Puedo recomendarte los excelente tutoriales del compañero Caral:
Como hacer un programa de Facturación - Parte 1
Como hacer un programa de Facturación - Parte 2
Como hacer un programa de Facturación - Parte 3

Si bien los tutoriales emplea otros componentes y está basado en Delphi la teoría y el manejo de una suite de componentes a otra no es tán distinto. Los conceptos siguen siendo los mismos.

Respecto a los componentes que empleas puedo señalarte que el Transaction tiene el valor caRollback en su propiedad Action un cuRollback. ¿Que implica esto? Que no interesa todo lo que hagas, la transacción se encargará de deshacer todo. Estudia el tema de las transacciones, es fundamental entenderlo. Te recomiendo la lectura del documento Transacciones en Interbase y Firebird que está disponible en nuestra sección descargas.
El documento pone la práctica con IBX en Firebird, pero tales principios se extienden a todas las suites que manejan las transacciones de forma explícita e implícitamente (Zeos es un ejemplo de esto último).
Las transacciones son la piedra angular de una base de datos. Todo lo que haces en una base de datos implica iniciar una transacción. No basta con operar (insertar, eliminar, actualizar, etc) sino que también hay que confirmar y darle validez a la transacción o bien descartarla.

Saludos,
  • 0

#14 verasan

verasan

    Newbie

  • Miembros
  • Pip
  • 1 mensajes

Escrito 06 febrero 2015 - 04:09



2. De inicio cualquier TDataSet (que es la clase de la cual desciende el TSQLQuery) no está en modo de edición, uno lo pone en modo de edición. Esto puede ser en varios eventos: un botón de Modificar, al cargar el formulario, etc. pero siempre después de hacer el Open del TDataSet. En ese momento el TDataSet se pone en modo de edición.


el problema que en lazarus, no esta el componente TIBDataSet que existe en delphi. por lo cual el equivalente TSQLQuery. no tiene el "DataSet Editor" que genera automaticamente el Modificar, Insertar, Borrar y Refrescar, por la clave primaria de las Tablas seleccionadas en el editor.

por ese motivo, estoy atrapado :(


Error!!!! si existe el componente TIBDataSet...y todo el resto del IBX...
  • 0

#15 tmsanchez

tmsanchez

    Advanced Member

  • Miembros
  • PipPipPip
  • 85 mensajes

Escrito 07 febrero 2015 - 03:04

Hola,

Hace tiempo subì  al foro un ejemplo de una "mini aplicación" con acceso a base de datos en lazarus" http://www.delphiacc...windows-linux)/, el código fuente está disponible para que lo descargues.

Espero te sea de utilidad.

Saludos
  • 0




IP.Board spam blocked by CleanTalk.