problemas con inserciones, modificaciones y eliminaciones en Interbase con Delphi
hola!:
soy un poco novata con delphi pero aún asi tengo q hacer un proyecto que consiste en dar altas, bajas y eliminaciones utilizando como servidor Interbase y uniendolo a Delphi mediante los controles convenientes. Voy a intentar explicarme lo mejor posible para asi que sea más fácil entenderlo. En mi formulario tengo lo siguiente: - la conexion con su ibtransaction - un dbgrid1 ( q muestra algunos campos de una tabla) - unos dbedit -dos datasuouce (datasource1 y datasource2) - un ibtable1 y un ibquery1 - botones de Nuevo, modificar, eliminar Tengo relacionado el el datasource1, con el ibtable1 y con el dbgrid1. Por otra parte, tmb tengo relacionado el ibquery1 con el datasource2 que lo que hace es mostrarme toda la información del control que selecciono en el dbgrid ya que en el dbgrid solo me muestra el campo dni y el nombre. Cuando hago una inserción, llamo a un formulario externo (por manias mias), que tengo tmb dbedit relacionados al ibtable anterior. Mi problema es que he probado varios modos de insertar pero no me actualiza el ibtable por más que le ponga refresh o lo que sea . He probado a crear un Dataset y ponerle unit1.mdichild1.ibdataset1.insertsql.add ( sentencia sql) pero me lo inserta pero no me actualiza nada :( Sé que esto puede ser largo de explicar pero sé como hacer cosas con bases de datos, aunque no en delphi pero por más cosas que he probado no puedo hacer nada ya que no consigo que me actualice los datos :( . Saludos y gracias |
Has creado las correspondientes sentencias de Inserción, Modificación, Borrado y Actualización para los TIBTable y TIBQuery que tienes ?
Para ello deberas hacer Click derecho encima del componente y elegir 'Dataset Editor', o también lo puedes hacer a través de las propiedades correspondientes (InsertSQL, ModifySQL, DeleteSQL, RefreshSQL). |
No utilices un TIBQuery para hacer el alta y un TIBTable para ver la tabla.
Recuerda, si ejecutas un insert sobre la base de datos a través de un TIBQuery, tu TIBTable no se entera, hasta que no se cierra y se vuelve a abrir, porque es una base de datos cliente-servidor. Si defines un TIBUpdateSQL y lo vinculas al TIBTable, y luego ejecutas el alta con el método Insert del TIBTable. Recomendación personal: acostumbrate a usar el TIQuery, y combinado con el TIBUpdateSQL, podrás hacerlo todo, tablas simples, consultas complejas, procedimientos que devuelven resultados... |
Cita:
ibtable1.insert //comprobaciones de los datos q se han introducido ibtable1.post también prove de poner esto: IBUpdateSQL1.InsertSQL.Add('INSERT INTO Cliente(dni_clie) VALUES ( ''' + dbedit1.Field.AsString + '' + ')'); pero me da error. Siento si me equivoco en tonterias pero es que hasta ahora solo habia programado en Visual Basic y en C++ y este lenguaje lo estoy utilizando desde hace 2 semanas. Saludos y gracias por la ayuda. |
Hola Nereida
Creo que te seria util leer la cara oculta de delphi 4... te puede aclarar varias cosas...Tambien te recomendaria que te dieras una buelta por la Wiki.. tambien existen varios ejemplos Bueno... pasando a tu tema... Yo trabajo con Interbase 6, Delphi 7 y componente IBX Cuando desarrollo un proyecto, creo un Formulario de Tipo DataModule... lo nombro como Datos y en él dejo todos los componentes IBX para conexión al Interbase... estos son: -( 1 ) TIBDatabase -> conexión a la base... direcion..ruta..archivo -( n ) TIBQuery -> conexión a tablas y/o procesos de actualización de registros -( n ) TIBTransaction (hacer doble click y dejar en Read Committed para reflejar actualizaciones) Para insertar un registro, utilizo un codigo similar al que sigue
Bueno... espero que este código te sea de ayuda.. cualquier cosa..sigue preguntando.. Salu2:p:D |
Cita:
|
Cita:
IBUpdateSQL1.SQL.Text:='UPDATE Cliente SET nom_clie = ''' + dbedit2.field.AsString + ''; pero me decia q esperaba un [ en vez de un punto pq me parece q tenia q ponerle algo en la propiedad de SQL pq cuando la ponia me decia q pusiera el tipo, por lo q prové a poner modifySQL pero no lo reconocia :( después puse: unit1.MDIChild1.IBUpdateSQL1.modifySQL.Add('UPDATE Cliente SET nom_clie = ''' + dbedit2.field.AsString + ''); unit1.MDIChild1.IBUpdateSQL1.RefreshSQL.Add ('UPDATE Cliente SET nom_clie = ''' + dbedit2.field.AsString + ''' + WHERE dni_clie= ' + dbedit1.Field.AsString); pero me da error con las claves primarias. Siento ser tan pesada pero es que me cuesta mucho. Saludos y gracias a todos |
Cita:
Muchas gracias :D Saludos |
La franja horaria es GMT +2. Ahora son las 06:16:43. |
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