Erro buscando dados SQL

Discussão em 'Progress 4GL' iniciado por DFResmer, Junho 20, 2011.

  1. DFResmer

    DFResmer Membro Participativo

    Eu acho que tenho que definir o formato decimal no SQL antes do progress, o progress não está interpretando corretamente, os outros campo ele importa corretamente, mas eles são campos caracteres e até mesmo data.
    Defini desta forma:
    DEF VAR i-vlrent AS DEC FORM '-Z,ZZZ,ZZ9.99'.
    DEF VAR i-vlrsai AS DEC FORM '-Z,ZZZ,ZZ9.99'.
  2. kirchner

    kirchner Membro Participativo Moderador

    Sai a query para a gente verificar?
  3. DFResmer

    DFResmer Membro Participativo

    [prog=]ado-registro = 0.
    fi-saldo = 0.

    Create "ADODB.Connection" Cnxn0.
    Create "ADODB.RecordSet" rs0.
    Create "ADODB.Command" ObjCommand0.

    assign odbc-query = "Select * from vSaldoItemDia WHERE cd_item = '" + INPUT FRAME fr-001 fi-item + "' AND cd_deposito = 1".


    /*****comando tabelas***/
    Cnxn0:Open ( "data source=Everest_1;server=192.168.0.1\everest2", "everest", "15544SERRA", -1).

    assign ObjCommand0:ActiveConnection = Cnxn0.
    assign ObjCommand0:CommandText = odbc-query.
    assign objCommand0:CommandType = 1.
    assign Cnxn0:CursorLocation = 3.
    assign rs0:CursorType = 1.
    assign rs0:LockType = 3.
    assign rs0 = ObjCommand0:EXECUTE(OUTPUT ado-null,"",32).
    assign ado-recordcont = rs0:RecordCount.

    do transaction:
    if (ado-recordcont > 0) and not (ado-recordcont = ?) then do:
    rs0:MoveFirst no-error.

    do while ado-registro < ado-recordcont:
    i-vlrent = DEC(string(rs0:FIELDS("CONVERT(VARCHAR,qt_entrada,1)"):value)).
    i-vlrsai = DEC(string(rs0:FIELDS("qt_saida"):value)).
    i-codigo = (STRING(rs0:FIELDS("cd_item"):value)).
    i-dtaemi = DATE(STRING(rs0:FIELDS("dt_saldo"):value)).
    fi-conta = fi-conta + 1.
    IF i-vlrent = ? THEN i-vlrent = 0.
    IF i-vlrsai = ? THEN i-vlrsai = 0.
    fi-saldo = fi-saldo + i-vlrent - i-vlrsai.

    assign ado-registro = ado-registro + 1.
    rs0:MoveNext.
    end.

    end.
    else
    message "Não Encontrado Lançamentos".
    end.

    ObjCommand0:CLOSE no-error.
    release OBJECT Cnxn0 no-error.
    release OBJECT ObjCommand0 no-error.
    release OBJECT rs0 no-error.
    assign Cnxn0 = ? ObjCommand0 = ? rs0 = ?.

    DISPLAY fi-saldo fi-conta WITH FRAME fr-001.[/prog]
  4. DFResmer

    DFResmer Membro Participativo



    • ado-registro = 0.
      fi-saldo = 0.

      Create "ADODB.Connection" Cnxn0.
      Create "ADODB.RecordSet" rs0.
      Create "ADODB.Command" ObjCommand0.

      assign odbc-query = "Select * from vSaldoItemDia WHERE cd_item = '" + INPUT FRAME fr-001 fi-item + "' AND cd_deposito = 1".


      /*****comando tabelas***/
      Cnxn0:Open ( "data source=Everest_1;server=192.168.0.1\everest2", "everest", "ever", -1).

      assign ObjCommand0:ActiveConnection = Cnxn0.
      assign ObjCommand0:CommandText = odbc-query.
      assign objCommand0:CommandType = 1.
      assign Cnxn0:CursorLocation = 3.
      assign rs0:CursorType = 1.
      assign rs0:LockType = 3.
      assign rs0 = ObjCommand0:EXECUTE(OUTPUT ado-null,"",32).
      assign ado-recordcont = rs0:RecordCount.

      do transaction:
      if (ado-recordcont > 0) and not (ado-recordcont = ?) then do:
      rs0:MoveFirst no-error.

      do while ado-registro < ado-recordcont:
      i-vlrent = DEC(string(rs0:FIELDS("CONVERT(VARCHAR,qt_entrada,1)"):value)).
      i-vlrsai = DEC(string(rs0:FIELDS("qt_saida"):value)).
      i-codigo = (STRING(rs0:FIELDS("cd_item"):value)).
      i-dtaemi = DATE(STRING(rs0:FIELDS("dt_saldo"):value)).
      fi-conta = fi-conta + 1.
      IF i-vlrent = ? THEN i-vlrent = 0.
      IF i-vlrsai = ? THEN i-vlrsai = 0.
      fi-saldo = fi-saldo + i-vlrent - i-vlrsai.

      assign ado-registro = ado-registro + 1.
      rs0:MoveNext.
      end.

      end.
      else
      message "Não Encontrado Lançamentos".
      end.

      ObjCommand0:CLOSE no-error.
      release OBJECT Cnxn0 no-error.
      release OBJECT ObjCommand0 no-error.
      release OBJECT rs0 no-error.
      assign Cnxn0 = ? ObjCommand0 = ? rs0 = ?.

      DISPLAY fi-saldo fi-conta WITH FRAME fr-001.
  5. kirchner

    kirchner Membro Participativo Moderador

    Hum, SELECT * não ajuda mesmo.
    É uma View? Manda a definição dela....

    Você está usando isso mesmo?
    Código:
    i-vlrent = DEC(string(rs0:FIELDS("CONVERT(VARCHAR,qt_entrada,1)"):value)).
    Tenho quase certeza que teu campo não tem o nome de "CONVERT(VARCHAR,qt_entrada,1)" :)
  6. DFResmer

    DFResmer Membro Participativo

    Na verdade esta linha acima não to usando isso não, é que tentei um monte de coisa e acabei esquecendo de mudar antes de te mandar, o correto seria assim:

    i-vlrent = DEC(string(rs0:FIELDS("qt_entrada"):value)).

    Segue definições:

    /*******DBO***********/
    def var ado-null as character no-undo.
    def var ado-recordcont as integer no-undo.
    def var ado-registro as integer no-undo.
    Def var Cnxn0 as com-handle no-undo.
    Def var rs0 as com-handle no-undo.
    Def var ObjCommand0 as com-handle no-undo.
    Def var odbc-query as character no-undo.
    /*********************/

    DEF VAR i-vlrent AS DEC FORM '-Z,ZZZ,ZZ9.99'.
    DEF VAR i-vlrsai AS DEC FORM '-Z,ZZZ,ZZ9.99'.
    DEF VAR i-codigo AS CHAR.
    DEF VAR i-dtaemi AS DATE.

Compartilhe esta Página