PDA

Ver la Versión Completa : Cómo escribir en un DBEdit


alan85
11-06-2007, 22:14:18
Hola a todos, necesito de su ayuda. Tengo una BD de MySQL y mi aplicacion de hecha en delphi 6 donde tengo distintos DBEdits conectados a distintos campos de mi BD. Y cuando quiero insertar un nuevo reistro mediante los DBEdits o modificar alguno ya existente, no me permite escribir en ellos. Alguien podría darme una solucion, por favor.:confused:

ElDioni
12-06-2007, 18:36:27
Creo que a la pregunta le falta algo de información, aunque voy a intentar responderte, yo hago mi conexion a la bbdd con un adoconnection, a este le engancho un adoquery y a este un datasource y lo dbedit llevan enganchado el datasource y cada uno su datafield para que muestre el valor de ese campo, si lo que quieres es dar de alta o modificar un registro lo que tienes que hacer es, por lo menos en mi caso, adoquery.insert (para dar de alta un registro nuevo) o adoquery.edit (para modificar el registro activo) y cuando terminas hacer un post.
No se si te habré ayudado, espero que si.

fidel
12-06-2007, 23:41:18
Revisa su propiedad ReadOnly, debe estar en False para poder escribir.

karlaoax
12-06-2007, 23:51:36
Como dice fidel, tu propiedad ReadOnly debe estar a True; y tambien checa la prpiedad ENABLED a true.

Si estas tratando de modificar un registro existente checa que tu codigo SQL en este caso la sentencia UPDATE este bien escrita igual tu INSERT para nuevos registros.

:p Karla

marcosl
12-06-2007, 23:59:55
Lo que yo hecho en esos casos es que cuando quiera modificar o insertar nuevos registro es levantar un form nuevo con los edit a modificar, si quieres que aparesca los datos solo tienes que copiar el text del DBEdit al nuevo edit del formulario, luego cuando apretas aceptar envias un Update o un Insert al motor de SQL listo. al menos para mi funciona. si no me explico bien me lo dices. lo re veo. Ô_o

egostar
13-06-2007, 00:01:46
Yo lo que creo es que estas usando un objeto TQuery y por lo mismo tienes la información de solo lectura.

Seria bueno que nos dijeras que componentes estas usando, que código estas usando y de ahi partimos.

Salud OS.

alan85
13-06-2007, 07:36:32
Bueno, antes que nada, gracias a todos por su atención. Voy a tratar de explicarme mejor. Lo que estoy utilizando son TQuerys, la manera en que yo enlazo mi BD (Mysql) es mediante un DataModule en donde pongo un TDatabase al que le asigno el alias y el nombre de la BD, esto lo hago para poderle mandar como parámetros el nombre de usuario y el password para acceder a la BD (de lo contrario cada vez que ejecute una query me pediria el user name y password), ahí mismo agrego un TTable por cada tabla, cada una la ligo con mi BD, y en el Fields Editor de cada una extraigo los campos.... Y es asi, como tengo ligada mi aplicacion con la base de datos.

Ahora, como les explicaba antes, en el form donde tngo los dbedits que extraje de el Fields Editor de Query2 (que esta ligada a la tabla clientes1) y ejecuto esta Query:


Query2.Close();
Query2.SQL.Clear();
Query2.SQL.Add('SELECT clave_cli,nombre,direccion,telefono,e_mail,edad,notas FROM clientes1;');
Query2.OpenDatabase();
Query2.Open;


...y automáticamente me posiciona en el primer registro de la tabla, y mediante un DBNavigator puedo recorrer todos los registro existentes en la tabla. Hasta aqui todo bien (espero me haya explicado un poco mejor) pero el problema es cuando me posiciono en un registro y quiero modificarlo escribiendo en alguno de los DBEdits, esto es lo que no se cómo hacer. :confused:

Lepe
13-06-2007, 11:47:51
¿qué base de datos usas? porque si son tablas de escritorio, la filosofía de trabajo cambia a Cliente/Servidor.

Saludos

alan85
13-06-2007, 20:59:51
¿qué base de datos usas? porque si son tablas de escritorio, la filosofía de trabajo cambia a Cliente/Servidor.

Saludos

Mi base de datos (BD) es elaborada en MySQL. Qué son las tablas de escritorio ????

karlaoax
13-06-2007, 21:52:18
Qué son las tablas de escritorio ???? por ejemplo Paradox, Acces, etc etc..... karla

Lepe
13-06-2007, 22:20:39
Al parecer estas usando el BDE para atacar la Base de datos, que sepas que deberás distribuir el BDE (Borland Database Engine) junto con tu aplicación para que puedas usarla (se traduce en instalar un programa más a tu cliente).

Para colmo de males ese programa está descontinuado, por lo que no hay versiones nuevas ni updates. Además la filosofía de uso no es la adecuada.

Tu base de datos es c/s (Cliente/Servidor o base de datos sql), por lo que nunca se debe usar un TTable con estas bases. La principal razón de estos Sistemas Gestores de Bases de datos es la eficiencia, buscando solo 1 registro (el que necesitas para modificar/visualizar.

Sin embargo, al usar un TTable, internamente se hace un "select * from tabla" por lo que traerá todos los registros que haya, haciendo que el rendimiento caiga empicado conforme vaya creciendo la tabla. Hablando en plata: Estarás usando un ferrari como si fuera un seiscientos.

Si no me equivoco, en MySql se suelen utilizar los componentes ZEOS (equivalente a tus TTables, Tquerys, TDatabase, etc) y éstos si son eficientes con el SGBBDD.

Si estas a tiempo te aconsejo que cambies tus componentes, si no... puedes activar la propiedad RequestLive de tu TQuery para salir del paso, permitiendo editar ese registro.

Saludos

alan85
14-06-2007, 06:56:48
Si estas a tiempo te aconsejo que cambies tus componentes, si no... puedes activar la propiedad RequestLive de tu TQuery para salir del paso, permitiendo editar ese registro.

Saludos


Ps muchas gracias por el dato. La verdad es que no tenía idea de eso, apenas me inicio utilizando MySQL para mis bases de datos. Sin Embargo, estoy algo corto de tiempo como para modificarlo, asi que lo que intenté fue modificar la propiedad RequestLive y por lo menos mi problema de escribir en los DBEdits se solucionó. Tomaré en cuenta la información que me das para próximos proyectos.

Saludos.:)