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
Caciel

Caciel

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!
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.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar