Fórum Utilizando delphi mysql #189110
16/10/2003
0
AT. Preciso dessa dica utilizando o componente Query.
Valeu pela atenção.
Cinh0
Curtir tópico
+ 0Posts
16/10/2003
Mition
da pasta DBExpress:
* SQLConnection1
* SQLDataSet1
da pasta DataAccess:
* DataSetProvider1 (aqui está o pulo do gato!)
* ClientDataSet1
* DataSource1
configurações das propriedades de
1. SQLConnection1
1.1 ConnectionName:=MySQLConnection
1.2 DriverName := MySQL
1.3 LoginPrompt:=false
1.4 Params:
Host Name: <endereço no servidor> ´Ex: 200.215.20.3´
Data BAse: <nome do seu BD>
User Name: <login de acesso>
Password: <senha de acesso>
1.5. Connected:=true;
configurações das propriedades de
2. SQLDataSet12.1 SQLConnection:=SQLConnection1 (ou o nome que vc escolheu)
2.2 CommandType -> 03 opções:
2.2.1. Se vc escolher ctQuery (padrão), deverá trabalhar com instruções SQL (insert, update, delete, select) - (recomendável)
2.2.2. ctTable, instruções normais de objetos Table
2.2.3. ctStoredProc, procedimentos de instruções em SQL para ´stored procedures´ (gatilhos - muito útil, qdo necessário)
2.3. CommandText:= select * from <nome tabela> <demais comandos> ou clique em ´...´ para abrir o editor SQL e monte sua instrução. Utilize inicialmente instruções de consulta - em outras ocasiões, poderá utilizar comandos de execução (+ prá frente).
2.4. Active:=true
configurações das propriedades de
3. DataSetProvider1
3.1 DataSet:=SQLDataSet1 (ou o nome que vc escolheu)
configurações das propriedades de
4. ClientDataSet1 (manterá os registros da tabela em memória (buffer) para a navegação bidirecional - vc não estará navegando na table e sim na consulta)
4.1 ProviderName:=DataSetProvider1 (ou o nome que vc escolheu)
4.2 Active:=true
OBS.:esse componente ClientDataSet substitui o componente Table! a vantagem é que vc está trabalhando com os registro/tables em sua máquina. O servidor será atualizando (e a rede acessada) somente após a confirmação dos dados inseridos, alterados ou excluídos. Não haverá um grande tráfego na rede.
configurações das propriedades de
5. DataSource1 (aí é muita moleza - se vira!(risos))
OBS: para cada tabela em seu data módulo, vc deverá ter um componente SQLDataSet,DataSetProvider, ClientDataSet e DataSource. (somente um SQLconnection compartilhado entre todos eles)
Se houver necessidade de vc acessar outro Banco de Dados, deverá colocar outro SQLConnection.
Coisas a se considerar:
1. As buscas são feitas através do método LOCATE dos ClientDataSets (esqueça seek, gotokey,gotonearest,...). Como as tabelas já tem seu índice ou campos indexados, ele fará a consulta por onde ele achar mais rápido (claro que depende se chave que vc está buscado é índice ou indexado)
2. Navegação é normal (first, prior, ...)
3. Não utilize o método Post (apesar de estar habilitado). Motivo: Post atualiza apenas o ClientDataSet (em buffer), e não atualizará o BD Servidor.
4. No lugar de Post, utilize o método applyUpdates(-1). Desse modo atualizará o ClientDataSet e o SQLDataSet (diretamente no BD Servidor).
Ex: DataModule1.ClientDataSet1.applyupdates(-1);
5. Daqui para frente, só utilize instruções em SQL (se preferir. Lógico!)
6. Se preferir utilizar os métodos Insert, Delete, Edit, etc, no ClientDataSet (como no Table), tudo bem, mas nunca utilize POST para confirmar e sim ApplyUpdates(-1)!
7. Se um SQLConnection estiver fechado, a partir do momento que vc abrir um SQLDataSet, a conexão será automaticamente aberta. Não acontece o mesmo se fizer o ClientDataSet.
UFA! Quanto tempo para digitar!
Boa Sorte
A propósito (NÃO TEM COMO DAR ERRADO POIS EU UTILIZO DIARIAMENTE!)
[]´S e boa sorte
Mição
P.S. Uma boa bibliografia->Delphi 6 com FireBird/Interbase - Bastiaan Pieter Marinus Wilderom/Marcelo Frank - Editora Érica. Esse livro explica detalhadamente o que passei para vc! Sem falar que o livro é um projeto de PDV (posto de venda - com impressora fiscal e uso de código de barras - MUITO ÚTIL E NECESSÁRIO)
Revistas Clube Delphi Edições -> 17,18,22,23 e 28.
Gostei + 0
16/10/2003
Cinh0
Fiz todo o procedimento que você me passou, como ligar um edit a query? Utilizarei novamente o dbedit?! então faço o processo normal como se tivesse utilizando Table, linkarei o dbedit as campos da tabela e tal... e como faco pra da o insert via sql, me passa essas informações o mais detalhada que sua paciencia puder, agradeço mesmo... valeu.
Gostei + 0
16/10/2003
Mition
O objeto sqldataset que mencionei, pode receber uma instrução/consulta sql de uma tabela no BD Servidor. EX: do commandtext:=select * from cursos order by codcurso. (vc não pode utilizá-lo diretamente, pois o objeto sqldataset é unidirecional - não permite a navegação).
o objeto datasetprovider fará a ponte com o clientdataset (que substitui o objeto table), para liberar a navegação bidirecional.
Qdo vc ativar (active:=true) o clientdataset, acionará automáticamente a instrução sql, e trará para o objeto clientdtst, o resultado da consulta (trará uma tabela temporária em buffer).
A partir daí, vc navegará (first, prior, next, etc) normalmente como no table, irá inserir, alterar, excluir normalmente tb (insert, delete, edit). Mas, ao invés de confirmar a operação de insert/edit com post, vc confirmará com o commando applyupdates(-1). No caso de delete, vc colocará o comando e posteriormente a ele applyupdate(-1). Por qual motivo? Respondo: como os dados estão em memória, toda alteração está sendo feita no objeto clientdataset (apenas na máquina). com o comando applyupdates(-1), vc está atualizando o buffer e automáticamente atualizando a tabela no servidor (causando tráfego na rede). Isso é necessário, senão, todo o serviço estará perdido ao fechar as tabelas ou encerrar o programa.
Dessa forma, não é necessário trabalhar com o comand sql (query).
Mas se esse é o seu desejo, estude comandos sql:
EXEMPLOS SIMPLES:
Consulta:
select <lista de campos> from <tabela> where <condição> order by <campos>
Inserção:
insert into <tabela> (<parâmetros>) values (<campos>) where <condição>
Alteração:
update from <tabela> set <campo>=<parâmetro> where <condição>
Exclusão:
delete from <tabela> where <condição>
etc, etc, etc,... o assunto é longo e complicado e exige um estudo mais aprofundado.
Prefiro usar o método que passei. É mais rápido. Compre o livro que indiquei. Valerá a pena. Nele mostra exemplos também com instruções sql.
Espero ter ajudado.
[]´s e boa sorte
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)