C# + Progress

Discussão em 'Progress 4GL' iniciado por anderson, Setembro 21, 2009.

  1. anderson

    anderson Sem Pontuação

    Boa tarde Pessoal

    Estou fazendo um programinha que integra dois bancos um é Progress e o outro é Sql Server, e para isso estou usando a linguagem C#.
    Funcionau perfeitamente até que eu tive que acessar uma tabela com "-", ai veio o problema.

    Classe de conecxão
    Código:
    class Progress
        {
            private static string StrConexaoExpress = "Driver={Progress OpenEdge 10.2A Driver}; HostName=localhost; PortNumber=15625;" +
                                                      " DatabaseName=ems2000; DefaultIsolationLevel=READ COMMITTED; LogonID=root; Password=root";
    
                /*DefaultIsolationLevel=READ UNCOMMITTED;
                DefaultIsolationLevel=READ COMMITTED;
                DefaultIsolationLevel=REPEATABLE READ;
                DefaultIsolationLevel=SERIALIZABLE ;*/
    
    
            private static OdbcConnection connPgs;
    
            private static void If(bool p)
            {
                throw new NotImplementedException();
            }
    
            public static void conectProgress()
            {
                connPgs = new OdbcConnection();
                connPgs.ConnectionString = StrConexaoExpress;
                connPgs.Open();
            }
    
            public static void desconectProgress()
            {
                if (connPgs.State == ConnectionState.Open)
                    connPgs.Close();
            }
    
            public static OdbcDataReader ExecutaDataReader(string Sql)
            {
                OdbcCommand cmdComando = new OdbcCommand();
                cmdComando.CommandText = Sql;
                cmdComando.CommandType = CommandType.Text;
                cmdComando.Connection = connPgs;
    
                OdbcDataReader dr;
                dr = cmdComando.ExecuteReader();
    
                return dr;
            }
    
            public static void ExecutaComando(string strQuery)
            {
                try
                {
                    OdbcCommand cmdComando = new OdbcCommand();
                    cmdComando.CommandText = strQuery;
                    cmdComando.CommandType = CommandType.Text;
                    cmdComando.Connection = connPgs;
                    cmdComando.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
    
            public static string ExecutaRetornaString(string strQuery)
            {
                OdbcDataReader dr = ExecutaDataReader(strQuery);
                if (dr.Read())
                {
                    string ret = dr[0].ToString();
                    dr.Dispose();
                    return ret;
                }
                dr.Dispose();
                return null;
            }
    
            public static string AutoInc(string tabela, string chave)
            {
                string id = ExecutaRetornaString("SELECT MAX(" + chave + ") FROM " + tabela);
                if (id == "")
                {
                    id = "0";
                }
    
                int i = Convert.ToInt16(id);
    
                i++;
                return i.ToString();
            }
    
            public static OdbcDataAdapter ExecutaDataAdapter(string strQuery)
            {
                OdbcCommand cmd = new OdbcCommand();
                cmd.CommandText = strQuery;
                cmd.Connection = connPgs;
    
                OdbcDataAdapter da = new OdbcDataAdapter();
                da.SelectCommand = cmd;
                return da;
            }
    
            internal static string cliente(string p)
            {
                throw new NotImplementedException();
            }
        }
    Comando que executa o select.
    Código:
    Classe.Progress.conectProgress();
                
                string sql = @"select * from pub.es_teste";
                
                OdbcDataAdapter da = Classe.Progress.ExecutaDataAdapter(sql);
                DataSet ds = new DataSet();
                da.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];
                ds.Dispose();
                da.Dispose();
    Tudo funciona perfeitamente até aqui.
    Mas se eu usar o select em uma tabela com "-", ai não rola
    Ja tentei usar:
    string sql = @"select * from ""pub.es-teste""";
    mas a string recebe "select * from \"pub.es-teste\""; e ai não funciona.
    Alguem já passou por isso e que possa me ajudar?
    Obrigado e até mais.
  2. TrombiniSP

    TrombiniSP Membro Participativo

    Anderson,

    Eu não vou poder verificar pra vc como resolver isso. Entre em www.psdn.com e dá uma buscada lá, ou pelo KBase da Progress que vc pode procurar alguma coisa.

    Eu não faço acesso do C# em banco Progress conectando o bando Progress. Eu criei uma procedure que gera classes pelo ProxyGen em Dot.Net e é executada pelo Appserver, isso se chama Open Client e na documentação da Progress tem tudo sobre o assunto, baixe os .pdfs lá e boa sorte.

    Se quiser posso dar coach/treinamento no fim de semana de como fazer. Desde a configuração do ambiente até programar.

    TY MAN
  3. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

    Não conheço C#, mas acredido que seja o mesmo problema de qualquer SQL, todo campo no SQL que tiver traço deve ser utilizado desta forma entre aspas duplas "meu-campo", tipo pub.tabela."meu-campo" e os dados char utilizando aspas simples.

    Espero que ajude.
  4. TrombiniSP

    TrombiniSP Membro Participativo

    Ta bom! Ta bom!! rsrs

    Mais tarde vou testar seu fonte e vamos resolver isso,..

    Abs..

    hauhuahuah

    TY
  5. anderson

    anderson Sem Pontuação

    Ok Trombini vou ver o que eu acho neste linke que vc me passou,

    Desde já muito obrigado.
  6. sl4v3r

    sl4v3r Membro Participativo

    Amigao...

    Acho que seria dessa forma

    Código:
    select * from pub.\"es-teste\"
    e nao dessa.

    Código:
    select * from \"pub.es-teste\"
    abs

Compartilhe esta Página