Array
(
)

dbexpress, não consigo usar tabela - read-only

Ricna
   - 10 set 2004

Não sei trabalhar com o dbexpress, e agora preciso dele para manipular o banco que criei Firebird (que também sou zero-criei no ibexpert).
Utilizei um SQLconnection e um table do dbexpress só que naõ consigo manipular a tabela, quando vou inserir um registro (tb.insert) aparece um erro que a tabela é somente leitura (não tenho como colocar agora o o erro exato). Será que falta o que, usando o mesmo banco com os componentes BDE funciona blz.

Delphi7 Firebird 1.5

Acho que preciso de uma boa apostila de como trabalhar com delphi&firebird atráves dos dbexpress, se alguém puder me indicar um download etc... Obrigado;


Vinicius2k
   - 10 set 2004

Colega,

O 1º ponto é que vc deve esquecer TxxxTables quando trabalhar com Cliente/Servidor... o dbExpress foi concebido para C/S e a presença da TSQLTable é, digamos, apenas para facilitar um eventual migração... então a manipulação dos dados deve ser feita via TSQLQuery ou TSQLDataSet.

O 2º ponto é que o dbExpress é unidirecioal, isto significa que os únicos métodos que podem ser aplicados sobre o DataSet são First e Next, logo, vc não pode ligá-lo diretamente a um TDataSource -> TDBGrid... para ter um DataSet navegável vc precisa de intermediários...
As opções são :
1. TSQLDataSet/TSQLQuery + TDataSetProvider + TClientDataSet : Esta é a artiquetura mais recomendada e também a mais utilizada. O esquema de ligação básico é :

Citação:
TSQLConnection
DriverName, LibraryName, Params e VendorLib, todas corretamente configuradas para acessar seu SGBD
|
+
TSQLDataSet
CommandText, a instrução SQL a ser executada.
SQLConnection, apontando para a SQLConnection acima.
|
+
TDataSetProvider
DataSet, apontando para o SQLDataSet acima.
|
+
TClientDataSet
ProviderName, apontando para o DataSetProvider acima.
|
+
TDataSource
DataSet, apontando para o ClientDataSet acima.

2. TSQLClientDataSet (Delphi 6) ou TSimpleDataSet (Delphi 7) : Estes componentes são, digamos, 3 em 1 (DataSet + Provider + ClientDataSet) mas não tem todas as propriedades e métodos que vc teria usando os 3 serparadamente...
São componentes ruins, pouco utilizados e não recomendáveis até mesmo pelo pessoal da Borland... Dificuldades frequentes e simples de solucionar com a arquitetura normal, costumam se tornar pavorosas com eles, e muitas vezes, sem solução...

Veja a seção de apostilas do site da revista ClubeDelphi : http://www.clubedelphi.net/apostilas/apostilas.asp

Nos sites www.activedelphi.com.br e www.delphi.eti.br vc tbm encontra material e artigos que podem lhe ajudar a trabalhar com o dbExpress...
A pesquisa do fórum tbm pode lhe ajudar bastante, já que o dbExpress tbm é bastante utilizado, e vc tbm poderá comprovar as considerações que fiz acima sobre as duas formas de acesso...

Espero ter ajudado.
Boa Sorte !
T+


Doug_chagas
   - 28 set 2005


Citação:
Colega,

O 1º ponto é que vc deve esquecer TxxxTables quando trabalhar com Cliente/Servidor... o dbExpress foi concebido para C/S e a presença da TSQLTable é, digamos, apenas para facilitar um eventual migração... então a manipulação dos dados deve ser feita via TSQLQuery ou TSQLDataSet.

O 2º ponto é que o dbExpress é unidirecioal, isto significa que os únicos métodos que podem ser aplicados sobre o DataSet são First e Next, logo, vc não pode ligá-lo diretamente a um TDataSource -> TDBGrid... para ter um DataSet navegável vc precisa de intermediários...
As opções são :
1. TSQLDataSet/TSQLQuery + TDataSetProvider + TClientDataSet : Esta é a artiquetura mais recomendada e também a mais utilizada. O esquema de ligação básico é :

Citação:
TSQLConnection
DriverName, LibraryName, Params e VendorLib, todas corretamente configuradas para acessar seu SGBD
|
+
TSQLDataSet
CommandText, a instrução SQL a ser executada.
SQLConnection, apontando para a SQLConnection acima.
|
+
TDataSetProvider
DataSet, apontando para o SQLDataSet acima.
|
+
TClientDataSet
ProviderName, apontando para o DataSetProvider acima.
|
+
TDataSource
DataSet, apontando para o ClientDataSet acima.

2. TSQLClientDataSet (Delphi 6) ou TSimpleDataSet (Delphi 7) : Estes componentes são, digamos, 3 em 1 (DataSet + Provider + ClientDataSet) mas não tem todas as propriedades e métodos que vc teria usando os 3 serparadamente...
São componentes ruins, pouco utilizados e não recomendáveis até mesmo pelo pessoal da Borland... Dificuldades frequentes e simples de solucionar com a arquitetura normal, costumam se tornar pavorosas com eles, e muitas vezes, sem solução...

Veja a seção de apostilas do site da revista ClubeDelphi : http://www.clubedelphi.net/apostilas/apostilas.asp

Nos sites www.activedelphi.com.br e www.delphi.eti.br vc tbm encontra material e artigos que podem lhe ajudar a trabalhar com o dbExpress...
A pesquisa do fórum tbm pode lhe ajudar bastante, já que o dbExpress tbm é bastante utilizado, e vc tbm poderá comprovar as considerações que fiz acima sobre as duas formas de acesso...

Espero ter ajudado.
Boa Sorte !
T+


Amigo, na propriedade drivername não existe a opção Firebird, devo utilizar o Interbase como dito em outros topicos, ou existe como utilizar driver para o firebird, faze-lo aparecer nesta propriedade?

Obrigado.


Vinicius2k
   - 28 set 2005

Colega,

Vc pode usar, sem problemas, o driver para Interbase com o Firebird até 1.5.x.
Outros drivers específicos existem, mas o UIB ainda é instável -- http://www.progdigy.com/modules.php?name=UIB -- e o da Upscene -- http://www.upscene.com -- é pago.

T+


Davicarrano
   - 28 set 2005

no site www.progdigy.com
tem o component de acesso UIB com o driver do Firebird para ibexpress...
eu testei... funcionou beleza... um unico problema eu encontrei...
o sql monitor para monitorar as instruções sql q sao enviadas para o servidor firebird, nao funciona com este drive... alguem sabe porque?


Paulo Trajano
   - 23 nov 2005

Caro amigo Vina, tudo blz?

Estou colocando as dlls midas.dll e dbexpint.dll juntas na pasta da minha aplicvação e dá a msg que ´Falta o DriverName´. Vc disse que funciona direitinho com o driver do interbase e estou usando o FB 1.5. O que está errado?


Vinicius2k
   - 24 nov 2005

Salve Paulinho !

Verifique as propriedades do TSQLConnection:
1. DriverName obrigatoriamente precisa estar preenchida com, no seu caso, ´Interbase´ (ou qualquer outro nome que vc desejar, não faz diferença se vc não estiver utilizando conexões nomeadas através do dbxconnections.ini)
2. GetDriverFunc preenchida com ´getSQLDriverINTERBASE´
3. LibraryName preenchida com ´dbexpint.dll´
4. VendorLib preenchida com ´fbclient.dll´ (ou ´gds32.dll´)
5. LoadParamsOnConnect setada para ´False´ (se vc não estiver utilizando conexões nomeadas através do dbxconnections.ini).

T+


Paulo Trajano
   - 24 nov 2005

Vlw Vina, eu acabei apagando essas propriedades pq estou usando o dbxconnections.ini mas me esqueci que lá não tinha esses parâmetros. Vou testar agora.

Abraço!!