Dbexpress, SqlClienteDataset e SimpleDataset
Gente estou me atrapalhando todo com a mudança de Sqlclientedataset e simpledataset, gostaria de saber a forma mais simples de conecção do Banco de dados, sem abordar a parte de rede e sim um programa com acesso a banco de dados local.
deixo a rede pra depois que estiver bem enterado neste novo componente.
Uso FireBird 1.5
Dbexpress
Delphi 7
Agradeço a ajuda ok.
deixo a rede pra depois que estiver bem enterado neste novo componente.
Uso FireBird 1.5
Dbexpress
Delphi 7
Agradeço a ajuda ok.
Uoquisala
Curtidas 0
Respostas
Vinicius2k
20/06/2004
Colega,
Veja esta excelente apostila sobre DBX que aborda, inclusive, estes dois componentes... se persistirem dúvidas, poste novavamente, OK?
http://www.clubedelphi.com.br/apostilas/DBExpress.zip
Se me permitir um conselho, não use nenhum dos dois... eu uso, e é a arquitetura mais recomendada, SQLConnection -> SQLDataSet(ou SQLQuery) -> DataSetProvider -> ClientDataSet
Espero ter ajudado...
T+
Veja esta excelente apostila sobre DBX que aborda, inclusive, estes dois componentes... se persistirem dúvidas, poste novavamente, OK?
http://www.clubedelphi.com.br/apostilas/DBExpress.zip
Se me permitir um conselho, não use nenhum dos dois... eu uso, e é a arquitetura mais recomendada, SQLConnection -> SQLDataSet(ou SQLQuery) -> DataSetProvider -> ClientDataSet
Espero ter ajudado...
T+
GOSTEI 0
Uoquisala
20/06/2004
Ok consegui de uma forma mais fácil e rápida como vc me falou, mais que posição devo tomar sobre codigicação de código para Inserir, excluir, editar campos novos e buscas. devo usar os mesmos métodos que usamos no Dbexpress.
J.R.P.J.
J.R.P.J.
GOSTEI 0
Vinicius2k
20/06/2004
A arquitetura que lhe passei não deixa de ser dbExpress, então os métodos são os mesmos... Append; Edit; Delete; ApplyUpdates; etc, Aplicados sobre o ClientDataSet...
Para vc entender bem, encare o SQLClientDataSet (Delphi 6) e o SimpleDataSet (Delphi 7) como um componente 3 em 1 (DataSet + Provider + ClientDataSet)... que foi desenvolvido para facilitar e fazer com que vc use menos componentes para a conexão... porém a própria borland não recomenda o uso e não sei por qual razão, já que nunca vi nenhum colega tendo dificuldades com eles...
T+
Para vc entender bem, encare o SQLClientDataSet (Delphi 6) e o SimpleDataSet (Delphi 7) como um componente 3 em 1 (DataSet + Provider + ClientDataSet)... que foi desenvolvido para facilitar e fazer com que vc use menos componentes para a conexão... porém a própria borland não recomenda o uso e não sei por qual razão, já que nunca vi nenhum colega tendo dificuldades com eles...
T+
GOSTEI 0
Omar Cury
20/06/2004
Amigos,
Aproveitando o assunto, estou tendo também dificuldades com o SqlSimpleDataSet, por exemplo, nao consigo fazer um select em run-time +/- assim:
SqlSimpleDataSet.DataSet.CommandText.Clear
neste exemplo acima, o delphi nao reconhece o CLEAR do commandText, e nem a função ADD, impossibilitando de limpar a linguagem SQL e adicinar outra no lugar.
outro exemplo
if SqlSimpleDataSet.DataSet.RecordCount > 0 Then
neste outro exemplo, ocorre um erro ´Operação nao suportada´
Caso alguém saiba outro jeito de se fazer isto, me dê uma dica...
Obrigado.
Aproveitando o assunto, estou tendo também dificuldades com o SqlSimpleDataSet, por exemplo, nao consigo fazer um select em run-time +/- assim:
SqlSimpleDataSet.DataSet.CommandText.Clear
neste exemplo acima, o delphi nao reconhece o CLEAR do commandText, e nem a função ADD, impossibilitando de limpar a linguagem SQL e adicinar outra no lugar.
outro exemplo
if SqlSimpleDataSet.DataSet.RecordCount > 0 Then
neste outro exemplo, ocorre um erro ´Operação nao suportada´
Caso alguém saiba outro jeito de se fazer isto, me dê uma dica...
Obrigado.
GOSTEI 0
Christian_adriano
20/06/2004
Caro Omar Cury,
Pra fazer o q vc esta pretendendo utilize o componente TSQLQuery,
Pois TSqlSimpleDataSet soh ´recebe´ (:=) o comando SQL.
Exe.
With SqlSimpleDataSet do
begin
DataSet.CommandText := ´SELECT , INSERT, UPDATE, DELETE, etc.´;
// Se for um SELECT vc usar apos o comando a cima o ´Open;´
// Caso COntrario vc utiliza o ´Execute;´
end;
Basicamente seria isso.
Espero ter respondido a sua duvida.
Pra fazer o q vc esta pretendendo utilize o componente TSQLQuery,
Pois TSqlSimpleDataSet soh ´recebe´ (:=) o comando SQL.
Exe.
With SqlSimpleDataSet do
begin
DataSet.CommandText := ´SELECT , INSERT, UPDATE, DELETE, etc.´;
// Se for um SELECT vc usar apos o comando a cima o ´Open;´
// Caso COntrario vc utiliza o ´Execute;´
end;
Basicamente seria isso.
Espero ter respondido a sua duvida.
GOSTEI 0
Vinicius2k
20/06/2004
Omar,
[quote:e53cf57fa6=´Omar Cury´]SqlSimpleDataSet.DataSet.CommandText.Clear
neste exemplo acima, o delphi nao reconhece o CLEAR do commandText, e nem a função ADD, impossibilitando de limpar a linguagem SQL e adicinar outra no lugar.[/quote:e53cf57fa6]
Não utilizo SimpleDataSet, mas a propriedade sua CommandText é similar a CommandText a de todos os componentes DataSet (IBDataSet, SQLDataSet, ADODataSet)... vc não precisa limpar e usar ´Add´, apenas informe a nova string, por exemplo:
[quote:e53cf57fa6=´Omar Cury´]if SqlSimpleDataSet.DataSet.RecordCount > 0 Then
neste outro exemplo, ocorre um erro ´Operação nao suportada´[/quote:e53cf57fa6]
Existem 3 situações onde os componentes DBX geram esta exceção :
1 - se vc estiver acessando uma Stored Procedure
2 - se o sua query (CommandText) possuir parametros
3 - se o sua query (CommandText) contiver um join...
Não há como contornar isso... se precisar contar os registros crie uma query auxiliar com uma instrução :
e para leitura use :
Espero ter ajudado...
T+
[quote:e53cf57fa6=´Omar Cury´]SqlSimpleDataSet.DataSet.CommandText.Clear
neste exemplo acima, o delphi nao reconhece o CLEAR do commandText, e nem a função ADD, impossibilitando de limpar a linguagem SQL e adicinar outra no lugar.[/quote:e53cf57fa6]
Não utilizo SimpleDataSet, mas a propriedade sua CommandText é similar a CommandText a de todos os componentes DataSet (IBDataSet, SQLDataSet, ADODataSet)... vc não precisa limpar e usar ´Add´, apenas informe a nova string, por exemplo:
SimpleDataSet1.CommandText:= ´select * from clientes´;
[quote:e53cf57fa6=´Omar Cury´]if SqlSimpleDataSet.DataSet.RecordCount > 0 Then
neste outro exemplo, ocorre um erro ´Operação nao suportada´[/quote:e53cf57fa6]
Existem 3 situações onde os componentes DBX geram esta exceção :
1 - se vc estiver acessando uma Stored Procedure
2 - se o sua query (CommandText) possuir parametros
3 - se o sua query (CommandText) contiver um join...
Não há como contornar isso... se precisar contar os registros crie uma query auxiliar com uma instrução :
select count (IDCLIENTE) from CLIENTES where ... (mesmos parametros da query principal)
e para leitura use :
Label1.Caption:= IntToStr(SUA_QUERY.FieldByName(´COUNT´).AsInteger);
Espero ter ajudado...
T+
GOSTEI 0
Omar Cury
20/06/2004
Agora entendi perfeitamente Vinicius, muito obrigado por sua mensagem sobre o recordCount, eu realmente usava com parametros, ou seja, caso recordCount fosse > 0 eu emitiria a mensagem ´código já cadastrado...´
Agradeço tbem ao Cristian_Adriano.
Agradeço tbem ao Cristian_Adriano.
GOSTEI 0
Vinicius2k
20/06/2004
Omar,
No seu caso talvez seja ainda mais simples... ao invés de ler o ´RecordCount´, use o método ´IsEmpty´... se o retorno for false o código já está cadastrado...
T+
No seu caso talvez seja ainda mais simples... ao invés de ler o ´RecordCount´, use o método ´IsEmpty´... se o retorno for false o código já está cadastrado...
T+
GOSTEI 0
Omar Cury
20/06/2004
muito obrigado pela dica.
GOSTEI 0