Saber se TSQLQuery retorno algo?

Delphi

16/08/2006

Gostaria de saber como faço para saber se uma Tsqlquery me retornou algo?
lembrando que o recordcount não funciona com a TsqlQuery.


Sistemald

Sistemald

Curtidas 0

Respostas

Marco Salles

Marco Salles

16/08/2006

Gostaria de saber como faço para saber se uma Tsqlquery me retornou algo? lembrando que o recordcount não funciona com a TsqlQuery.


Acho que isto se aplica ao RecNo se não me engano.. O RecCount acho que não tem problema apesar de não ser talvez a melhor solução


GOSTEI 0
Siam

Siam

16/08/2006

Já tentou utilizar RowsAffected ?


GOSTEI 0
Sistemald

Sistemald

16/08/2006

o recordcount, da a seguinte mensagem [b:17b9bf0bcc]Operation not supported[/b:17b9bf0bcc].

o recno sempre retorna [b:17b9bf0bcc]-1[/b:17b9bf0bcc]

Alguma outra dica?


GOSTEI 0
Sistemald

Sistemald

16/08/2006

Rowsaffected da sempre [b:d5cbadfbfc]0[/b:d5cbadfbfc]


GOSTEI 0
Marco Salles

Marco Salles

16/08/2006

Gostaria de saber como faço para saber se uma Tsqlquery me retornou algo?


uma saida , não testei , mas acredito que funcione é testar o valor de um campo..... A principio este campo tem que ser Not Null

sqlQuery.Active:=True;
if sqlQuery.fieldByName(´NomeDoCampo´).AsString = ´´ Then
//não retornou nada
else
//retornou algo;
sqlQuery.Active:=False;



GOSTEI 0
Siam

Siam

16/08/2006

Vc está dando um Select ?


GOSTEI 0
Sistemald

Sistemald

16/08/2006

Marco Salles, na verdade troquei para isso, enquanto não descubro um jeito melhor, sim estou dando um select tipo:
select campo1,campo2 form tabela1 where campo1 = :codigo


onde esse campo1 seria a chave primaria, então preciso saber se vira um registro ou não.

Eu usava a suite MDOQUery, funcionava perfeitamente, porém com o Dbexpress(TsqlQuery) estou tendo este problema, pq o comando RecordCount foi bloqueado.


GOSTEI 0
Jáder Medeiros

Jáder Medeiros

16/08/2006

Para resolver o seu problema você pode usar:
DataSet.FieldByName(´campo1´).IsNull


Mas se você quiser saber quantos registros existem nesse seu componente, sugiro criar uma função própria para contar. Ex:
Function ContaRegistros(qryParam: TSQLQuery): Integer;
var
qryTemp: TSQLQuery;
begin
qryTemp := TSQLQuery.Create(nil);
Result  := 0;
try
qryTemp.SQLConnection := qryParam.SQLConnection;
qryTemp.SQL.Add(´SELECT COUNT(*) QUANT FROM (´);
qryTemp.SQL.AddStrings(qryParam.SQL);
if Pos(´ORDER BY´,UpperCase(qryTemp.SQL.Strings[qryTemp.SQL.Count-1])) > 0 then
qryTemp.SQL.Delete(qryTemp.SQL.Count-1); //Remove critério de ordenação para não dar erro de ANSI SQL
qryTemp.Params.Assign(qryParam.Params);
qryTemp.SQL.Add(´)´);
qryTemp.Open;
Result := qryTemp.Fields[0].AsInteger
finally
qryTemp.Free
end
end;



GOSTEI 0
Marco Salles

Marco Salles

16/08/2006

Marco Salles, na verdade troquei para isso, enquanto não descubro um jeito melhor,


não pense que este jeito lhe dará algum problema , ou aborrecimento . Algo que não acredito que aconteça...

Existem tb outros modos... Um Dos mais faceis é usar umClientDateset e fazer com que ele ´execute´ este Sql , na sua propriedade ComandText e depois voce pode usar sem medo o RecCount Do clientDataSet



GOSTEI 0
Sistemald

Sistemald

16/08/2006

Olá na verdade Marcos ja tive problemas, campo com data não vem nulo. vem uma data de 1900 e antigamente, então terei que ter cuidado, o bom nisso foi que passei a uma sql de inclusão direto, ao invés de usar um dataset, acredito que terei melhor performance. valeu pelas dicas.


GOSTEI 0
Marco Salles

Marco Salles

16/08/2006

Blz que tenha resolvido.

Mas quanto a afirmação:

Olá na verdade Marcos ja tive problemas, campo com data não vem nulo.


isto não é bem assim

o fato é que eu disse anteriormente :

[b:62bb5161d6]Citação de marco salles[/b:62bb5161d6]
A principio este campo tem que ser Not Null


e se voce esta fazendo o teste em um campo que pode ser nulo , voce esta ´comprometendo´ a dica

No meu conceito , ao fazer um Sql , numa base de dados , sem usar o RecCount , da para saber se esta Sql , retornou ou não Registro. Desde que um campo desta Sql seje Not Null...Então eu não preciso fazer mais nenhuma requisação ao servidor...


GOSTEI 0
Sistemald

Sistemald

16/08/2006

ok, verdade esqueci do Not null, no mais concordo, pois é bom evitar uma nova consulta ao server.


GOSTEI 0
Marco Salles

Marco Salles

16/08/2006

Beleza mas uma vez.. Mas so não entendi este colocação

campo com data não vem nulo. vem uma data de 1900 e antigamente


isto de todo não é verdade. Se isto esta ocorrendo com voce em seu projeto , acho que tem como impedir estes valores indesejáveis

Isto sem duvida não faz parte do tópico inicial , mas fica aqui o registro


GOSTEI 0
POSTAR