DOR DE CABECA DEPOIS DE FORMATAR MEU PCBOA TARDE G

RPMARQUES 29/12/2012 17:01:30
#416558
boa tarde pessoal, seguinte, formatei meu notebook, reinstalei meu VS 2010, npgsql(pelo nuget), até ai tudo normal, mas o que esta estranho é que em alguns pontos o sistema nao esta funcionanado por exemplo, tenho um form onde gerencio o cadastro dos clientes, até ai ta tudo bem, quando eu clica no botao visualizar, no caso do um selec e peço pra mostrar os dados, ele nao traz nada, vo posta os comando que estou desenvolvendo...

======================================================================
Citação:

Public Function PegaCli(ByVal rCodigo As Integer) As NpgsqlDataReader
Try
Dim DR As NpgsqlDataReader
DR = ConsultaSQL([Ô]SELECT * FROM cliente WHERE codcli=[ô][Ô] & rCodigo & [Ô][ô][Ô])
Return DR

Catch ex As Exception
MsgBox([Ô]Erro na função: PegaCli[Ô] & vbNewLine & ex.Message)
End Try

End Function



============================================================================
Citação:

Public Function ConsultaSQL(ByVal rComandoSQL As String) As NpgsqlDataReader

[ô]VERIFICA SE rComandoSQL TEM ALGUM CONTEUDO
If rComandoSQL = [Ô][Ô] Then
MsgBox([Ô]FUNÇÃO: ConsultaSQL[Ô] & vbNewLine & _
[Ô]Informar um comando SQL[Ô])
End If

AbreBanco()

DA = New NpgsqlDataAdapter(rComandoSQL, conn)
cmdSQL = New NpgsqlCommand(rComandoSQL, conn)
DR = cmdSQL.ExecuteReader()

FechaBanco()

Return DR
End Function


===========================================================

aqui esta os comando que estou usando no meu form, o engraçado é que ele nao da nenhum erro,
este código abaixo esta no load do form que abre o cadastro de cliente para edição e afins,
alguem pode me da uma ajuda???
===========================================================
Citação:

Try
Dim DRCli As NpgsqlDataReader


Select Case wAcao
Case Is = [Ô]insert[Ô]
Me.Text = [Ô]INCLUSÃO DE CLIENTES[Ô]

Case Is = [Ô]update[Ô]
DRCli = PegaCli(wCodigo)
Me.Text = [Ô]ALTERAÇÃO DE CLIENTES[Ô]
While DRCli.Read()
Me.txtNome.Text = DRCli([Ô]nome[Ô]).ToString.Trim
Me.txtEndereco.Text = DRCli([Ô]endereco[Ô]).ToString.Trim
Me.txtBairo.Text = DRCli([Ô]bairro[Ô]).ToString.Trim
Me.mskFoneRes.Text = DRCli([Ô]foneres[Ô]).ToString.Trim
Me.mskFoneCom.Text = DRCli([Ô]fonecom[Ô]).ToString.Trim
Me.mskFoneCel.Text = DRCli([Ô]fonecel[Ô]).ToString.Trim
Me.txtEmail.Text = DRCli([Ô]email[Ô]).ToString.ToLower.Trim
End While

Case Is = [Ô]select[Ô]
DRCli = PegaCli(wCodigo)
MsgBox(DRCli.HasRows.ToString)
Me.Text = [Ô]VISUALIZAÇÃO DE CLIENTE[Ô]
Me.cmdOK.Enabled = False
While DRCli.Read()
Me.txtNome.Text = DRCli([Ô]nome[Ô]).ToString.Trim
Me.txtEndereco.Text = DRCli([Ô]endereco[Ô]).ToString.Trim
Me.txtBairo.Text = DRCli([Ô]bairro[Ô]).ToString.Trim
Me.mskFoneRes.Text = DRCli([Ô]foneres[Ô]).ToString.Trim
Me.mskFoneCom.Text = DRCli([Ô]fonecom[Ô]).ToString.Trim
Me.mskFoneCel.Text = DRCli([Ô]fonecel[Ô]).ToString.Trim
Me.txtEmail.Text = DRCli([Ô]email[Ô]).ToString.ToLower.Trim
End While

Case Is = [Ô]delete[Ô]
Me.Text = [Ô]EXCLUSÃO DE CLIENTE[Ô]
End Select

Catch ex As Exception
MsgBox(ex.Message)

End Try
End Sub

PROFESSOR 29/12/2012 17:25:55
#416560
Resposta escolhida
Não, á princípio, exceto possivelmente um [Ô]FechaBanco[Ô], não vejo erros claros...

Tente, só para matar as dúvidas, não utilizar um DataReader (que pode/deve estar vazio após ter sido encerrada a conexão), mas sim um DataTable, preenchido por um DataAdapter.

Mas não [Ô]mate[Ô] as suas rotinas, hehehe, é só para testar, e você visualizar as diferenças, ok?

O DataAdapter não requer uma conexão aberta, mas apenas a instrução SQL e a string de conexão. Com o método Fill, ele se conecta, preenche um DataTable ou DataSet com os dados da consulta e encerra a conexão.

Public Function ConsultaSQL(ByVal rComandoSQL As String) As DataTable
Dim dt As DataTable = Nothing
If rComandoSQL = [Ô][Ô] Then
MsgBox([Ô]FUNÇÃO: ConsultaSQL[Ô] & vbNewLine & [Ô]Informar um comando SQL[Ô])
Else
Try
[ô]Com Using / End Using, o próprio DataAdapter será destruído após o uso.
Using mDA As New NpgsqlDataAdapter(rComandoSQL, conn.ConnectionString)
dt = New DataTable
mDA.Fill(dt)
End Using
Catch ex As Exception
dt = Nothing
MsgBox(String.Format([Ô]FUNÇÃO: ConsultaSQL{0}{1}[Ô], vbNewLine, ex.Message))
End Try
End If
Return dt
End Function


O DataReader é de fato mais rápido do que o DataAdapter, mas sua instância é dependente do conector. E se utilizar um DataAdapter com ele, estará apenas [Ô]dobrando o peso[Ô], pois é mais um componente á ser gerenciado. Assim, um DataTable carregado por um DataAdapter, ainda que um pouco mais lento, pode ser o mais adequado.
RPMARQUES 29/12/2012 18:49:26
#416563
resolvi tirando o fechabanco...

obrigado pela explicação [Ô]teacher[Ô]

feliz ano novo pra todos
Tópico encerrado , respostas não são mais permitidas