Paulo# Posted April 8, 2017 at 09:45 PM Report #603547 Posted April 8, 2017 at 09:45 PM Estou com uma dúvida referentes a emissão da última fatura em uma relação de faturas de um programa de controle de estoque no momento de sua inserção. A mensagem acima (título) aparece quando clico no botão finalizar. Deveria me mostrar a última fatura do relatório de faturas não todas, e sem a mensagem de erro. Abaixo o código. Sou amador na area. estou começando, se puderem me ajudar agradeceria muito. Segue abaixo a linha de programação: Private Sub BTN_finalizar_Click(sender As Object, e As EventArgs) Handles BTN_finalizar.Click Dim numero As Integer conectar.Open() sql = "Select * from faturas where nfatura = '" & TB_nfatura.Text & "'" Adaptar = New SqlDataAdapter(sql, conectar) tabela = New DataTable() Adaptar.Fill(tabela) numero = tabela.Rows.Count conectar.Close() obterultimoregistro() F_relfaturas.Show() Private Sub obterultimoregistro() Try conectar.Open() Dim comando As New SqlCommand comando.CommandText = "select MAX (nfatura) from faturas" comando.CommandType = CommandType.Text comando.Connection = conectar Adaptar.SelectCommand = comando conectar.Close() tabela.Clear() Adaptar.Fill(tabela) Dim nfatura As String = tabela.Rows.Item(0).Item(0) Catch ex As Exception MsgBox(ex.Message) End Try End Sub
M6 Posted April 10, 2017 at 11:00 AM Report #603567 Posted April 10, 2017 at 11:00 AM Pelo que me parece, estás a tentar converter um null de base de dados para uma string. Tens de verificar se o valor é null antes de fazer a conversão. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
Paulo# Posted April 12, 2017 at 11:55 PM Author Report #603606 Posted April 12, 2017 at 11:55 PM bem. foi o que fiz, mas acho que terei que refazer a tabela de banco de dados novamente.vou ver no que dá.
M6 Posted April 13, 2017 at 07:31 PM Report #603626 Posted April 13, 2017 at 07:31 PM Refazeres a tabela da base de dados não te vai resolver o problema do VB... 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
Nomadeback Posted August 12, 2017 at 02:26 AM Report #606541 Posted August 12, 2017 at 02:26 AM Não utilize "select MAX" ou "select Sum" sem antes verificar se há registro no banco de dados com o filtro que você especificou, quando a STRING não encontra nada ela retorna um "DBnull", portanto faça assim . Public Sub Total_Entradas() Dim data As Date Dim mes As Integer data = Form1.dataIni.Value mes = Month(data) Using con As OleDbConnection = GetConnection() Try con.Open() Dim sql As String = "SELECT*FROM [Entradas] WHERE MONTH (Data) = " & mes 'Seleciona registros no banco de dados Dim cmd As OleDbCommand = New OleDbCommand(sql, con) Dim Valor As Object Valor = cmd.ExecuteScalar 'Recebe registro If Valor <> 0 Then 'Verifica se existe dados no registro, se ouver ele soma se naõ... Dim sqll As String = "SELECT SUM(Valor) FROM [Entradas] WHERE MONTH (Data) = " & mes Dim cmdd As OleDbCommand = New OleDbCommand(sqll, con) Dim Total As Object Total = cmdd.ExecuteScalar Form1.tbTotal.Text = Total Else Form1.tbTotal.Text = "R$ 0,00" '...Preenche textbox com um texto End If Catch ex As Exception MsgBox(ex.Message) Finally con.Close() End Try End Using End Sub
Rui Carlos Posted August 12, 2017 at 11:58 AM Report #606545 Posted August 12, 2017 at 11:58 AM 9 horas atrás, Nomadeback disse: Não utilize "select MAX" ou "select Sum" sem antes verificar se há registro no banco de dados com o filtro que você especificou, quando a STRING não encontra nada ela retorna um "DBnull", portanto faça assim . Não me parece que estar a fazer duas queries, quando uma é suficiente, seja a solução apropriada. Rui Carlos Gonçalves
FreiNando Posted August 14, 2017 at 09:55 PM Report #606568 Posted August 14, 2017 at 09:55 PM Penso que o erro não é na base de dados nem na query, mas aqui: Dim nfatura As String = tabela.Rows.Item(0).Item(0) Verifica se é null: If tabela.Rows.Item(0).Item(0) IsNot System.DBNull.Value Then 'copiar a celula para a variável End If Já agora se o nfatura na base de dados é Integer, então no Vb convem ser também Integer. Poderás ter problemas quando chegar a números maiores que 1000 e o teu sistema estiver configurado para separador de milhares com (.) 1 Report O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now