Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Consulta sin usar parametros (https://www.clubdelphi.com/foros/showthread.php?t=39108)

Sistemasgalbo 10-01-2007 20:57:55

Consulta sin usar parametros
 
Hola a todos, tengo una duda tal vez sea la mas sencilla del mundo por resolver, la bronca es que siempre habia trabajado con tablas paradox o interbase, ahora quiero migrar a SQl server, todo va bien excepto cuando quiero hacer consultas por codigo sin utilizar parametros, este es un ejemplo de lo quiero hacer, para ser mas practico:

select * from cliente where rfc='AOBGXXXX'

Hice la consulta en Sql server y todo esta bien, la bronca es al mandar la consulta por codigo desde delphi, ya que le intento pasar:

adoquery1.sql.clear;
adoquery1.sql.add('select * from cliente where rfc='AOBGXXXX'');
adpquery1.execsql;

me marca error, recuerdo que habia algun caracter para decirle a delphi que trate como caracter a la comilla simple pero no recuerdo como, alguien podria decirme????

luisgutierrezb 10-01-2007 22:24:00

Código Delphi [-]
adoquery1.sql.clear;

adoquery1.sql.add('select * from cliente where rfc=''AOBGXXXX'');
// o tambien

adoquery1.sql.add('select * from cliente where rfc=' + QuotedStr('AOBGXXXX'));
//o tambien

adoquery1.sql.add(Format('select * from cliente where rfc=%s',[''AOBGXXXX'']));
adpquery1.execsql;
puedes hacer combinaciones con lo anterior...

BuenaOnda 10-01-2007 22:46:06

mira me parece que deberias reemplazar ExecSQL por Open, dado que , hasta donde sé, el open se utiliza para abrir una consula (Select) y el ExecSQL para ejecutar una sentencia en la bases de datos(Insert,Update,Delete).. espero que te sirva...

Sistemasgalbo 10-01-2007 23:45:58

creo que no me explico bien, el campo es una variable, seria algo asi:

adoquery1.sql.clear;
adoquery1.sql.add('Select * from cliente where rfc="' + edit1.text + '" order by rfc');
adoquery1.active:=true;

esto seria en paradox, y no hay ninguna bronca, en sql server, si le pones doble comilla te marca error, si le quitas las comillas te marca error, pero si la pongo las comillas sencillas (que es lo que me pide sql, porque ya hice la consulta y si jalo), el que marca error es el compilador de delphi, porque queda algbo asi:

adoquery1.sql.add('Select * from cliente where rfc='' + edit1.text + '' order by rfc');

espero haberme explicado...

Luis Castro 10-01-2007 23:52:14

Chance te funcione
 
Compadre, te envio esta consulta, tal vez te funcione, es una consulta a base de parametros, lo otro es que debes cambiar el "execsql" por "open"

clibre2.Close;
clibre2.SQL.Clear;
clibre2.SQL.Text := 'select * from A_ProdutoNroClass where idproduto=:producto and nroclassificacao=:clasificacion ';
clibre2.Parameters.ParamByName('producto').Value := producto;
clibre2.Parameters.ParamByName('clasificacion').Value := clasificacion;
clibre2.Open;

Suerte

Sistemasgalbo 10-01-2007 23:57:02

me parece perfecto tu ejemplo castro, con parametros ya lo he hecho, sino que voy a hacer muchas consultas, y tendria que usar muchos componentes querys, lo que quiero es ahorrarme componentes, y en uno solo estar cambiando la consulta nada mas, imaginate si hago 20 consultas diferentes, tendria que tener 20 componentes querys, ahora no se que tanto afecte esto el rendimiento del programa.... gracias de todos modos.

roman 11-01-2007 00:52:09

Código Delphi [-]
adoquery1.sql.add('Select * from cliente where rfc=' + QuotedStr(edit1.text) + ' order by rfc');

O bien la forma "fea":

Código Delphi [-]
adoquery1.sql.add('Select * from cliente where rfc=''' + edit1.text + ''' order by rfc');

que corresponde a lo que dices:

Cita:

Empezado por Sistemasgalbo
recuerdo que habia algun caracter para decirle a delphi que trate como caracter a la comilla simple pero no recuerdo como

Más que un caracter se trata de poner dos veces la comilla.

// Saludos

Sistemasgalbo 11-01-2007 03:16:13

ya estuvo Roman probe las dos formas y jalo, muchisisisisimas gracias.....


La franja horaria es GMT +2. Ahora son las 08:05:48.

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