Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

kleinkauff

Query ora retorna valor ora nao

Recommended Posts

Ola pessoal.

 

Bom problema é o seguinte.

Eu tenho em um form uma combo, com as empresas que eu tenho no meu banco. Ate ai tudo certo carrega normal.

O fluxo é, quando seleciono um item na combo resgato do bd os dados referentes aquela empresa.

Esta funcionando parcialmente.

Conforme eu vou selecionando o item, selecionado varias vezes o mesmo item, ora retorna os dados, ora nao.

 

Exemplo: selecionei empresa iMasters retornou valores, depois seleciona a mesma empresa e nao encontrada nada.

 

Segue funcao que da o select no bd

 

static public SolucaoNfe.Mapping.Configuracao.Configuracao SelectConfiguracoes(int codEmpresa)
        {
           SqlConnection cn = new SqlConnection(SolucaoNfe.Common.Dados.ConnectionERP.ConnectionString());
            SolucaoNfe.Mapping.Configuracao.Configuracao obj = null;
            SqlDataReader reader = null;
            try
            {
                
                SqlCommand cmd = new SqlCommand(_uspSelectByEmpresa, cn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("codEmpresa", codEmpresa);
                cn.Open();

                 reader = cmd.ExecuteReader();

                if (reader.Read())
                {
                    //while (reader.Read())
                        obj = new SolucaoNfe.Mapping.Configuracao.Configuracao(reader, true);
                }
                else
                    obj = new SolucaoNfe.Mapping.Configuracao.Configuracao();

                reader.Dispose();
                reader.Close();
            }
            catch (SqlException se)
            {

                throw new Exception(se.Message);
            }
            finally
            {
                
                cn.Close();
            }
            
            return obj;
        }

Há algo errado?

 

Obrigado por lerem!

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia.

Estou sem tempo para testar sua função.

estou postando uma função que você vai colar no modulo, ela recebe parametro e retorna os dados em um data datagridview.

A função abaixo faz tudo para você, oculta as colunas que você não quer mostrar na grade, a mascara e a posição dos dados desntro das colunas.

 

Sub FiltraStore(ByVal NomeProcedure As String, ByVal Campos As Object, ByVal Valores As Object, ByVal TipoDados As Object _
       , ByVal Grade As DataGridView, Optional ByVal ColunaVisivel As Object = Nothing _
       , Optional ByVal ObjTamanho As Object = Nothing, Optional ByVal TamanhoObj As Object = Nothing _
       , Optional ByVal ObjMascara As Object = Nothing, Optional ByVal MascaraObj As Object = Nothing _
       , Optional ByVal ObjPosicao As Object = Nothing, Optional ByVal PosicaoObj As Object = Nothing)
        Dim Cont As Long = 0, Posicao As String
        Try


            'seta a conexao existente
            Using myConnection As New SqlConnection(db.ConnectionString)
                'cria a variavel de comando para a conexao ativa
                Dim myCmd As SqlCommand = myConnection.CreateCommand()
                'Abre a conexao
                myConnection.Open()
                'recebe o nome da procedure
                myCmd.CommandText = NomeProcedure
                'especifica o tipo de comando a ser usado
                myCmd.CommandType = CommandType.StoredProcedure

                For Cont = 0 To UBound(Campos)
                    'Verefica que tipo de dados vai ser passado para o parametro
                    If TipoDados(Cont) = "C" Or TipoDados(Cont) = "c" Then
                        myCmd.Parameters.Add("@" & Campos(Cont), SqlDbType.Char).Value = Valores(Cont)
                    ElseIf TipoDados(Cont) = "D" Or TipoDados(Cont) = "d" Then
                        myCmd.Parameters.Add("@" & Campos(Cont), SqlDbType.DateTime).Value = IIf(IsDate(Valores(Cont)), Valores(Cont), DBNull.Value)
                    ElseIf TipoDados(Cont) = "I" Or TipoDados(Cont) = "i" Then
                        myCmd.Parameters.Add("@" & Campos(Cont), SqlDbType.Int).Value = IIf(IsNumeric(Valores(Cont)), Valores(Cont), 0)
                    ElseIf TipoDados(Cont) = "T" Or TipoDados(Cont) = "t" Then
                        myCmd.Parameters.Add("@" & Campos(Cont), SqlDbType.Text).Value = Valores(Cont)
                    End If
                Next

                'Atribui o camdo sql para o DataAdapter
                Dim myDataAdapter As SqlDataAdapter = New SqlDataAdapter(myCmd)
                'Cria a instacia do DataSet
                Dim myDataSet As DataSet = New DataSet()

                'Linca o DataSet com o DataAdapter
                myDataAdapter.Fill(myDataSet)

                'Linca o DataSet com a Grade
                Grade.DataSource = myDataSet.Tables(0)
                Grade.EditMode = DataGridViewEditMode.EditProgrammatically

            End Using


            If IsArray(ColunaVisivel) Then
                For Cont = 0 To UBound(ColunaVisivel)
                    Grade.Columns.Item(ColunaVisivel(Cont)).Visible = False
                Next
            End If
            If IsArray(ObjTamanho) Then
                For Cont = 0 To UBound(ObjTamanho)
                    Grade.Columns(ObjTamanho(Cont)).Width = TamanhoObj(Cont)
                Next
            End If
            If IsArray(ObjMascara) Then
                For Cont = 0 To UBound(ObjMascara)
                    Grade.Columns(ObjMascara(Cont)).DefaultCellStyle.Format = MascaraObj(Cont)
                Next
            End If
            If IsArray(ObjPosicao) Then
                For Cont = 0 To UBound(ObjPosicao)
                    If PosicaoObj(Cont) = 1 Then
                        Grade.Columns(ObjPosicao(Cont)).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
                    ElseIf PosicaoObj(Cont) = 2 Then
                        Grade.Columns(ObjPosicao(Cont)).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
                    ElseIf PosicaoObj(Cont) = 3 Then
                        Grade.Columns(ObjPosicao(Cont)).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
                    End If
                Next
            End If
            Exit Sub
        Catch ex As Exception
            MsgBox("Erro : " & Err.Description, MsgBoxStyle.Critical)
        End Try

    End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.