Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cual es la Mejor forma de Agregar,Modificar y Eliminar en ADO ? (https://www.clubdelphi.com/foros/showthread.php?t=51984)

LENOCB 05-01-2008 22:39:37

Cual es la Mejor forma de Agregar,Modificar y Eliminar en ADO ?
 
No se si hay una única forma, porque esta va a hacer la 1º vez que trabaje con bd, jeje, y preguntaba nomás.- por codigo se puede ??.-
saludos

Caral 06-01-2008 00:23:24

Hola
Por supuesto que se puede, hacer todo lo que quieres con ADO.
Y claro que se puede por codigo, usando sql.
Saludos

LENOCB 06-01-2008 00:53:07

Hola, tengo estas cosas, en form tengo 2 edit, en uno va el nombre y en el otro un numero;
Código Delphi [-]agregar:='Insert Into TGrupos (Nombre,Cod_G) Values ('''+Edit1.Text+''', '''StrToInt(Edit2.Text)'')';
FormGrupos.ADOQuery1.SQL.Add(agregar);

y me tira error en el parte StrToInt(Edit2.Text)'')';

que puede ser ?

Delphius 06-01-2008 00:53:08

Cita:

Empezado por LENOCB (Mensaje 256304)
No se si hay una única forma, porque esta va a hacer la 1º vez que trabaje con bd, jeje, y preguntaba nomás.- por codigo se puede ??.-
saludos

Hola LENOCB, sería oportuno que profundices y aportes mayores detalles sobre tus dudas...

No se para donde apunta tu pregunta, por lo que la respuesta tampoco sabría decirla.

Si te describes mejor, puede que te aporte una respuesta más certera.

Saludos,

Caral 06-01-2008 01:06:16

Hola
Bueno, a por otra.
Código Delphi [-]
FormGrupos.ADOQuery1.SQL.Text:= 'Insert Into TGrupos (Nombre, Cod_G) Values (:Nombre, :Codigo)';
FormGrupos.ADOQuery1.Parameters.Parambyname('Nombre').Value:= Edit1.Text;
FormGrupos.ADOQuery1.Parameters.Parambyname('Codigo').Value:= StrToInt(Edit2.Text);
FormGrupos.ADOQuery1.ExecSQL;
El uso de parametros puede ser un poco mas de trabajo inicial, al final ayudara mucho, te lo aconsejo.
Saludos

LENOCB 06-01-2008 01:13:52

que genia, una vez muchas gracias !!!!

LENOCB 06-01-2008 02:09:28

Hola, ahora antes de agragar tendria que fijarme si ya no existe ese grupo, como se busca con el locate ??

Caral 06-01-2008 14:47:39

Hola
No crees que cada vez pones menos explicaciones?.
Me parece que es importante toda la informacion que se de, el codigo, la idea que se tenga, etc.
Si eres tan escueto en tus preguntas, dificilmente alguien te podra dar alguna solucion.
Por mi parte, necesito mas informacion.
Que es lo que tienes?
Que quieres hacer?
En que parte del programa?
Saludos

LENOCB 06-01-2008 14:56:10

sisi, lo que pasa es que voy a mil !!! jeje, bueno, viste el codigo de agregar ?? ese anda de maravillas, ahora lo que quiero antes de agregar, que busque primero si ya existe ese nombre .-

Caral 06-01-2008 15:15:12

Hola
Código Delphi [-]
FormGrupos.ADOQuery1.Active := False;
FormGrupos.ADOQuery1.SQL.Text := 'Select Nombre From TGrupos WHERE Nombre = :Nombre';
FormGrupos.ADOQuery1.Parameters.Parambyname('Nombre').Value:= Edit1.Text;
FormGrupos.ADOQuery1.Active := True;
If Edit1.Text = FormGrupos.ADOQuery1.Fields[0].Value then
MessageDlg('El Nombre ya Existe',mtError,[mbOK],0)
else
FormGrupos.ADOQuery1.Active := False;
FormGrupos.ADOQuery1.SQL.Text:= 'Insert Into TGrupos (Nombre, Cod_G) Values (:Nombre, :Codigo)';
FormGrupos.ADOQuery1.Parameters.Parambyname('Nombre').Value:= Edit1.Text;
FormGrupos.ADOQuery1.Parameters.Parambyname('Codigo').Value:= StrToInt(Edit2.Text);
FormGrupos.ADOQuery1.ExecSQL;
El locate lo uso de vez en cuando tambien, pero en otras consultas.
Saludos

LENOCB 06-01-2008 15:24:20

muchas gracias Caral, y cuando es conveniente usar el Locate ?

LENOCB 06-01-2008 16:00:57

Hola, de nuevo, ahora me salta un error ,acá pongo el codigo para que vean:

Código Delphi [-]procedure TFormGrupos.BitBtn1Click(Sender: TObject); //Agrega un Grupo sino está en la Tabla TGrupos.
Var agregar:String;
CO:Integer;
begin //Primero Buscar el Registro para ver si está . Y verifica tambien el codigo
FormGrupos.ADOQuery1.Active := False;
FormGrupos.ADOQuery1.SQL.Text := 'Select Nombre From TGrupos WHERE Nombre = :Nombre';
FormGrupos.ADOQuery1.Parameters.Parambyname('Nombre').Value:= Edit1.Text;
FormGrupos.ADOQuery1.Active := True;
If Edit1.Text = FormGrupos.ADOQuery1.Fields[0].Value then begin MessageDlg('El Grupo : '+Edit1.Text+' ya Existe ',mtError,[mbOK],0);
Edit1.text:='';
Edit1.SetFocus;
end else begin //Ahora me fijo el Código si ya existe.
//FormGrupos.ADOQuery1.SQL.Clear;
FormGrupos.ADOQuery1.Active := False;
FormGrupos.ADOQuery1.SQL.Text:= 'Select Cod_G TGrupos From TGrupos Where Cod_G = :Cod_G';
FormGrupos.ADOQuery1.Parameters.Parambyname('Cod_G').Value:= StrToInt(Edit2.Text);
FormGrupos.ADOQuery1.Active:=true;
If (StrToInt(Edit2.Text)) = FormGrupos.ADOQuery1.Fields[0].Value Then begin MessageDlg('El Código: '+Edit2.Text+', ya existe', mtError,[mbOk],0); Edit2.Text:='';
Edit2.SetFocus;
end else //Esta todo bien entonces agrego.
begin FormGrupos.ADOQuery1.Active := False; FormGrupos.ADOQuery1.SQL.Text:= 'Insert Into TGrupos (Nombre, Cod_G) Values (:Nombre, :Codigo)';
FormGrupos.ADOQuery1.Parameters.Parambyname('Nombre').Value:= Edit1.Text;
FormGrupos.ADOQuery1.Parameters.Parambyname('Codigo').Value:= StrToInt(Edit2.Text);
FormGrupos.ADOQuery1.ExecSQL;
end;
end;


y lo que esta en verde ,me tira error :"Error de sintaxis (falta operador) en la expresion de cunsulta Cod_G TGrupos"

Caral 06-01-2008 16:11:01

Hola
No veo ningun error de sintaxis, puede ser que que campo no sea como lo planteas.
Prueba asi:
Código Delphi [-]
FormGrupos.ADOQuery1.SQL.Text:= 'Select Cod_G TGrupos From TGrupos Where Cod_G = :Cod';
FormGrupos.ADOQuery1.Parameters.Parambyname('Cod').Value:= Edit2.Text;
Saludos

Caral 06-01-2008 16:24:06

Hola
Cuando hay alguna duda de lo que envia o como lo envia la consulta es bueno generar un mensaje, asi veras exactamente donde esta el error.
Algo asi:
Código Delphi [-]
FormGrupos.ADOQuery1.SQL.Text:= 'Select Cod_G TGrupos From TGrupos Where Cod_G = :Cod';
FormGrupos.ADOQuery1.Parameters.Parambyname('Cod').Value:= Edit2.Text;
Showmessage(FormGrupos.ADOQuery1.SQL.Text);
Antes de abrir o activar el query.
Si la consulta esta mal hecha o no coinciden los datos, los veras facilmente.
Saludos

LENOCB 06-01-2008 16:57:53

ya solucione el error, esta poniendo Select Cod_G TGrupos (cuando TGrupos no es un campo de la tabla , sino la tabla misma) jeje, ahora me sale otro error: " No se han especificados algunos valores para alguno de los parametros solicitados" , el error lo tira en el mismo lugar donde lo tiró antes

Caral 06-01-2008 17:07:59

Hola
La logica del mensaje es:
No has puesto nada en el edit2.??:confused:
Parametros???????:confused:
Cuales tienes, ya los ves????, as especificado los parametros???.:confused:
La computación (vista desde el punto de vista de este Novato) es logica.;)
Hay cosas amigo en las que no se pude ayudar, hay que buscarlas en el programa, tratar de analizarlas y buscarle la solucion.
Siento que si sigo haciéndote la tarea no te estoy haciendo ningún favor, no vas a aprender la lógica de la programación.
No digo que no te quiera ayudar, digo que tienes que caminar un poco solo, asi vas a aprender mas.
Busca el problema, la lógica del mismo y si después de eso no puedes solucionarlo entonces llama a un exorcista.:D:D o bien este Novato tratara de ver como te ayuda.:D;)
Saludos

LENOCB 06-01-2008 17:19:27

no se, es mas puse un edit mas para poner ahí lo que me devolvia la consulta y me tira el mismo error, y el edit2 tiene el numero (el cod) que uso para hacer la consulta, hasta intenté hacer otro adoquery2, para que no sea al mismo adoquery1, y me sigue tirando el mismo error :rolleyes::rolleyes:

Caral 06-01-2008 17:28:28

Hola
Codigo amigo, codigo.
As cambiado algo?, donde?, que?.
Saludos

LENOCB 06-01-2008 17:38:15

Código Delphi [-]procedure TFormGrupos.Edit1Exit(Sender: TObject);
begin //Si el Campo del Nombre no está completo salta un error.
If (Edit1.Text='')then begin MessageDlg('Este Campo debe completarse ',mtError,[mbOk],0);
Edit1.SetFocus;
end;
end;

procedure TFormGrupos.BitBtn1Click(Sender: TObject); //Agrega un Grupo sino está en la Tabla TGrupos.
Var agregar:String;
CO:Integer;
begin //Primero Buscar el Registro para ver si está . Y verifica tambien el codigo
FormGrupos.ADOQuery1.Active := False;
FormGrupos.ADOQuery1.SQL.Text := 'Select Nombre From TGrupos WHERE Nombre = :Nombre';
FormGrupos.ADOQuery1.Parameters.Parambyname('Nombre').Value:= Edit1.Text;
FormGrupos.ADOQuery1.Active := True;
If Edit1.Text = FormGrupos.ADOQuery1.Fields[0].Value then begin MessageDlg('El Grupo : '+Edit1.Text+' ya Existe ',mtError,[mbOK],0);
Edit1.text:='';
Edit1.SetFocus;
end else begin //Ahora me fijo el Código si ya existe.
//FormGrupos.ADOQuery1.SQL.Clear;
//FormGrupos.ADOQuery1.Active := False;
FormGrupos.ADOQuery1.SQL.Text:= 'Select Cod_G From TGrupos Where Cod_G = :Cod';
FormGrupos.ADOQuery1.Parameters.Parambyname('Cod').Value:=StrToInt(FormGrupos.Edit2.Text);
FormGrupos.ADOQuery1.Active:=true;
If StrToInt(Edit2.text) = FormGrupos.ADOQuery1.Fields[0].Value Then begin MessageDlg('El Código: '+Edit2.Text+', ya existe', mtError,[mbOk],0);
Edit2.Text:='';
Edit2.SetFocus;
end else //Esta todo bien entonces agrego.
begin FormGrupos.ADOQuery1.Active := False; FormGrupos.ADOQuery1.SQL.Text:= 'Insert Into TGrupos (Nombre, Cod_G) Values (:Nombre, :Codigo)';
FormGrupos.ADOQuery1.Parameters.Parambyname('Nombre').Value:= Edit1.Text;
FormGrupos.ADOQuery1.Parameters.Parambyname('Codigo').Value:= StrToInt(Edit2.Text);
FormGrupos.ADOQuery1.ExecSQL;
end;
end;


he probado mandandole el numero directo es decir :
FormGrupos.ADOQuery1.Parameters.Parambyname('Cod').Value:= 4
por ejemplo y salta el mismo error

Caral 06-01-2008 17:58:12

Hola
No veo el error
Por que esto:
Código Delphi [-]
StrToInt(FormGrupos.Edit2.Text);
Cual es el form FormGrupos??
Donde esta el edit2 ?? esta en el mismo form?
Pusiste un mensaje donde te indique para saber que datos envia?
Saludos


La franja horaria es GMT +2. Ahora son las 15:27:38.

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