Jump to content
Querendo_ser_Nerd

Importar e gravar BD com C#

Recommended Posts

Bom dia , 

 

Pessoal, realizei diversas pesquisas em Fórum e Artigos, meu caso seria, criei uma aplicação na qual realiza a importação de arquivo em XLS em um DataGridView , está carregando a informação a principio em uma coluna (Duvida as colunas no Excel algumas contem sinais e espaço como "Cód. Cliente" como faço select * from [plan1$] para retornar apenas pela posição da coluna ex. select [A1] from [plan1$] ) , certo , carreguei no DataGrid, creei um botão para carregar as informações do data grid para o BD Oracle, passei toda a configuração conexão e realizei o INSERT , mas não popula com as informações do grid na tabela, apenas quando no INSERT ...Values (1) por exemplo o mesmo inseri o valor na tabela no banco. Já realizei a depuração mas não consigo. Sou novo nessa linguagem. Obg pela Ajuda.

 

using System;
using System.Data;
using System.Data.OleDb; // intregração Excel
using System.Data.OracleClient;
using System.Windows.Forms;


namespace WindowsFormsLog
{

    public partial class Form4 : Form
    {
        
        public Form4()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            if(openFileDialog.ShowDialog()== System.Windows.Forms.DialogResult.OK)
            {
                this.textBox1.Text = openFileDialog.FileName;
            }
        }

       

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
           
        }

        public void button2_Click_1(object sender, EventArgs e)
        { 
            string PathCpnn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + textBox1.Text + ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1';";
            OleDbConnection conn = new OleDbConnection(PathCpnn);

            //LINQ c#
             OleDbDataAdapter myDbDataAdapter = new OleDbDataAdapter("Select *  from [Plan1$]", conn); // planilha deve conter o nome Plan1

            DataTable dt = new DataTable(); // armazena dado 
              myDbDataAdapter.Fill(dt);

              dataGridView1.DataSource = dt;
            dataGridView1.Columns[0].HeaderText = "NROPEDCLIENTE"; //alterando nome das colunas 
            //  dataGridView1.Columns[1].HeaderText = "DTAINCLUSAO";
        

        }

   
        private void Form4_Load(object sender, EventArgs e)
        {

        }

        public void button3_Click(object sender, EventArgs e)
        {
            string OracleConn = @"Data Source = ok; User ID =ok ; Password = ok; Unicode = True";
            OracleConnection conexao = new OracleConnection(OracleConn);
            
            try
            {
              
                if (dataGridView1.Rows.Count > 1)
                {

                    for (int i = 1; i <= dataGridView1.Rows.Count ; i++)//-1
                    {
                        int dataGridView1 = Convert.ToInt32(this.dataGridView1.Rows[i].Cells[0].Value);


                        conexao.Open();
                        OracleCommand comando = new OracleCommand ("insert into pedido values(@NROPEDCLIENTE)", conexao);
   

                       comando.Parameters.AddWithValue("NROPEDCLIENTE", dataGridView1);
                   
                        comando.ExecuteNonQuery();
                        MessageBox.Show("Insert");
                        conexao.Close();
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Erro ao inserir"); // Sempre finaliza aqui depuração
            }
            


        }

      
        }
    }


    

Share this post


Link to post
Share on other sites

Tira o TRAY pra ter certeza de onde esta ocorrendo o erro.

 

Ou coloca Console.WriteLine("texto");

entre os comandos pra ver até onde ele vai

 

falo isto porque o problema pode ser outro e ta procurando no lugar errado

 

outra opção é colocar o tray só no 

comando.ExecuteNonQuery();

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By edvaldo joviano de paula
      Prezados, boa tarde!
      Preciso de uma ajuda sendo possível:
       
      Tenho o seguinte cenário em uma consulta ( formação de kits de produtos tendo como produto principal um valor igual, ex: produto 1 é formado pelos produtos 2 e 3)
      select codkit, produtos from kit where codkit = 1
      ---   ----
      1    2
      1    3
      Percebem que o resultado traz o codigo do kit (1) e os produtos que compoem este kit (2,3), porem o produto 2 tambem faz parte do kit 4 junto com o produto 10 e produto 3 faz parte do kit 5 junto com o produto 11 sendo:
      kit 1 (2,3)
      kit 4 (2,10)
      kit 5 (3,11).
       
      Eu preciso de uma ajuda sobre alguma função que ao comprar os produtos 2 e 3 e estes estando na mesma nota fiscal (select produtos from notafiscal = x) traga o resultado do kit que estes dois produtos juntos formam, exemplo, ao pesquisar (select produtos from notafiscal = x) nesta nota existir os produtos 2 e 3 traga o resultado 1, se na nota existir os produtos 2 e 10 traga o resultado 4 e se existir na consulta dos itens da nota os itens 3 e 11 o resultado seja 5. Caso na pesquisa eventualmente existir por exemplo 10 unidades do item 2, 5 unidades do item 3 e 5 unidades do item 10, o resultado deve ser 1 e 4 pois 5 unidades do 2+5 unidades do 3 forma o kit 1 e 5 unidades do 2+ 5 unidades do 10 formam o kit 4.
       
      Espero ter explicado de forma a ser entendido e agradeço a ajuda.
       
    • By Viniciusr9
      Boa tarde pessoal,
      Sei que tem varios tópicos sobre esse erro, porém analisei todos e nenhum foi aplicável ao meu caso ( a maioria era porquê o pessoal esquecia do Group By ao final das Querys) . 
      Se alguém puder ajudar, agradeço . Os campos sem função estão inseridos no group by, porém o erro persiste .
       
       

       
      SELECT * FROM( select LPAD(C.MES_COMPETENCIA,2,'0') ||'/'||C.ANO_COMPETENCIA AS PROJETO, E.DS_EQUIPE as EQUIPE, SUM(NVL((CC.QT_HORAS_CHEIA - SUM(AU.DT_FIM - AU.DT_INI)*24 ),CC.QT_HORAS_CHEIA)) as "ESFORÇO CALCULADO" from EQUIPE E, COLABORADOR C1, COMPETENCIA C, COMPETENCIA_COLABORADOR CC, AUSENCIAS AU where E.CD_EQUIPE=CC.CD_EQUIPE and C.CD_COMPETENCIA=CC.CD_COMPETENCIA and C1.CD_COLABORADOR=CC.CD_COLABORADOR and C1.STATUS = 1 AND C1.CD_GESTOR <> C1.CD_COLABORADOR AND AU.CD_COLABORADOR (+) = C1.CD_COLABORADOR GROUP BY E.DS_EQUIPE, LPAD(C.MES_COMPETENCIA,2,'0') ||'/'||C.ANO_COMPETENCIA ) VT WHERE VT.PROJETO = ((select to_char(sysdate, 'MM') from dual)||'/'||(select to_char(sysdate, 'RRRR') from dual))  
    • By massaotoda
      estou tentando fazer a conexão ao banco de dados oracle 11g no delphi 10.2 pelo fireDAC e está reportando o seguinte erro ao conectar:
      [FireDAC][Phys][Ora] Ora-12546: TNS: permission denied.

      já mandei para o DBA para verificar e ainda não consegui o retorno, fiz o teste conectando em outro banco de dados por exemplo do firebird e conectou ok...

      Alguém saberia me disse qual seria esta permissão para resolver o problema???
    • By alextds
      olá gostaria de saber como fazer para obter o rank das 5 maiores vendas.
      tenho a seguinte tabela:
       
      data                 produto    valor
      31/01/2018    calça       100
      31/01/2018    calça        50
      31/01/2018    camisa    30
      31/01/2018    camisa    30
      31/01/2018    sapato     75
      31/01/2018    bermuda 100
      31/01/2018    meia         10
      31/01/2018    tenis         65
      31/01/2018    luva          20
      31/01/2018    luva          20
      31/01/2019    calça       100
      31/01/2019    calça        50
      31/01/2019    camisa    30
      31/01/2019    camisa    30
      31/01/2019    sapato    75
      31/01/2019    bermuda 100
      31/01/2019    meia         10
      31/01/2019    tenis         65
      31/01/2019    luva          20
      31/01/2019    luva          20  
       
      Preciso que totalize os valores de acordo a data e produto e que apareça somente os 5 primeiros dessa forma  :
       
      data                 produto       valor   rank
      31/01/2018    calça           150      1
      31/01/2018    bermuda    100       2
      31/01/2018    sapato        75         3
      31/01/2018    tenis            65        4
      31/01/2018    camisa        60        5
      31/01/2019    calça           150      1
      31/01/2019    bermuda     100      2
      31/01/2019    sapato         75        3
      31/01/2019    tenis             65       4
      31/01/2019    camisa         60       5
       
      Se alguém tiver uma solução facil agradeço.
       
       
    • By samuelpanamericana
      Olá Pessoal, estou com um problema com relação ao Oracle em nossas máquinas aqui! Quando tentamos acessar o SGT (sistema de gerenciamento textil) através de um usuário de rede comum sem privilégios administrativos na máquina ele apresenta o seguinte erro ERRO: "Oracle não instalado ou seu caminho é inválido. Consulte o seu superior [\Bin\ORA803.dll]" Código de erro 803 O usuário não tem acesso ao Oracle Path por ser um usuário comum sem privilégios administrativos, devido a problemas de segurança não queremos deixar os usuários com privilégios administrativos evitando assim problemas com a alteração e instalação de programas, abrimos esse tópico para resolver este problema da necessidade de ser um administrador da máquina para executar o SGT, precisamos que usuários sejam comuns para acessá-lo! Confirmei que o usuário está tendo privilégios apropriados no caminho binário Oracle. Os usuários têm acesso completo ao caminho "C: \ Oracle", eu já configurei dessa maneira: Cliquei com o botão direito do mouse na pasta oracle/segurança/usuários do domínio/controle total A única maneira que nosso programa(SGT) pode encontrar a pasta oracle é definir os usuários do domínio para o grupo de administradores Porém tivemos alguns problemas ao fazer isso como por exemplo usuarios instalando programas de terceiro e efetuando alterações nas máquinas. Se alguém já passou pela mesma situação ou situação parecida eu ficaria grato se pudessem ajudar!! Atenciosamente Samuel
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.