FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
algo basico pero no me sale
Hola a todos.
Necesitaria el empujon inicial para un form muy básico. Estoy migrando mis aplicaciones BDE a Interbase. Cabe aclarar que soy muy novato en Interbase. Basicamente tengo un form con una tabla, un pagecontrol que muestra los campos de la tabla el la pagina2, un dbGrid que muestra la tabla y una barra de botones en donde el usuario selecciona la tarea a realizar: Agregar un registro: Tabla1.Insert; Pagecontrol.ActivePage := Page2 Modificar un registro: Tabla1.edit; idem anterior Guardar cambios: Tabla1.Post; Cancelar Cambios: Tabla1.Cancel Borrar registro: Tabla1.delete; Como puedo hacer esto mismo en SQL?; he puesto un IBdataset con las sentencias sql que genera automaticamente pero no se como aplicarlas. Cualquier ayuda será muy bienvenida Saludos a Todos |
#2
|
||||
|
||||
Primero que nada debes tener lo siguiente en tu Formulario :
- Componente TIBDatabase (Declaración de la base de datos de Interbase) - Componente TIBTransaction (declaración de la transacción de los datos) - Componente TIBQuery (Declaración de las sentencias a ejecutar ) llamaremos a : - TIBDatabase (IBD_Compras) - TIBTransaction (IBT_Compras) - TIBQuery (IBQ_Compras ) Con este codigo podras eliminar un registro de tu tabla Código:
// La idea del Try Except,, es que no de error si quieres borrar registros y la base este vacia Try If MessageDlg('Seguro de Eliminar el Area '+ #13+#13+IBQ_Select['Are_Detalle'], mtConfirmation, [mbYes, mbNo], 0) = mrYes then Begin IBQ_Compras .SQL.Clear; IBQ_Compras .SQL.Add('Delete From "Area" Where "Are_Codigo"=:Var1'); IBQ_Compras .Params[0].AsString := vCod.Text; IBQ_Compras .ExecSQL; IBT_Compras .Commit; End Except ShowMessage('No existen registros que se puedan eliminar'); End; Código:
If MessageDlg('Seguro de Agregar este Centro de Costos ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then Begin IBQ_Compras .SQL.Clear; IBQ_Compras .SQL.Add('Insert Into "Area" ("Are_Codigo","Are_Detalle","Are_Encargado")'); IBQ_Compras .SQL.Add('Values (:P1,:P2, :P3)'); IBQ_Compras .Params[0].AsString := vCod.Text; IBQ_Compras .Params[1].AsString := vDes.Text; IBQ_Compras .Params[2].AsString := CB_Jefe.Text; IBQ_Compras .ExecSQL; IBT_Compras .Commit; If MessageDlg('El Area ya Fue Ingresado'+ #13+#13+'Desea ingresar Otra ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then vCod.SetFocus Else Panel3.Visible := False; End;
__________________
BlueSteel Última edición por BlueSteel fecha: 21-02-2005 a las 21:20:13. |
#3
|
||||
|
||||
Tambien te sugiero lo siguiente ( al menos yo lo utilizo asi.. y me funciona super bien...)
Declarar la base de datos en tu Form principal (Puede ser el menú....) en los form que deseas trabajar, declaras lo siguiente: por ejemplo un Form para agregar clientes.... - declaras 2 transacciones - declaras 2 Querys la idea es que las transacciones esten unidas a la base que declarastes en el menu principal... entonces haces lo siguiente : IBT_Select (primera transaccion) IBQ_Select (primer Query) IBT_Edit (Segunda transaccion) IBQ_Edit (Segundo Query).... Con esto haces más rapido el acceso a los datos.... por ejemplo... cuando habres el form.. activas el IBQ_Select de la siguiente forma : Código:
IBQ_Select.Close; IBQ_Select.SQL.Clear; IBQ_Select.SQL.Add('Select * from "Clientes" Order By "Cli_Codigo"'); IBQ_Select.Open; Código:
IBQ_Edit.SQL.Clear; IBQ_Edit.SQL.Add('Delete From "Area" Where "Are_Codigo"=:Var1'); IBQ_Edit.Params[0].AsString := IBQ_Select['Are_Codigo']; IBQ_Edit.ExecSQL; IBT_Edit.Commit; // Actualizas los cambios en la Base IBT_Select.Commit; // Actualizas los cambios en la Base
__________________
BlueSteel Última edición por BlueSteel fecha: 21-02-2005 a las 21:24:20. |
#4
|
|||
|
|||
Ok
Gracias!!!
Me has aclarado muchas dudas... Saludos Fita |
#5
|
|||
|
|||
Funciona, pero tengo otra pregunta
Con tus ejemplos hice una pequeña aplicación y anda de maravilla; altas, bajas, modificaciones, pero tengo una duda: Con un objeto Ttable (BDE) puedes arrastrar un field al form y ya tienes acceso a los datos. Basta con hacer un table1.edit y listo.
Con SQL como edito los datos? suponte un grid que muestra el conjunto de datos, al hacer doble click en una linea del grid debo editar el registro para que el usuario lo modifique. Puedo editar directamente el field del query o debo (como supongo; ya que lo hice practicando tus consejos) mover los datos de dicha fila a objetos Tedit y luego aplicar el update dando a cada param[x] el valor de cada edit.text ? |
#6
|
||||
|
||||
Para modificar datos en un DBGrid que este enlazado a un Query.. se deben tener en consideracion los siguientes puntos:
- Para que puedas actualizar los datos debes cambiar la propiedad RequesLive del Query... Query1.RequestLive := True; con esto podras modificar tus datos desde el DBGrid, ahh... y debes dejar desactivar la propiedad ReadOnly del mismo... DBGrid1.ReadOnly := False; La Opcion de mover los datos a campos TEdit tambien es una alternativa, aunque te sugiero que utilices los DBEdit
__________________
BlueSteel |
|
|
|