Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-02-2005
Fita Fita is offline
Miembro
 
Registrado: jul 2003
Ubicación: Pilar - Argentina
Posts: 216
Poder: 21
Fita Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 21-02-2005
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
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;
Con este codigo podras Agregar un registro a tu tabla

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;
espero que te sirva esto....
__________________
BlueSteel

Última edición por BlueSteel fecha: 21-02-2005 a las 21:20:13.
Responder Con Cita
  #3  
Antiguo 21-02-2005
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
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;
y al eliminar haces lo siguiente:
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
se supone que los datos los estabas desplegando a través de un DBGrid.... el que esta unido a IBQ_Select.... y para eliminar, solo pinchas en la fila o registro que quieres... presionas eliminas y ejecutas el codigo ligado al IBQ_Edit...
__________________
BlueSteel

Última edición por BlueSteel fecha: 21-02-2005 a las 21:24:20.
Responder Con Cita
  #4  
Antiguo 21-02-2005
Fita Fita is offline
Miembro
 
Registrado: jul 2003
Ubicación: Pilar - Argentina
Posts: 216
Poder: 21
Fita Va por buen camino
Ok

Gracias!!!
Me has aclarado muchas dudas...

Saludos
Fita
Responder Con Cita
  #5  
Antiguo 22-02-2005
Fita Fita is offline
Miembro
 
Registrado: jul 2003
Ubicación: Pilar - Argentina
Posts: 216
Poder: 21
Fita Va por buen camino
Question 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 ?
Responder Con Cita
  #6  
Antiguo 23-02-2005
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
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
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


La franja horaria es GMT +2. Ahora son las 16:39:28.


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