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 28-12-2007
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Uso TIBDataset

Hola amigos... una consulta con respecto al uso del Dataset...

Tengo un TIBDataset, conectado a una base de datos Firebird 2.01

Necesito insertar, editar y eliminar ciertos registros de cierta tabla.

Para buscar que registro voy a editar o eliminar utilizo este codigo:

Código Delphi [-]
//desde aqui comienzo a vuscar el registro que quiero editar
ibdataset1.close;
ibdataset1.selectsql.clear;
ibdataset1.selectsql.add('select * from claves');
ibdataset1.selectsql.add('where usuario ='+quotedstr(edit1.text));
ibdataset1.open;
//aqui termino de buscar el registro que voy a editar
 
//comienzo a editar el registro
ibdataset1.edit;
ibdataset1.fieldbyname('clave').asstring:=edit2.text;
ibdataset1.post;
//termino con una transaccion para que se lleve a cabo el cambio
ibtransaction1.commit;

¿ESTA BIEN HECHO ESTO? ... SINO, DE QUE OTRA MANERA LO PUEDO HACER?

gracias por su ayuda.... no he podido encontrar informacion sobre este componente.... me ha costado utilizarlo
Responder Con Cita
  #2  
Antiguo 28-12-2007
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.084
Poder: 18
juanelo Va por buen camino
Que tal,
Primero que nada por default un TIBQuery es solo de "lectura", es decir, no puedes editarlo y modificar sus datos esperando que se modifiquen en la tabla.
Para eso existirian 2 alternativas:

1.-Toma el valor que quieres grabar y lo moadificas o lo insertas con una sentencia SQL.

2.-Utiliza un ClientDataSet y su DataSetProvider para poder hacer las operaciones que necesites, y posteriormente haces un ApplyUpdates.

Saludos
Responder Con Cita
  #3  
Antiguo 28-12-2007
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
hola juanelo.... no estoy utilizando un TIBQuery, sino un TIBDataset

El TIBDataset es el que estoy tratando de entender como es que funciona...

¿Estará bien el codigo que utilizo segun mi anterior mensaje?

Saludos
Responder Con Cita
  #4  
Antiguo 28-12-2007
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.084
Poder: 18
juanelo Va por buen camino
Ok, si no me di cuenta que es unn TIBDataSet, efectivamente puedes consultar los datos por medio de una sentencia y hacer operaciones con ellos y enviarlas con Post. Es Correcto.
Saludos
Responder Con Cita
  #5  
Antiguo 28-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
mjj, no te compliques tanto la vida. Si bien es cierto que lo has hecho bien, puedes hacerlo en tiempo de diseño (con asistentes que te propondrán todas las sqls de forma estandard) evitando tener que escribir código.

En principio, rellena la propiedad select del TIbdataset en el inspector de objetos. Después, boton derecho sobre el TIbDataset y "Dataset Editor" o algo así (yo uso los MDOLIB y en IBX no sé como se llamará la opción del menú). Como dije, eso te propone unas sqls estandard, que después de aceptar las pantallitas, puedes modificar para ajustarla a tus necesidades.

La sql de Select yo pondría:
Código SQL [-]
select * from claves where usuario = :Nombre;
Y en el evento BeforeOpen del TIBdataset:
Código Delphi [-]
 ibdataset1.parambyname('Nombre') := edit1.text; // no hace falta el quotedstr;

Tu código quedaría resumido así:
Código Delphi [-]
//desde aqui comienzo a vuscar el registro que quiero editar
ibdataset1.close;
// ahora se ejecuta el evento before open y se asigna el usuario buscado
ibdataset1.open;
//aqui termino de buscar el registro que voy a editar

if not ibdataset.Empty then
begin
  //comienzo a editar el registro
  ibdataset1.edit;
  ibdataset1.fieldbyname('clave').asstring:=edit2.text;
  ibdataset1.post;
  //termino con una transaccion para que se lleve a cabo el cambio
end;
ibtransaction1.commit;

PD: IBX no será compatible con Firebird, te sugiero otros componentes de acceso, como los MDOLIB (su desarrollo está parado pero son funcionales), Zeos, ADO, etc.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 28-12-2007
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Hola lepe.. segui tu sugerencia y me arroja un error:

cannot modify a read-only Dataset... he buscado pero no he podido solucionarlo... el ibdataset no tiene la propiedad readonly...

bueno no se que puede ser... ayuda porfa
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
Ayuda con TIBDataSet ZRR Firebird e Interbase 9 11-10-2005 16:42:20
Problema con TIBDataSet lpaburto Conexión con bases de datos 7 04-10-2005 23:13:23
Problemas con el TIBDATASET (VIH)Lestat Conexión con bases de datos 4 03-07-2005 18:19:41
Búsquedas y TIBDataSet Clantt Conexión con bases de datos 0 12-08-2004 01:01:07
Orden en TIBDataset barman Conexión con bases de datos 6 27-11-2003 10:40:25


La franja horaria es GMT +2. Ahora son las 11:01:31.


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