Saber se TSQLQuery retorno algo?
Gostaria de saber como faço para saber se uma Tsqlquery me retornou algo?
lembrando que o recordcount não funciona com a TsqlQuery.
lembrando que o recordcount não funciona com a TsqlQuery.
Sistemald
Curtidas 0
Respostas
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
16/08/2006
Já tentou utilizar RowsAffected ?
GOSTEI 0
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?
o recno sempre retorna [b:17b9bf0bcc]-1[/b:17b9bf0bcc]
Alguma outra dica?
GOSTEI 0
Sistemald
16/08/2006
Rowsaffected da sempre [b:d5cbadfbfc]0[/b:d5cbadfbfc]
GOSTEI 0
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
16/08/2006
Vc está dando um Select ?
GOSTEI 0
Sistemald
16/08/2006
Marco Salles, na verdade troquei para isso, enquanto não descubro um jeito melhor, sim estou dando um select tipo:
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.
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
16/08/2006
Para resolver o seu problema você pode usar:
Mas se você quiser saber quantos registros existem nesse seu componente, sugiro criar uma função própria para contar. Ex:
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
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
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
16/08/2006
Blz que tenha resolvido.
Mas quanto a afirmação:
isto não é bem assim
o fato é que eu disse anteriormente :
[b:62bb5161d6]Citação de marco salles[/b:62bb5161d6]
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...
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
16/08/2006
ok, verdade esqueci do Not null, no mais concordo, pois é bom evitar uma nova consulta ao server.
GOSTEI 0
Marco Salles
16/08/2006
Beleza mas uma vez.. Mas so não entendi este colocação
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
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