Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   tipo de datos varchar (https://www.clubdelphi.com/foros/showthread.php?t=88953)

luis77 02-09-2015 16:51:09

tipo de datos varchar
 
hola buenos dias
estoy realizando una consulta busqueda la cual mi base de datos tengo una tabla clientes
la cual estoy buscando por nombre .
mi codigo.

tabla clientes:
nombre= tipo de datos varchar;

Código Delphi [-]

procedure TForm1.boton1Click(Sender: TObject);

begin
adoquery1.Close;
ADOQUERY1.Parameters.ParamByName('nombre').Value:=Edit1.Text;
adoquery1.Open;
end;
pero me marcar error
"error al convertir el tipo de datos varchar a bigint."
espero que alguien me puedo ayudar
gracias.....:(

Casimiro Notevi 02-09-2015 17:17:29

¿Y la consulta?

luis77 02-09-2015 17:38:05

lo saque
de aqui el ejemplo crees k ya no es tan veraz??

http://www.forokeys.com/foro/demos-y...-sql-y-delphi/
gracias por responder saludos

Casimiro Notevi 02-09-2015 17:51:35

Vale, pero la pregunta es ¿cual es la consulta sql que tú haces?, ¿cual es la tabla de la base de datos? ¿qué campos tienes y de qué tipo son? ¿qué componentes de bases de datos tiene asociado? ¿alguno de tipo blob para imagen? etc.

luis77 02-09-2015 18:20:06

1 Archivos Adjunto(s)
la primera compa
clientes
te adjunte la imagen de mi base
tengoa sociado
2 grid,1 adotable ,2 datasource, 1 caja de texto y un boton
en parameters le dejo string
saludos ...
gracias por tomar tu tiempo

AgustinOrtu 02-09-2015 18:32:35

No se ve nada la foto

No es necesario que configures nada desde tiempo de diseño (a mi personalmente me parece muy engorroso)

Es mucho mas sencillo y claro hacerlo por codigo; Andar revolviendo propiedades y ver que componente se conecta con quien, y demas en tiempo de diseño es mala idea

Basicamente lo que tenes que hacer es algo asi:

Coincidencia total/exacta:

Código Delphi [-]
  adoquery1.SQL.Text := ' SELECT * FROM NombreTabla WHERE NombreCampo = :Nombre ';
  adoquery1.Close;
  adoquery1.Parameters.ParamByName('nombre').Value := Edit1.Text;
  adoquery1.Open;

Coincidencia parcial:

Código Delphi [-]
  adoquery1.SQL.Text := ' SELECT * FROM NombreTabla WHERE NombreCampo LIKE :Nombre ';
  adoquery1.Close;
  adoquery1.Parameters.ParamByName('nombre').Value := Edit1.Text + '%';
  adoquery1.Open;

Tener en cuenta que el campo que especifiques en NombreCampo debe ser de tipo string en la base de datos. Dependiendo de la misma puede ser varchar, nvarchar, text, etc

luis77 02-09-2015 19:19:36

gracias por tu respuesta lo intentare
saludos

luis77 02-09-2015 20:00:14

me indica parameters no encontrado
no estara encontrando el compo de la base de datos ???
Código Delphi [-]

procedure TForm1.boton1Click(Sender: TObject);

begin
adoquery1.SQL.Text := ' SELECT * from clientes WHERE Nombre =nombre ';
  adoquery1.Close;
  adoquery1.Parameters.ParamByName('nombre').DataType := ftString;
  adoquery1.Parameters.ParamByName('nombre').Value := Edit1.Text;
  adoquery1.Open;
end;

end.
gracias
saludos

Casimiro Notevi 02-09-2015 20:02:52

Cita:

Empezado por luis77 (Mensaje 496175)
me indica parameters no encontrado

A ver si hacemos un buen copia->pega :p

AgustinOrtu 02-09-2015 20:23:41

Para indicar un parametro en una consulta hay que anteponer el : (dos puntos) antes del nombre del parametro

En tu caso escribiste:

Código Delphi [-]
  adoquery1.SQL.Text := ' SELECT * from clientes WHERE Nombre =nombre ';


Deberia ser:

Código Delphi [-]
  adoquery1.SQL.Text := ' SELECT * from clientes WHERE Nombre = :nombre ';

Otro caso que suelo ver que da ese error es que no esta la conexion asignada al componente ADOQuery. No se si sera tu caso, primero tenes el error de sintaxis

orodriguezca 02-09-2015 20:25:58

Cita:

Empezado por AgustinOrtu (Mensaje 496160)

No es necesario que configures nada desde tiempo de diseño (a mi personalmente me parece muy engorroso)

No quiero entrar en debates pero no estoy del todo de acuerdo con el anterior comentario: para mi no hay nada más cómodo y simple que configurar componentes en tiempo de diseño, ya sean visuales o de acceso a datos.

Creo que uno de los puntos más fuertes que tiene Delphi es casualmente que el desarrollador pueda hacer muchas cosas en tiempo de diseño y poder ver, en una gran cantidad de casos, los resultados sin siquiera ejecutar la aplicación. Delphi, como lenguaje RAD casualmente, promueve como buenas practicas definir y configurar los componentes en tiempo de diseño siempre que esto sea posible. En lo que si estoy de acuerdo es que cuando se usa esta técnica de definir cosas en tiempo de diseño es muy fácil hechar a la basura varias horas de trabajo con un involuntario par de clicks.

Por supuesto, no siempre se puede hacer todo en tiempo de diseño. De hecho, dos de las aplicaciones que he desarrollado construyen la mayoría de los componentes visuales y de acceso a datos "al vuelo" basados en las definiciones almacenadas en una base de datos, pero mi preferencia es apoyar mis desarrollos en el Design-Time.

AgustinOrtu 02-09-2015 20:38:09

Cita:

Empezado por orodriguezca (Mensaje 496180)
[...]

No creo que este mal que se debata

Entiendo tu punto pero no comparto por lo siguiente. Tengo mala memoria de corto plazo :)

Entonces si estoy usando componentes query no puedo andar acordandome de cada parametro, su tipo, cada sql que hay aqui o alla, que tipo son los campos, etc

Prefiero tener un bloque de codigo donde esta todo junto y de un solo vistazo tengo toda la informacion que necesito.

Sino que me pasa? estoy en el editor de codigo.. pero que parametros tenia el qBuscarPersonas? A si, cambio a modo diseño busco el query, voy a la coleccion de parametros, abro el sql, vuelta al codigo.. y resulta que ya me olvide lo que estaba haciendo

Al hacer todo por codigo levanto un poco la vista y ahi esta todo: nombre de parametros, tipo, la propia consulta sql, hasta puedo copiar y pegar su nombre

En realidad yo prefiero usar el diseñador para lo que es solo visual: controles, formularios y mas recientemente LiveBindings. Si es algo que tengo que andar usando en otro lado, prefiero hacerlo por codigo.

Al fin y al cabo tampoco es que se ahorra mucho: Es un poco mas de tipeo pero las configuraciones de los componentes en algun lado hay que hacerlas

Casimiro Notevi 02-09-2015 20:44:44

Cita:

Empezado por AgustinOrtu (Mensaje 496181)
Entiendo tu punto pero no comparto por lo siguiente. Tengo mala memoria de corto plazo

Ese es uno de los principales problemas.
Te vuelves loco con cosas del estilo: "¡¡¡pero por qué no salen los registros que tienen que salir!!!" y el problema resulta que es porque se puso en modo diseño un filtro en el dataset. ¿Quién se acuerda de eso cuando estás revisando código un año después, o no lo has escrito tú?

orodriguezca 02-09-2015 21:08:04

Entiendo totalmente lo que dicen tanto AgustinOrtu y Casimiro. De hecho también he sufrido las situaciones planteadas por ambos.

Para no desvirtuar el tema propongo que llevemos estas ideas al foro de debates, exponemos nuestros argumentos, buenas y malas experiencias y asi aprendemos todos.

luis77 03-09-2015 16:38:55

muchas gracias por sus comentarios si resulto como me comentan y tome en cuenta sus comentarios
todo lo estoy haciend por codigo saludos^\||/


La franja horaria es GMT +2. Ahora son las 18:17:35.

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