Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-01-2011
verito_83mdq verito_83mdq is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 118
Poder: 14
verito_83mdq Va por buen camino
Como guardar correctamente los datos..?

Hola como anda?? Bueno le explico mi consulta, cuando empece la aplicación trabajaba con una base de acces, para guardar datos lo que hacia es poner la tabla en modo Insert y al finalizar utilizaba el metodo Post.
Hasta ahí todo bien después ese mismo programa lo migre a una base en Mysql y guardaba poniendo la tabla en modo Insert y al finalizar en vez de poner Post lo hacia con la consulta Sql ej: ' Insert into.....' .

Me han dicho que no esta bien poner la tabla en modo insert y despues no utilizar el post. La duda es que no se cual es la mejor manera y mas eficiente para guardar los datos. Ustedes cual usan??
Pd: al poner la tabla en modo edit los dbEdits se blanquean y permiten ingresar la cadena, en el caso de no usar insert tendría que usar los tEdit?

Desde ya muchas Gracias!!
Responder Con Cita
  #2  
Antiguo 12-01-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Si abres la tabla con table, insert, post.
Si abres la tabla con query, sql insert.
Si abres la tabla con table y usas un query para modificar NO hay nada malo hacer el insert en la tabla, SALVO que deje un espacio en blanco, pero eso es otra historia.
Si funcionaba en access deberia de funcionar en MySql.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 12-01-2011
verito_83mdq verito_83mdq is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 118
Poder: 14
verito_83mdq Va por buen camino
Esta bien me queda mas claro gracias Caral!, ahora tengo otro problema no puedo editar los registros te explico, En el Form listar cliente tengo los dbEdits conectados a los Query , cuando hago un select en los dbEdits me muestra la info que solicite, ahora bien como hago para modificar el registro?? Se entiende?? Osea para que me deje modificar los dbEdits tiene que estar conectado al ttable para ponerle en modo edición y asi permitirme modificar. Espero que hayan entendido mi problema y me puedan dar una mano. Desde ya muchas gracias!
Responder Con Cita
  #4  
Antiguo 12-01-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Aveces pasan cosas raras, a mi me pasaron cuando cambie a Firebird.
Lo cierto es que si la consulta es total de toda la tabla, osea Select * from TuTabla, deberia de poder hacerse la modificacion.
La verdad si no puede, simplemente haz un Update, te sera mas sencillo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 13-01-2011
verito_83mdq verito_83mdq is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 118
Poder: 14
verito_83mdq Va por buen camino
Hola Caral! te cuento que sigo sin poder modificar, lo que hice es lo siguiente cuando creo el form de Listar Datos tengo los dbedits conectados al query, me muestra los datos y como decias vos en algunos me deja modificar una vez que modifico le doy al botón actualizar donde tengo esta consulta:


Código Delphi [-]
ZQuery1.Close;            
ZQuery1.SQL.Clear;             
ZQuery1.SQL.Add('Update empleado set nombre='''+DBEdit1.EditText+''' where empleado.ID_Empleado='''+id+'''');            
ZQuery1.ExecSQL;

Lo que me pasa ahora es que no me toma lo que modifico en el DBEdit1.EditText , ahora si hago esto si lo toma:



Código Delphi [-]
h:=DBEdit1.EditText;              
ZQuery1.Close;             
ZQuery1.SQL.Clear;             
ZQuery1.SQL.Add('Update empleado set nombre='''+h+''' where empleado.ID_Empleado='''+id+'''');             
ZQuery1.ExecSQL;


Ose si lo paso antes a una variable si funciona , el drama es que no puedo crear por cada dbedit una variable ya que tengo muchos y me parece que no es lo correcto. Espero que me puedan ayudar!! Desde ya muchas gracias.

Última edición por Neftali [Germán.Estévez] fecha: 13-01-2011 a las 16:39:31. Razón: Corregidos los TAG's
Responder Con Cita
  #6  
Antiguo 13-01-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Cuantos ZQuery usas en eta operacion?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 13-01-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Lo que pasa es que con el primer código cierras la consulta antes de leer el valor del Edit. Al cerrar la consulta el DBEdit quedará en blanco, es por eso que siempre agregarás el valor en blanco. En el segúndo código, lo que haces es almacenar el valor del DBEdit en una variable antes de cerrar el Query, por eso es que la variable mantiene el valor que tenía el DBEdit.

Pero por otro lado, se nota que eres nuevo en esto de programar aplicaciones Cliente-Servidor. No te preocupes, no es tan difícil. Lo que pasa es que cuando haces la transición se nota un poco difícil porque las viejas prácticas no son adecuadas.

Creo que te podría ayudar esto. No tengo a mano material que puedas consultar para ayudarte a hacer las cosas bien, pero no te desesperes, ya pronto los compañeros te borbandean con enlaces y sugerencias.

Una última recomendación, mejor lee un poco sobre programación de base de datos para aplicaciones Cliente-Servidor antes de seguir desarrollando. Lo que estás haciendo en este momento no es una buena practica.

El compañero Caral también ha hecho un tutorial que te podría ayudar. Está hecho para Firebird pero se sirve al 100 con MySql.

Estaré atento a este hilo por si tienes una duda.

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #8  
Antiguo 13-01-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por verito_83mdq Ver Mensaje
Ahora tengo otro problema no puedo editar los registros te explico, En el Form listar cliente tengo los dbEdits conectados a los Query , cuando hago un select en los dbEdits me muestra la info que solicite, ahora bien como hago para modificar el registro?? Se entiende?? Osea para que me deje modificar los dbEdits tiene que estar conectado al ttable para ponerle en modo edición y asi permitirme modificar.
El problema es que estás mezclando 2 modos de trabajo. Digamos que hay 2 opciones:

(1) Trabajar con componentes de acceso a Datos. Mostrarlos en un form, abrir la tabla/consulta y ponerla en modo Insert/Edit (APPEND o EDIT); Y al acabar con los cambios debes grabar con Post.

Código Delphi [-]
  Tabla1.Append;
  ....

  // Para grabar
  Tabla1.Post;

(2) Trabajar con SQL. En ese caso accedes a los datos utilizando una SQL, y cuando vas a grabar los haces con una SQL (UPDATE Empleado...)

Lo que tú estás haciendo es mezclar los 2 métodos.
Primero accedes a los datos usando el método 1 y abres la tabla/consulta y luego quieres actualizar/insertar con el método 2.

Digamos que "la gracia" del método 2 es no tener que abrir la tabla/consulta (me refiero a ponerla en modo Insert/Update utilizando APPEND o EDIT); Y eso es lo que estás haciendo, así que creo que si has empezado así deberías acabar con POST.
Si quieres usar el método 2, deberás hacer algun parche, utilizar TClientDataSet o dejar de lado los componentes de Acceso a Datos y cambiarlos por los normales.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 13-01-2011
verito_83mdq verito_83mdq is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 118
Poder: 14
verito_83mdq Va por buen camino
Hola a todos!
Caral: estoy usando un Query solo, primero listo datos y cuando pongo modificar cierro esa consulta y hago la consulta del update. La conexión del campo es la siguiente DBEdit---->DataSource2----->ZQuery1----->DataSource1----->ZTable---->ZConection1

Ese es el recorrido. Espero que se entienda.

Cris: es asi como dijistes , entendistes lo que quise hacer, tenes razon es la primera aplicación que hago cliente-servidor. Estuve buscando material sobre este tema y la verdad no encontré mucho, me gustaria que me quede claro.

Neftali: te entiendo lo que decis, si utilizo la opción 1 , en este caso no podría usar los query, osea hacer consultas? Tendria que usar los metodos de los dataset como lookup, locate todos esos?
Me gusta mucho usar el lenguaje Sql prefiero usar el metodo dos, para este caso en vez de trabajar con DbEdit hay que trabajar con Edit solamente??

Bueno muchachos estoy bastante perdido en este tema, realmente agradezco su ayuda si pueden pasar algun manual que trate este tema, los que yo tengo como 'La Cara Oculta de Delphi' o 'Delphi al Limite' solo hablan del primero metodo como dijo Neftali, cuando postie los codigos sql le aplique resaltar sintacis Sql en la vista previa quedaba hermoso jaja y cuando lo envio quedo desprolijo.
Saludos..!!!!
Responder Con Cita
  #10  
Antiguo 13-01-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por verito_83mdq Ver Mensaje
cuando postie los codigos sql le aplique resaltar sintacis Sql en la vista previa quedaba hermoso jaja y cuando lo envio quedo desprolijo.
No te preocupes, pasa a veces con la vista previa; Ya te lo he arreglado.

En cuando a realizarlo con SQL, la opción el:

(1) Lanzar la SQL de consulta (SELECT...)
(2) Cargar manualmente los resultados en los controles de edición (en esta caso no TDBEdit sino TEdit).
(3) Realizar los cambios.
(4) Al aceptar, montar la sentencia de actualización y lanzarla utilizando SQL de nuevo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #11  
Antiguo 13-01-2011
verito_83mdq verito_83mdq is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 118
Poder: 14
verito_83mdq Va por buen camino
Gracias Neftali recién hice lo que me dijiste, saque los DBEdit y puse el TEdit. Luego hago las dos consultas la de Select y la de Update y anda muy bien, vos lo trabajas así o con los dataset?
Por ahora puedo seguir avanzando, me parece que se me va a complicar con los DBLookUPComboBox que tengo en el form, ahí no se como haré para modificar los datos. Estoy muy agradecido con ustedes 3 que se interesaron en ayudarme. Gracias.
Saludos!!
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Guardar correctamente un icono como ".ico" bosster_018 API de Windows 6 05-01-2010 16:03:48
como llenar un combobox y guardar los datos amix Conexión con bases de datos 7 07-10-2007 22:38:07
Como guardar datos con DBComboBox Damian666 MySQL 13 03-09-2007 21:11:03
Como guardar .JPG como Bitmap en Base de Datos Javi2 Gráficos 4 25-03-2007 17:21:57
como guardar los datos de un dblookupcombobox eliza0_n Varios 9 15-07-2005 01:38:05


La franja horaria es GMT +2. Ahora son las 02:27:34.


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