Fórum Trabalhar com Parametros ... Como faço ???? #173179

05/08/2003

0

PessoALL,

vou tentar explicar de forma + simples posivel o q eu quero fazer ...:

fiz um função por ex.´para consultar e nessa funcao fica +/- assim
function Consultar(nometabela, campodatable1, campodatable2)
begin
query1.close
query1.params[0].????? := nometabela
query1.params[1].????? := campodatable1
query1.params[2].????? := campodatable2
query1.open
end

Ai no componente q quero q uso essa funcao eu coloco
consultar(table1, field1, field2)

So q eu naum sei como eu defino esses parametros na query, ou melhor, q tipo q eu defino esses parametnros?? e se eu utilizar variaveis para receber esses params, q tipo de variavel eu defino ??

Obr pela ajuda

ate


Scandolara

Scandolara

Responder

Posts

05/08/2003

Djjunior

O que tu quer é + ou - isso

query1
Select * from tabelaX
Where Condicao = :suacondicao

Query1.active := false;
Query1.Parambyname(´suacondicao´).text := ´qualquer coisa´;
Query1.active := true;

ps o segredo é o : pra definir uma condição em uma query vc só tem que colocar um : antes do nome da mesma ok!

espero ter ajudado!

djr


Responder

Gostei + 0

07/08/2003

Scandolara

Naum seria bem isso ...,
seguinte, vou tentar explicar melhor:
quero saber como eu defino uma variavel, para q assim ela possa reber o NOME da tabela (ex.: tabcli.db), outra variavel q recebar o NOME do campo (ex: codcli), etc ...

irei usar a seguinte instrucao
dentro da SQL da query1
select :codigo, :nome from :tabela

na chamada da query1
...close
query1.params[0].????? := variavelNomeCampo
query1.params[1].????? := variavelNomeTabela
...execsql

obr


Responder

Gostei + 0

07/08/2003

Oberdan

Eu lí, relí, e lí novamente e sua dúvida e acho o seguinte:

Não, testei porém acho que é assim:

function Consultar(nometabela:String; campodatable1:String; campodatable2:String;):TQuery;
Begin
Query1.Params[0].value := nometabela;
Query1.Params[1].value := compodatable1;
Query1.Params[2].value := campodatable2;
execsq;;

Result := Query1;
end;

Espero ter ajudado.
[]´s

Oberdan
:!:


Responder

Gostei + 0

08/08/2003

Djjunior

Cara se bem entendi a tua questão o melhor a fazer é montar a sua query em runtime (algo que eu faço aqui direto!) seria algo do tipo

var sql: [1..3]: of string
i : integer;

if checkbox1.checked = true then begin
sql[1] := ´Select ....´
sql[2] := ´From table1´ :shock:
sql[3] := ´where...´
end else begin
sql[1] := ´Select ....´
sql[2] := ´From outratable´ :lol:
sql[3] := ´where...´
end;
query. active := False
query.sql.text := ´´;
for i := 1 to 3 do
Query.Sql.text := sql[i]
query.active := true;

eu monto a query em um array porque uma variável string só pode receber até 255 caracteres, montando em um string cada linha pode ter até 255! e como algumas querys minhas são muiiiito grandes eu resolvi montar desse jeito!

espero ter ajudado


Responder

Gostei + 0

08/08/2003

Jairroberto

Olá, scandolara!

Vamos ver se entendi:

Naum seria bem isso ..., seguinte, vou tentar explicar melhor: quero saber como eu defino uma variavel, para q assim ela possa reber o NOME da tabela (ex.: tabcli.db), outra variavel q recebar o NOME do campo (ex: codcli), etc ... irei usar a seguinte instrucao dentro da SQL da query1 select :codigo, :nome from :tabela na chamada da query1 ...close query1.params[0].????? := variavelNomeCampo query1.params[1].????? := variavelNomeTabela ...execsql


Experimente fazer da seguinte forma:

procedure Consultar(NomeTabela, NomeCampo1, NomeCampo2:String);
begin
  with Query1 do
  begin
    Close;
    SQL.Text := Format(´SELECT ¬s, ¬s FROM ¬s´, [NomeCampo1, NomeCampo2, NomeTabela]);
    Open;
  end;
end;


Você pode chamar a procedure desta forma:

Consultar(´tabcli´, ´codcli´, ´nomecli´);



Um abraço,
Jair


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar