Fórum Problemas com TSqlQuery no DBExpress #232774
17/05/2004
0
[i:396962be3a]select codigo, nome from profissionais where funcao = ´medico´ order by nome[/i:396962be3a]
A query aceita normalmente a instrução e o active consegue ficar setado para true, mas quando vou acessar o campo para informar o nome do profissional cujo o tipo é medico ou qualquer outro tipo acontece o seguinte erro:
tempo de execução: dbexpress error: Operation Not Suported.
Na depuração: Table Unknown profissionais at line 1, column 38.
Se alguem puder por favor me ajudem...
Desde já agradeço!
Jsaraujo
Curtir tópico
+ 0Posts
17/05/2004
Cabelo
Isto acontece pq para acessar os dados com os componentes DBExpress vc deve utilizar um ClientDataSet, que é um componete que direciona qual a sequncia de dados vc utiliza, isto é um SQLQuery é somente unidirecional, não podendo assim trazer os dados na tela..
Para utilizar o Client, selecione-o na paleta do DBExpress, juntamente com um DataSetProvider..
Na propriedade DataSet do DataSetProvider selecione a SQLQuery, dê um nome para o Provider.
Na propriedade ProviderName do Client, selecione o DataSet Provider, continue usando as instruções da mesma foema como vc utiliza agora..
Para acessar os dados, quando der um open na Query, dê um open no Client tb, e acesse os dados através do Client como vc faz com a Query, perceba que agora usando um componente bidirecional, vc consegue visualizar todos os registros, e tb consegue fazer manutenção nos mesmos..
espero ter ajudado..
sem mais
Cabelo
Gostei + 0
17/05/2004
Jsaraujo
Gostei + 0
17/05/2004
Cabelo
Só para completar..
se vc fosse utilizar um DBGrid, vc teria que usar um DataSource, para ligar o DBGrid, para isso, selecione o DataSource na paleta DataAccess, e na propriedade DataSet do dataSource, selecione o ClientDataSet..
espero ter ajudado..
sem mais
Cabelo
Gostei + 0
31/05/2004
Karencamila
Fiz uma consulta exatamente como na dica do cabelo_uni, porém percebi que em um mesmo select (select * from table) é mais demorado o ClientDataSet.Open do que o Query.Open ( via BDE ).
Pq isso acontece??
Oq seria mais viável: continuar como está ( BDE ) ou mudar toda a conexão ( para DbExpress) ???
Gostei + 0
31/05/2004
Cbritojunior
Para isso vc utilizará as duas propriedades ´mágicas´ do ClientDataSet.
A propriedade PacketRecords e FetchOnDemand.
Colocando o propriedade FetchOnDemand para True e alterando o
PacketRecords de -1 (default) para 30, a query retornará somente 30 registros, sendo quanto o cursor chegar o registro de nº 30, a query será repaginada de 31..60.
Mas lembre-se, nunca ofereça uma abertura total de tabela como essas, procure sempre utilizar a cláusula where em suas consultas, de forma a fragmentar tanto vertical quanto horizontalmente suas buscas.
Espero ter ajudado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)