Ir al contenido


Foto

android con DataSnap Delphi?


  • Por favor identifícate para responder
2 respuestas en este tema

#1 adriano_servitec

adriano_servitec

    Advanced Member

  • Miembros
  • PipPipPip
  • 91 mensajes
  • LocationCuritiba-Pr - Brasil

Escrito 29 diciembre 2012 - 07:00

Con DataSnap en Delphi XE3 trajo webservice datos firebird con este vídeo
http://rafakwolf.blo...ndo-delphi.html

Tomé la lista de base de datos Firebird y todo esto en un android listview.

Incluso, en parte, traer una lista de todos los datos de la tabla en android trae, pero tengo que hacer lo mismo en EditText introducir un código de este EditText muy EditText y devolver el nombre.

Tengo una tabla llamada clientes, y lo tengo campos y nombre de código

Si algem me puede ayudar a traer el resultado en el android EditText ...

En Delphi ya lo hizo el método de búsqueda por ID


delphi
  1. function TServerMethods1.GetDados_Clientes(Codigo: string; out Erro: string): TDataSet;
  2. begin
  3.   with CDS_Clientes do
  4.   begin
  5.     try
  6.       Close;
  7.       CommandText := ' SELECT CAST(CODIGO AS VARCHAR(30))AS CODIGO, NOME '+
  8.                     '  FROM CLIENTES '+
  9.                     '  WHERE CODIGO = :PCODIGO ';
  10.       Params.ParamByName('PCODIGO ').AsString := Codigo;
  11.       Open;
  12.       Result := CDS_Clientes;
  13.     except on E:Exception do
  14.       Erro := E.Message;
  15.     end;
  16.   end;
  17. end;



y era así en android
[java]public static class GetDados_ClientesReturns {
      public String Erro;
      public TDataSet returnValue;
    }
    public GetDados_ClientesReturns GetDados_Clientes(String Codigo) throws DBXException {
      DSRESTCommand cmd = getConnection().CreateCommand();
      cmd.setRequestType(DSHTTPRequestType.GET);
      cmd.setText("TServerMethods1.GetDados_Clientes");
      cmd.prepare(get_TServerMethods1_GetDados_Clientes_Metadata());
      cmd.getParameter(0).getValue().SetAsString(Codigo);
      getConnection().execute(cmd);
      GetDados_ClientesReturns ret = new GetDados_ClientesReturns();
      ret.Erro = cmd.getParameter(1).getValue().GetAsString();
      ret.returnValue = (TDataSet)cmd.getParameter(2).getValue().GetAsTable();
      return ret;
    }
   
   
    private DSRESTParameterMetaData[] TServerMethods1_InsertDados_Clientes_Metadata;
    private DSRESTParameterMetaData[] get_TServerMethods1_InsertDados_Clientes_Metadata() {
      if (TServerMethods1_InsertDados_Clientes_Metadata == null) {
        TServerMethods1_InsertDados_Clientes_Metadata = new DSRESTParameterMetaData[]{
          new DSRESTParameterMetaData("Nome", DSRESTParamDirection.Input, DBXDataTypes.WideStringType, "string"),
          new DSRESTParameterMetaData("Erro", DSRESTParamDirection.Output, DBXDataTypes.WideStringType, "string"),
          new DSRESTParameterMetaData("", DSRESTParamDirection.ReturnValue, DBXDataTypes.BooleanType, "Boolean"),
        };
      }
      return TServerMethods1_InsertDados_Clientes_Metadata;
    }[/java]

Pero yo no sé cómo se llama en android
Incluso tengo el código, pero esto no es correcto
[java]private void pesquisar() {
        dialog = progressDialog.show(VendaClienteActivity.this, "Aguarde...",
                "Pesquisando registros");

        new Thread() {
            @Override
            public void run() {
                DSRESTConnection conn = getConnection();
                TServerMethods1 serv = new TServerMethods1(conn);
               
                GetDados_ClientesReturns gc;
               
                TDataSet ds = null;
               
                try {
                    String Codigo;
                    Codigo = edtCliente.getText().toString();
                    gc = serv.GetDados_Clientes(Codigo);
                   
                    //carrega o edit com o resultado do select
                    edtCliente.setText(ds.getValue("nome").GetAsString());
                   
                    finalizaDialogo(false, "");
                   
                } catch (Exception e){
                    finalizaDialogo(true, e.toString());
                }
            }     
           
        }.start();

    }
   
    private DSRESTConnection getConnection() {
        DSRESTConnection conn = new DSRESTConnection();
        conn.setHost(ip);
        conn.setPort(1032); //porta   
       
        return conn;
    }
   
    private void finalizaDialogo(final boolean temErro, final String msg) {
        handler.post(new Runnable() {
           
            @Override
            public void run() {
                if (temErro)
                    Toast.makeText(VendaClienteActivity.this, msg, Toast.LENGTH_LONG).show();
                else
                    AtualizarTela();
                //finaliar o dialogo
                dialog.dismiss();
            }         
        });   
    }
   
    private void AtualizarTela() {
        //
       
    }[/java]

Mi dificultad es pasar el parámetro del código para buscar el ID de cliente y devolver el nombre del cliente en EditText en app android.

Gracias a los que me ayudan.

Lo siento, estoy usando traductor Google
  • 0

#2 adriano_servitec

adriano_servitec

    Advanced Member

  • Miembros
  • PipPipPip
  • 91 mensajes
  • LocationCuritiba-Pr - Brasil

Escrito 30 diciembre 2012 - 10:29

Estaba equivocado

New select in delphi


delphi
  1. function TServerMethods1.GetDados_Clientes(Codigo: string; out Nome: string): string;
  2. begin
  3.   with CDS_Clientes do
  4.   begin
  5.     Close;
  6.     CommandText := ' SELECT CAST(CODIGO AS VARCHAR(30))AS CODIGO, NOME '+
  7.                   '  FROM CLIENTES '+
  8.                   '  WHERE CAST(CODIGO AS VARCHAR(30))AS CODIGO = '+ QuotedStr(Codigo);
  9.     Open;
  10.     Nome := FieldByName('NOME').AsString;
  11.     Result := Nome;
  12.   end;
  13. end;



classe proxy
[java]public GetDados_ClientesReturns GetDados_Clientes(String Codigo) throws DBXException {
      DSRESTCommand cmd = getConnection().CreateCommand();
      cmd.setRequestType(DSHTTPRequestType.GET);
      cmd.setText("TServerMethods1.GetDados_Clientes");
      cmd.prepare(get_TServerMethods1_GetDados_Clientes_Metadata());
      cmd.getParameter(0).getValue().SetAsString(Codigo);
      getConnection().execute(cmd);
      GetDados_ClientesReturns ret = new GetDados_ClientesReturns();
      ret.Nome = cmd.getParameter(1).getValue().GetAsString();
      ret.returnValue = cmd.getParameter(2).getValue().GetAsString();
      return ret;
    }[/java]

Oh, sí que podría traer el resultado en EditText en android
[java]private void pesquisar() {
        dialog = progressDialog.show(VendaClienteActivity.this, "Aguarde...",
                "Pesquisando registros");
        DSRESTConnection conn = getConnection();
        TServerMethods1 serv = new TServerMethods1(conn);

        try {
            String Codigo = edtCliente.getText().toString();

            GetDados_ClientesReturns ret;

            ret = serv.GetDados_Clientes(Codigo);

            // carrega o edit com o resultado do select
            edtCliente.setText(ret.Nome);

            finalizaDialogo(false, "");

        } catch (Exception e) {
            finalizaDialogo(true, e.toString());
        }

    }[/java]

¡gracias
  • 0

#3 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 30 diciembre 2012 - 11:12

Muchos no conocemos de fondo el tema, gracias por compartir la solución (y)



Saludos!
  • 0




IP.Board spam blocked by CleanTalk.