Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Como asignar un select a un Edit?? (https://www.clubdelphi.com/foros/showthread.php?t=76003)

Niiña 03-10-2011 17:54:54

Como asignar un select a un Edit??
 
Hola Estoy realizando una aplicación que muestra en un formulario las consultas que le realizo a la base de datos.. Por los momentos he podido realizar insert, pero no se como realizar los select y asignarselos a un Edit o label.. Alguien por favor podría darme la sintaxis..

oscarac 03-10-2011 17:57:26

mmmmm
la verdad no te he entendido muy bien
podrias dar un poco mas de detalles?

en el edit quieres la cadena?
en el edit quiers el resultado de la consulta?

Casimiro Notevi 03-10-2011 18:39:25

Tampoco estaría mal que dijeras de qué base de datos se trata :)

oscarac 03-10-2011 18:44:38

digamos que lo que quieres es asignarle a un edit el valor de un campo de la consulta resultante, entonces lo asignarias mas o menos asi

Código Delphi [-]
 
Edit1.text := query.fieldbyname('Campo').value

aunque lo mas conveniente es usar DBEDITS, los cuales asumen el valor del campo en forma automatica, porque estan asociados a traves de un datasource

esperamos tus comentarios

Niiña 03-10-2011 18:51:42

Esto es lo que quiero hacer.. Una consulta que muestre el max numero de la tabla y le sumo uno para agregarlo a la base de datos como id.
Código Delphi [-]
Query.SQL.Clear;
Query.SQL.Add('select max(Tabla1.idtabla)+1 FROM Tabla1');
Query.Open;
Edit1.Text:=(Query.FieldByName('Idtabla').AsString);

oscarac 03-10-2011 19:06:07

Código Delphi [-]
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('Select Max(idTabla)+1 From Tabla1');
query1.Open;
Edit1.Text := IntToStr(query1.Fields[0].AsInteger);
y si lo pruebas asi?

Niiña 03-10-2011 19:07:09

Bueno necesito el resultado de la consulta en un Edit y en un Label.

No con un BDEdit no lo puedo hacer xq los campos después no los puedo modificar.. Si existe como modificar los datos todavía no lo se. La bd que uso esta en Firebird. Lo que tengo, lo pruebo pero me da error.. Modifique colocandole el .value y me da este error:

Query: Field not found: "idtabla".

No se si estoy haciendo algoo malo o falta algun detalle....

oscarac 03-10-2011 19:08:32

pues... tienes un campo llamado idtabla en tu tabla?
si no lo tienes, es por eso que se genera el error

Niiña 03-10-2011 19:17:22

Si. si lo tengo.. Pero no tengo idea de xq el error.. Ah y acabo de probar con lo que acabas de colocar y tambien me da error:

Operation cannot be performed on an active dataset.

oscarac 03-10-2011 19:25:37

seria bueno que colocaras mas codigo no solo la porcion donde tratas de jalar el numero maximo sino lo que continua despues de eso...

quiza lo que estes haciendo despues sea el problema.. porque la instruccion que te han pasado deberia funcionar a la perfeccion

Niiña 03-10-2011 19:37:42

Código Delphi [-]
  ShowMessage('Ingresando datos');
  transaccion.Active:=false;
  Query.Close;
  Query.SQL.Clear;
  Query.SQL.Add('select max(Tabla1.Idtabla)+1 FROM Tabla1');
  Query.Open;
  Edit1.Text:=IntToStr(Query.Fields[0].AsInteger);
  Query.ParseSQL:=false;
  conexion.ExecuteDirect('INSERT INTO Tabla1 (Idtabla, nombretabla) values ('+Edit1.Text+','+Edit2nombre.Text+')');
  transaccion.Commit;
  ShowMessage('El registro ha sido ingresado.');
  transaccion.Active:=true;

oscarac 03-10-2011 19:53:52

depura y dinos donde es que salta el error

Niiña 03-10-2011 20:28:57

uhmm.. Bien.. Ya tengo el dato que quiiero. La respuesta de la consulta en el Edit ya se muestra.

Lo del Error es una exception Noc xq pero se da cuando le doy al boton que tengo como registrar..que realiza el codigo que esta arriba.

y el error es: Conexion : PrepareStatement:
Dynamic SQL Error
SQL error code=-104
token unknown -line 1 , column 276

ecfisa 03-10-2011 20:37:18

Hola Niiña.

No sé con que componentes estés trabajando pero podés hacer todo utilizando sólamente el query:
Código Delphi [-]
  with IBQuery do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT MAX(ID_TABLA)+1 FROM TABLA1');
    Open;
    Edit1.Text:= IntToStr(Query.Fields[0].AsInteger);
    Close;
    SQL.Clear;
    SQL.Add('INSERT INTO TABLA1 (ID_TABLA, NOMBRETABLA) ');
    SQL.Add('VALUES (:ID, :NOMBRE)');
    ParamByName('ID').AsString:= Edit1.Text;
    ParamByName('NOMBRE').AsString:= Edit2nombre.Text;
    ExecSQL;
  end;
  IBTransaction.Commit;

Un saludo.

Niiña 04-10-2011 19:58:26

Gracias me sirvio mucho su ayudaa.. xD


La franja horaria es GMT +2. Ahora son las 13:15:49.

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