Array
(
)

Delphi 6 com SQL Server 7

Wly
   - 13 set 2005

Prezados Amigos do Forum,

Estou com problema e gostaria que alguem podesse me ajudar,pois bem, o problema é o seguinte:

Estou conectando um Banco de Dados no SQL Server 7, através do ADO, a conexão com o banco esta perfeita e bem configurada. O problema que me deparei foi que o SQL Server não aceita os ´ : ´ (dois pontos)como parametro para uma consulta, inserir dados ou alterar dados, como por exemplo:

Const SQL_pesquisa : String = ´Select NomeRegiao From Regiao ´+
´Where NomeRegiao Like :prnPesq ´;
Begin
With dm.qryRegiao do
begin
Close;
SQL.Clear;
SQL.Add(SQL_pesquisa);
Parameters.ParamByName(´prnPesq´).Value := Edit1.Text + ´¬´;
Open;
end;
end;

Sempre trabalhei com IB/FB e nunca me deu problema como eu estou trabalhando em orgão governamental o DB dele é o SQL Server 7. No IB/FB eu uso da mesma forma com excessão (Parameters) e dá certo, gostaria que alguem me ajuda-se neste dilema !!!!

Movido de Delphi para SQL Server

Rjun
   - 13 set 2005

O SQL aceita sim os dois pontos. Embora você não tenha espeficado o erro, acredito que seja no like, pois você tem que colocar entre ´´ a condição. Vou colocar uma sugestão.

#Código

resourcestring
  SQL_pesquisa = ´Select NomeRegiao From Regiao Where NomeRegiao Like ¬s´;

begin 
  dm.qryRegiao.SQL.Clear; 
  dm.qryRegiao.SQL.Add(Format(SQL_Pesquisa, [´´´ + Edit1.Text + ´¬´]);
  try 
    dm.qryRegiao.Open; 
    // Código para processar o resultado
  finally
    dm.qryRegiao.Close;
  end;
end; 


Wly
   - 14 set 2005

É o seguinte instrunção SQL foi testada tanto o MS Access e IB/FB e funcionaram. Utilizando os dois pontos( : ), Por que no quando eu passo esta mesma instrução para o Query Analyzer da erro ????

Select NomeRegiao From Regiao Where (NomeRegiao=:prnPesq);

No delphi eu utilizo assim para testar, tanto atraves do Acess ou do IB/FB:

#Código

Const SQLpesq : String = ´Select NomeRegiao From Regiao Where (NomeRegiao=:prnPesq)´;
With dm.qryRegiao do
  begin
     close;
     sql.clear;
     sql.add(SQLpesq);
     parambyname(´prnPesq´).asString := Edit1.text;
     open;
  end;

Este exemplo acima foi testa no Delphi 6 acessando SGDB do IB/FB, no caso MS Access coloquei um o ´parameters´ e nos dois funcionaram.

Rjun
   - 14 set 2005

No Query Analyzer dá erro mesmo, pois variáveis no Sql Server são precedidas do sinal de @.

Se você esta utilizando ADO você deve usar Parameters.ParamByName.

#Código

Const 
  SQLpesq : String = ´Select NomeRegiao From Regiao Where (NomeRegiao=:prnPesq)´; 
begin
  dm.qryRegiao.sql.clear; 
  dm.qryRegiao.sql.add(SQLpesq); 
  dm.qryRegiao.Parameters.ParabyName(´prnPesq´).asString := Edit1.text; 

  try
    dm.qryRegiao.Open;
    // Código para processamento da query
  finally
    dm.qryRegiao.Close;
  end;
end;  


Wly
   - 14 set 2005


Citação:
No Query Analyzer dá erro mesmo, pois variáveis no Sql Server são precedidas do sinal de @.

Se você esta utilizando ADO você deve usar Parameters.ParamByName.

#Código

Const 
  SQLpesq : String = ´Select NomeRegiao From Regiao Where (NomeRegiao=:prnPesq)´; 
begin
  dm.qryRegiao.sql.clear; 
  dm.qryRegiao.sql.add(SQLpesq); 
  dm.qryRegiao.Parameters.ParabyName(´prnPesq´).asString := Edit1.text; 

  try
    dm.qryRegiao.Open;
    // Código para processamento da query
  finally
    dm.qryRegiao.Close;
  end;
end;  


Fiz o test acima porem o erro esta dando em ´asString´ coloquei ´Value´ e mesmo assim continua dando erro ???

Rjun
   - 14 set 2005

Qual erro q está dando? Aparece alguma mensagem? Poste a mensagem de erro.