Fórum NUMERO MÁXIMO DE PARAMETROS EXCEDITO EM FUCTION NO DELPHI #449832
29/07/2013
0
Encontrei um problema com a quantidade de parametros(argumentos) do metodo que implementei para alimentar um tabela. Eu nem sabia que havia um limite de paramentros. Existe outra maneira de passar esses valores, com arrays por exemplo? Alguém pode me ajudar?
segue o Codigo em questão :
function TServerMethods1.InsertCOMUNICANTE(COMU_COD_PESS: integer; COMU_NOME,
COMU_NASC, COMU_IDADE, COMU_GEN, COMU_GRAU_PAREN, COMU_PERI_CONV,
COMU_TIPO_CONV, COMU_TEL, COMU_CEL, COMU_CONT, COMU_END, COMU_REF,
COMU_GEORREF, COMU_LATITUDE, COMU_LONGITUDE, COMU_CICA_BCG_NUM,
COMU_CICA_BCG_DIAM, COMU_FORMA_CLIN, COMU_CLASS_OPERA, COMU_PRES_LES,
COMU_NUM_LES, COMU_SORO_ELISA, COMU_SORO_DO, COMU_SORO_CUT_OFF,
COMU_SORO_DATA, COMU_SORO_LOCAL, COMU_SORO_TECN_RESP, COMU_DIAGN_MOLE,
COMU_CASO_NOVO_OPC, COMU_CASO_NOVO_NUM, COMU_OBS: String;
out Error: String): Boolean;
var
Comm:TDBXCommand;
begin
Result:=false;
DBcon.Open;
Comm:=DbCon.DBXConnection.CreateCommand;
Comm.CommandType:=TDBXCommandTypes.DbxSQL;
Comm.Text:=Format(''Insert Into COMUNICANTE(COMU_COD_PESS,COMU_NOME,COMU_NASC,COMU_IDADE,COMU_GEN,COMU_GRAU_PAREN,''+
''COMU_PERI_CONV,COMU_TIPO_CONV,COMU_TEL,COMU_CEL,COMU_CONT,COMU_END,COMU_REF,COMU_GEORREF,COMU_LATITUDE,COMU_LONGITUDE,''+
''COMU_CICA_BCG_NUM,COMU_CICA_BCG_DIAM,COMU_FORMA_CLIN,COMU_CLASS_OPERA,COMU_PRES_LES,COMU_NUM_LES,COMU_SORO_ELISA,''+
''COMU_SORO_DO,COMU_SORO_CUT_OFF,COMU_SORO_DATA,COMU_SORO_LOCAL,COMU_SORO_TECN_RESP,COMU_DIAGN_MOLE,COMU_CASO_NOVO_OPC,COMU_CASO_NOVO_NUM,''+
''COMU_OBS)values(''''%d'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s''''''+
'',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''',''''%s'''')'',
[COMU_COD_PESS,COMU_NOME,COMU_NASC,COMU_IDADE,COMU_GEN,COMU_GRAU_PAREN,
COMU_PERI_CONV,COMU_TIPO_CONV,COMU_TEL,COMU_CEL,COMU_CONT,COMU_END,COMU_REF,COMU_GEORREF,COMU_LATITUDE,COMU_LONGITUDE,
COMU_CICA_BCG_NUM,COMU_CICA_BCG_DIAM,COMU_FORMA_CLIN,COMU_CLASS_OPERA,COMU_PRES_LES,COMU_NUM_LES,COMU_SORO_ELISA,
COMU_SORO_DO,COMU_SORO_CUT_OFF,COMU_SORO_DATA,COMU_SORO_LOCAL,COMU_SORO_TECN_RESP,COMU_DIAGN_MOLE,COMU_CASO_NOVO_OPC,COMU_CASO_NOVO_NUM,
COMU_OBS]);
if not Comm.IsPrepared then
Comm.Prepare;
try
Comm.ExecuteUpdate;
Comm.Free;
Result:=true;
except on E:Exception do
Error:=E.Message;
end;
end;
Marcus Ferreira
Curtir tópico
+ 0Posts
30/07/2013
Rodolpho Silva
32 parâmetros, você não acha que está um pouco grande? Já pensou em trabalhar com XML onde você teria apenas 1 parâmetro?
Gostei + 0
30/07/2013
Marcus Ferreira
Gostei + 0
30/07/2013
Rodolpho Silva
<dados> <linha> <COMU_COD_PESS>1</COMU_COD_PESS> <COMU_NOME>João</COMU_NOME> <COMU_NASC>30/07/2013</COMU_NASC> <COMU_IDADE>40</COMU_IDADE> </linha> <linha> <COMU_COD_PESS>2</COMU_COD_PESS> <COMU_NOME>José</COMU_NOME> <COMU_NASC>30/07/2013</COMU_NASC> <COMU_IDADE>30</COMU_IDADE> </linha> </dados>
E na sua função você teria apenas um parâmetro:
function TServerMethods1.InsertCOMUNICANTE(sXML: String); begin .... Do something end;
Onde "sXML" é a string com a sua estrutura de XML. Para ler o XML, o Delphi disponibiliza um componente muito bom, o XMLDocument. Veja exemplo de uso aqui: [url]http://www.caiooliveira.com.br/?p=132[/url] [url]http://docwiki.embarcadero.com/CodeSamples/en/TXMLDocument_use_case_(Delphi)[/url] [url]https://www.devmedia.com.br/importando-xml-com-o-xmldocument-delphi/24288[/url]
Espero ter ajudado.
Gostei + 0
30/07/2013
Marcus Ferreira
Gostei + 0
30/07/2013
Francisco Macário
Só pra ficar claro, o seu problema ocorreu na declaração da function ou na execução do Comando (Dataset).
isso não ficou, claro mas acredito que tenha ocorrido no segundo caso. Nos informe o erro para ficar de exemplo.
Grato.
Gostei + 0
31/07/2013
Marcus Ferreira
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)