App mobile android com conexão datasnap + banco sql server
17/09/2018
0
Bom dia,
Estou iniciando agora com app mobile fazendo ele todo em delphi para o banco sql server e preciso de ajuda.
criei um projeto teste para conectar no sql server listar os produtos ate ai tudo bem funciona normal.
então criei um botão para dar refresh no client data set pra caso seja inserido algo no servidor já me mostrar.
tudo bem até ai
porem, fui testar um update utilizando o clientdataset.commandtext e com um clientdataset.execute
ai criei um edit.text coloca nome do produto e altera certinho olhando pelo banco de dados perfeito.
mas se ai eu tentar da refresh ou fazer qualquer coisa como da close e open ja da erro tudo depois que é dado o execute do script, seguinte mensagem:
da um erro dizendo seguinte
[FireDAC][Phys][MSSQL]-310. Cannot open / define command, which does not return result sets. Hint: use Execute / ExecSQL method for non-SELECT commands
e nao sei como fazer pra tirar isso, pq o clientdataset nao tem execSQL apenas applyupdates
desculpa, estou começando agora e faz pouco tempo q comecei a desenvolver.
tentei usando query ou com sqlconnection com executedirect mas ai da outro erro dizendo que
dbx.sql is an unrecognized command type
e esses erro são todos como Remote Error
meu exemplo
procedure TForm2.SpeedButton2Click(Sender: TObject);
begin
try
clientdataset1.Close;
clientdataset1.CommandText:= ''update tb_produtos set xDESCRICAO = ''''''+edtPRODUTO.Text+'''''' where xcd_int_produto = 1'';
clientdataset1.Execute;
showmessage(''PRONTO !'');
except on
E:Exception do
begin
showmessage(''COMANDO EXECUTADO !'');
end;
end;
end;
se eu ficar dando update vai indo só nao posso da refresh que ai para tudo e da o erro
alguma solução? ele é pra android esta funcionando normal só nao atualiza depois que executa o clientdataset.execute
Estou iniciando agora com app mobile fazendo ele todo em delphi para o banco sql server e preciso de ajuda.
criei um projeto teste para conectar no sql server listar os produtos ate ai tudo bem funciona normal.
então criei um botão para dar refresh no client data set pra caso seja inserido algo no servidor já me mostrar.
tudo bem até ai
porem, fui testar um update utilizando o clientdataset.commandtext e com um clientdataset.execute
ai criei um edit.text coloca nome do produto e altera certinho olhando pelo banco de dados perfeito.
mas se ai eu tentar da refresh ou fazer qualquer coisa como da close e open ja da erro tudo depois que é dado o execute do script, seguinte mensagem:
da um erro dizendo seguinte
[FireDAC][Phys][MSSQL]-310. Cannot open / define command, which does not return result sets. Hint: use Execute / ExecSQL method for non-SELECT commands
e nao sei como fazer pra tirar isso, pq o clientdataset nao tem execSQL apenas applyupdates
desculpa, estou começando agora e faz pouco tempo q comecei a desenvolver.
tentei usando query ou com sqlconnection com executedirect mas ai da outro erro dizendo que
dbx.sql is an unrecognized command type
e esses erro são todos como Remote Error
meu exemplo
procedure TForm2.SpeedButton2Click(Sender: TObject);
begin
try
clientdataset1.Close;
clientdataset1.CommandText:= ''update tb_produtos set xDESCRICAO = ''''''+edtPRODUTO.Text+'''''' where xcd_int_produto = 1'';
clientdataset1.Execute;
showmessage(''PRONTO !'');
except on
E:Exception do
begin
showmessage(''COMANDO EXECUTADO !'');
end;
end;
end;
se eu ficar dando update vai indo só nao posso da refresh que ai para tudo e da o erro
alguma solução? ele é pra android esta funcionando normal só nao atualiza depois que executa o clientdataset.execute
Caciel
Curtir tópico
+ 0
Responder
Posts
17/09/2018
Fabricio Kawata
Fala Caciel! Cara, analisando o seu questionamento, tem dois pontos importantes a serem mencionados: o primeiro é com relação ao TClientDataSet. Ele é um componente para armazenagem local de dados, logo, ele deve ser usado para manter os registros em cache, dando a possibilidade de você manipular os dados relacionados a estes registros armazenados. Assim, no caso de executar um comando Update à parte, o ideal é você usar um componente mais condizente a isso, como por exemplo um TFDQuery. O segundo, mais importante, é que você deve ter em mente que num projeto Mobile você nunca irá (deverá) acessar o banco de dados diretamente. Ao invés disso a aplicação deverá se conectar a uma camada intermediária (um servidor DataSnap, por exemplo) que proverá os serviços necessários para acesso e manipulação dos dados. Portanto, o ideal neste cenário seria você ter uma aplicação DataSnap que expõe um método de Update para o App Mobile consumir. Diante disso, veja que não faz sentido você ter comandos SQL na sua aplicação Mobile. Abaixo, vou deixar alguns links de conteúdo que podem te ajudar nessa etapa:
https://www.devmedia.com.br/curso/desenvolvendo-para-android-com-delphi/1463
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Mobile_Tutorial:_Connecting_to_an_Enterprise_Database_from_a_Mobile_Client_(iOS_and_Android)
Espero ter te ajudado de alguma forma.
Forte abraço!
https://www.devmedia.com.br/curso/desenvolvendo-para-android-com-delphi/1463
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Mobile_Tutorial:_Connecting_to_an_Enterprise_Database_from_a_Mobile_Client_(iOS_and_Android)
Espero ter te ajudado de alguma forma.
Forte abraço!
Responder
17/09/2018
Caciel
Fabricio Kawata, Obrigado!
Vou estar dando uma olhada.
Até conseguir contornar o erro dando um close e open no TSQLconnection.
Mas como falou precisa trabalhar com camadas
Vlw pela força.
Vou estar dando uma olhada.
Até conseguir contornar o erro dando um close e open no TSQLconnection.
Mas como falou precisa trabalhar com camadas
Vlw pela força.
Responder
Clique aqui para fazer login e interagir na Comunidade :)