Delphi - error en select

 
Vista:

error en select

Publicado por Roberto (13 intervenciones) el 16/12/2018 19:46:26
Buenas.
Estoy intentando pasar los campos de una query filtrada por ID a unos tedit y siempre me da error la select.
El código es este. La variable cte es ya integer y no se si se puede comparar con el ID asi directamente o hay que hacerlo de otra forma el caso es que siempre me da un error.
Lo que quiero es que dependiendo de los que se teclee en un tedit llamado ncliente.text me busque los registros correspondientes en la tabla de clientes y me rellene los tedti de nomb.text, rs.text y dir.text con lo que traigan esos campos.
Algo a priori muy sencillo pero que no deja de darme errores.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TFpedidos.AplicarClick(Sender: TObject);
var
cte : integer;
begin
cte := strtoint(ncliente.text);
//showMessage(inttostr(cte));
with query do
  begin
        close;
        sql.clear;
        sql.text:='select * from clientes where ID = cte';
        open;
        nomb.Text:=FieldByName('NOM_CLI').AsString;
        rs.Text:=FieldByName('RS_CLI').AsString;
        dir.Text:=FieldByName('DIR_CLI').AsString;
        query.Free;
 
  end;
 
end;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

error en select

Publicado por Roberto (13 intervenciones) el 16/12/2018 20:22:47
Concretamente el error que me aparece es este:

Raised exception Class EAccessviolation with message 'access violation at address 0064F842 in module Project.exe'. Read of address 000000000'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error en select

Publicado por Roberto (13 intervenciones) el 16/12/2018 20:45:06
De hecho me aparece con cualquier operacion que quiero hacer con la query.
select , insert .......................
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error en select

Publicado por salvador (1 intervención) el 17/12/2018 08:34:14
Hola Roberto,

No le estas pasando ningún parametro a la Query, yo parametros no utilizo, pero puedes poner en la línea 11 esto.

sql.text:='select * from clientes where ID = ' + ncliente.Text;

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error en select

Publicado por Roberto (13 intervenciones) el 18/12/2018 08:17:21
Gracias me fué perfecto. Tengo otro problema.
Estoy intentando hacer un insert con valores de los tedits y me da problemas de valores desconocidos.
Te pongo el código a ver si sabes como formar el insert .
Los campos de la base de datos son integer y el de fecha date año/mes/dia
Lo he probado de varias maneras y siempre me da algun error y no me inserta.
Gracias y un saludo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TFpedidos.GuardarClick(Sender: TObject);
var
factura : integer;
cte : integer;
fecha : Tdate;
 
begin
with query do
begin
  factura := strtoint(nfactura.Text);
  fecha := strtodate(ffactura.Text);
  cte := strtoint(CBCLIENTES.Text);
   Close;
  SQL.Clear;
  SQL.Add('INSERT INTO pedidos_cab(FACTURA,CODIGO_CTE,FECHA) VALUES ('+strtoint(nfactura.Text)+','+strtoint(CBCLIENTES.Text)+','fecha')');
  QUERY.ExecSQL;
 end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error en select

Publicado por E.T. (1203 intervenciones) el 18/12/2018 20:47:53
Aqui hay una pequeña confusión, al hacer cualquier sentencia en un query, siempre se manda un string dentro del sql del query, debería ser algo como esto:
1
SQL.Add('INSERT INTO pedidos_cab(FACTURA,CODIGO_CTE,FECHA) VALUES ('+nfactura.Text+','+CBCLIENTES.Text+',' +QuotedStr(fecha)+')');
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error en select

Publicado por Roberto (13 intervenciones) el 18/12/2018 22:25:12
Muchas gracias me sirvió perfectamente.
Tengo otro problema ahora te explico. Tengo un formulario de facturación en el que tengo 3 tedit.
factura - fecha - cliente

estos edits serian el encabezado del formulario. Se rellenan y se guardan en una tabla llamada facturas_cab.
Esto de momento me funciona bien. Despues tengo un DBGrid donde se muestra el detalle de la factura.
Este DBGrid contendría los campos factura_det - Articulo - Cantidad - Importe - %IVa - CuotaIVa - TotalLinea y tienen que estar relacionados con la cabecera de la factura por el campo factura(cabecera) y factura_det(detalle).

Quiero poder pasarle la tabla al DBGrid por código y no con controles IBTable o IBQuery.
En la empresa en la que acabo de empezar a trabajar programan todo con código y no usan los controles.
No sé muy bien como pasarle una tabla por código al DBGrid ni programar los eventos de las columnas del DBgrid por ejemplo para cuando se introduzca la cantidad o el porcentaje de iva calcule con una formula el total linea y a su vez calcule el total del pedido.

Si me puedes dar unas pequeñas indicaciones ya creo que podré con ello.

Un saludo y gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar