Jump to content
informaster

Como imprimir directamente para a lpt1 impressora epson tm88 termica -SQLITE

Recommended Posts

informaster

Bom Dia a tudo.

Tenho este codigo de uma form de entrada de stock de produtos, com registo do empregado / hora / data

Imports System.Data.SQLite
Imports System.Data
Imports System.IO

Public Class frm_entradas

    Dim sConnectionString As String
    Public id As Integer = -1

    'Carrega entradas com filtro de empregado/so o documento que grava/e dia
    Public Sub carregaentradas()
        Try
            'define string de conexão com banco de dados SQLite
            'usando a criptografia
            sConnectionString = "Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;"
            'abre a conexão
            Dim oConn As New SQLite.SQLiteConnection(sConnectionString)
            oConn.Open()
            'define o comando SQL para retornar todos os dados da tabela Movimentos Entradas
            Dim daentradas As New SQLite.SQLiteDataAdapter("Select id,cod,produto,quantidade,data,hora,empregado,iddoc From moventradas Where empregado='" & frm_principal.txt_infoemp.Text & "' AND data = '" & frm_principal.txt_data.Text & "' AND iddoc = '" & txt_iddoc.Text & "' order by id Desc", oConn)
            'define o dataset
            Dim ds As New DataSet("Northwind")
            'define o esquema da tabela
            daentradas.FillSchema(ds, SchemaType.Source, "moventradas")
            'preenche o dataset
            daentradas.Fill(ds, "moventradas")
            'exibe os dados no datagridview
            gdvDados_entradas.DataSource = ds.Tables("moventradas")
            'fecha a conexao
            oConn.Close()
        Catch ex As Exception
            MsgBox("Erro ao acessar o banco de dados SQLite: " & ex.Message)
        End Try
    End Sub

    'Carrega valor dos produtos na combobox para apartir dai já poder actualiza-los
    Public Sub valores_produtos()
        Try

            'define um objeto Command
            Dim SQLcommand As SQLiteCommand
            sConnectionString = "Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;"
            Dim SQLconnect As New SQLite.SQLiteConnection(sConnectionString)
            SQLconnect.Open()
            SQLcommand = SQLconnect.CreateCommand

            'executa a consulta
            SQLcommand.CommandText = "Select * from produtos"

            'VARIAVEL LEITOR É UM DATA READER DO SQLITE E PODE SER IGUAL A UM COMANDO SQL . EXECUTANDO UM READER
            Dim leitorprodutos As SQLiteDataReader = SQLcommand.ExecuteReader()

            'SE LEITOR  TIVER LINHAS ENTÃO
            If leitorprodutos.HasRows Then

                'EXECUTA ATE LERES OS DADOS dos PRODUTOS PARA STRING
                While leitorprodutos.Read()
                    cb_produtosins.Items.Add(leitorprodutos.Item("descricao")).ToString()
                    cb_produtosins.Text = leitorprodutos.Item("descricao")
                    txt_stockactual.Text = leitorprodutos.Item("stockactual")
                    txt_id.Text = leitorprodutos.Item("id")
                End While
            End If

            SQLcommand.Dispose()
            SQLconnect.Close()
        Catch ex As Exception
            MsgBox("Erro ao acessar o SQLite: " & ex.Message)
        End Try

    End Sub

    'Carrega valor dos produtos actualizados na text´s box´s 
    Public Sub valores_actualizados(ByVal actualizar As String)
        Try

            'define um objeto Command
            Dim SQLcommand As SQLiteCommand
            sConnectionString = "Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;"
            Dim SQLconnect As New SQLite.SQLiteConnection(sConnectionString)
            SQLconnect.Open()
            SQLcommand = SQLconnect.CreateCommand

            'executa a consulta
            SQLcommand.CommandText = "SELECT * FROM produtos WHERE descricao = '" + actualizar + "'"


            'VARIAVEL LEITOR É UM DATA READER DO SQLITE E PODE SER IGUAL A UM COMANDO SQL . EXECUTANDO UM READER
            Dim leitorprodutos2 As SQLiteDataReader = SQLcommand.ExecuteReader()

            'SE LEITOR  TIVER LINHAS ENTÃO
            If leitorprodutos2.HasRows Then

                'EXECUTA ATE LERES OS DADOS dos Produtos PARA STRING
                While leitorprodutos2.Read()
                    txt_stockactual.Text = leitorprodutos2.Item("stockactual")
                    txt_id.Text = leitorprodutos2.Item("id")

                End While
            End If

            SQLcommand.Dispose()
            SQLconnect.Close()
        Catch ex As Exception
            MsgBox("Erro ao acessar o SQLite: " & ex.Message)
        End Try

    End Sub


    Public Sub valores_actualizados2()
        Try

            'define um objeto Command
            Dim SQLcommand As SQLiteCommand
            sConnectionString = "Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;"
            Dim SQLconnect As New SQLite.SQLiteConnection(sConnectionString)
            SQLconnect.Open()
            SQLcommand = SQLconnect.CreateCommand

            'executa a consulta
            SQLcommand.CommandText = "SELECT * FROM produtos"


            'VARIAVEL LEITOR É UM DATA READER DO SQLITE E PODE SER IGUAL A UM COMANDO SQL . EXECUTANDO UM READER
            Dim leitorprodutos2 As SQLiteDataReader = SQLcommand.ExecuteReader()

            'SE LEITOR  TIVER LINHAS ENTÃO
            If leitorprodutos2.HasRows Then

                'EXECUTA ATE LERES OS DADOS dos Produtos PARA STRING
                While leitorprodutos2.Read()
                    txt_stockactual.Text = leitorprodutos2.Item("stockactual")
                End While
            End If

            SQLcommand.Dispose()
            SQLconnect.Close()
        Catch ex As Exception
            MsgBox("Erro ao acessar o SQLite: " & ex.Message)
        End Try

    End Sub

    'Lê o proximo numero a ler dos documentos gravados 1,2,3 documento de entrada
    Public Sub valores_iddocentradas()
        Try

            'define um objeto Command
            Dim SQLcommand As SQLiteCommand
            sConnectionString = "Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;"
            Dim SQLconnect As New SQLite.SQLiteConnection(sConnectionString)
            SQLconnect.Open()
            SQLcommand = SQLconnect.CreateCommand

            'executa a consulta
            SQLcommand.CommandText = "Select docnumero from docentradas"

            'VARIAVEL LEITOR É UM DATA READER DO SQLITE E PODE SER IGUAL A UM COMANDO SQL . EXECUTANDO UM READER
            Dim leitordocentradas As SQLiteDataReader = SQLcommand.ExecuteReader()

            'SE LEITOR  TIVER LINHAS ENTÃO
            If leitordocentradas.HasRows Then

                'EXECUTA ATE LERES OS DADOS dos documentos de entradas PARA STRING
                While leitordocentradas.Read()
                    txt_iddoc.Text = (leitordocentradas.Item("docnumero") + 1)

                End While
            End If

            SQLcommand.Dispose()
            SQLconnect.Close()
        Catch ex As Exception
            MsgBox("Erro ao acessar o SQLite: " & ex.Message)
        End Try

    End Sub

    Private Sub frm_entradas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'frm_principal desactiva
        frm_principal.Enabled = False
        'botao gravar entrada desactivo
        bt_gravarentrada.Enabled = False

        carregaentradas()
        valores_produtos()
        valores_iddocentradas()
    End Sub


    Private Sub bt_sairacesso_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_sairentrada.Click
        'frm_principal novamente activa
        frm_principal.Enabled = True
        'fecha esta form entradas
        Me.Close()
    End Sub


    Private Sub bt_inserirlinha_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_inserirlinha.Click
        bt_sairentrada.Enabled = False
        Try
            'define um objeto Command
            Dim SQLcommand As SQLiteCommand
            sConnectionString = "Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;"
            Dim SQLconnect As New SQLite.SQLiteConnection(sConnectionString)
            SQLconnect.Open()
            SQLcommand = SQLconnect.CreateCommand

            'Botao gravar está enable
            bt_gravarentrada.Enabled = True

            Dim maisstock As String = txt_quantidade.Value
            Dim idproduto As String = txt_id.Text

            'INSERE OS REGISTOS DAS TEXTBOX´S NA BD SQLITE ENTRADAS DE PRODUTOS

            SQLcommand.CommandText = "INSERT INTO moventradas(cod,produto,quantidade,data,hora,empregado,iddoc)  VALUES ('" + txt_id.Text.Replace("'", "''") + "','" + cb_produtosins.Text.Replace("'", "''") + "','" + txt_quantidade.Text.Replace("'", "''") + "','" + frm_principal.txt_data.Text.Replace("'", "''") + "','" + frm_principal.txt_hora.Text.Replace("'", "''") + "','" + frm_principal.txt_infoemp.Text.Replace("'", "''") + "','" + txt_iddoc.Text.Replace("'", "''") + "')"
            'retorna o insert
            SQLcommand.ExecuteNonQuery()

            SQLcommand.CommandText = "UPDATE produtos SET stockactual = stockactual + ('" + maisstock.ToString + "') WHERE id=('" + idproduto.ToString + "')"
            'retorna o update 
            SQLcommand.ExecuteNonQuery()

            SQLcommand.Dispose()
            SQLconnect.Close()
            valores_actualizados(cb_produtosins.Text)
            cb_produtosins.Text = String.Empty
            txt_quantidade.Value = "1"

        Catch ex As Exception
            MsgBox("Erro ao acessar o SQLite: " & ex.Message)
        End Try

        cb_produtosins.Focus()
        carregaentradas()
    End Sub


    Private Sub bt_gravarentrada_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_gravarentrada.Click
        Try
            'define um objeto Command
            Dim SQLcommand As SQLiteCommand
            sConnectionString = "Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;"
            Dim SQLconnect As New SQLite.SQLiteConnection(sConnectionString)
            SQLconnect.Open()
            SQLcommand = SQLconnect.CreateCommand


            'INSERE OS REGISTOS DAS TEXTBOX´S NA BD SQLITE docentradas
            SQLcommand.CommandText = "INSERT INTO docentradas(docnumero)  VALUES ('" + txt_iddoc.Text.Replace("'", "''") + "')"

            'executa a consulta
            SQLcommand.ExecuteNonQuery()
            SQLcommand.Dispose()
            SQLconnect.Close()

            'Mensagem quando guarda
            MsgBox("Foi inserido um novo documento de ENTRADA DE STOCK Nº" + txt_iddoc.Text.ToUpper + "Por o empregado, " + frm_principal.txt_infoemp.Text)
            bt_sairentrada.Enabled = True

            Me.Close()
            frm_print_entradas.Show()
            frm_principal.Enabled = True


        Catch ex As Exception
            MsgBox("Erro ao acessar o SQLite: " & ex.Message)
        End Try

    End Sub

    Private Sub cb_produtosins_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cb_produtosins.SelectedIndexChanged
        valores_actualizados(cb_produtosins.Text)
    End Sub

    Private Sub bt_apagaprodutos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_apagaprodutos.Click
        'apagar linha secionada
        If id >= 0 Then
            My.Forms.frm_apagaentradas.ShowDialog()
            carregaentradas()
        Else
            MsgBox("Selecione um produto a apagar...")
        End If
    End Sub

    Private Sub gdvDados_entradas_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles gdvDados_entradas.CellClick
        'se selecionar a coluna seleciona os valores para depois apagar mais tarde
        If gdvDados_entradas.SelectedRows.Count > 0 Then
            Dim linhaAtual As DataGridViewRow = gdvDados_entradas.SelectedRows(0)
            id = Convert.ToInt32(linhaAtual.Cells(0).Value)
        End If
    End Sub


    Private Sub ProdutosBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.Validate()
    End Sub
End Class

E tenho o reports gerado nesta form onde visualizo e posso imprimir para uma impressora instalada no windows com este codigo

Public Class frm_print_entradas

    Private Sub frm_print_entradas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'bdstocks2011DataSet.produtos' table. You can move, or remove it, as needed.
        Me.produtosTableAdapter.Fill(Me.bdstocks2011DataSet.produtos)
        'TODO: This line of code loads data into the 'bdstocks2011DataSet.moventradas' table. You can move, or remove it, as needed.
        Me.moventradasTableAdapter.Fill(Me.bdstocks2011DataSet.moventradas)

        Me.ReportViewer1.RefreshReport()
    End Sub


    Private Sub bt_voltar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_voltar.Click
        Me.Close()
    End Sub

    Private Sub bt_imprimidirectamente_lpt1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_imprimidirectamente_lpt1.Click

    End Sub
End Class

Pressionando o bt_imprimidirectament_lpt1

Como é que eu imprimo esse reports já gerado directamente sem precisar do driver do windows para a impressora que esta ligada á LPT1 e mandar o codigo de corte para no fim da impressão cortar o papel?

Desde já os meus agradecimentos pela ajuda que me teem dado.

Um Abraço

Nuno Revez  :cheesygrin:


 

 

Nuno Revez

@informaster

Share this post


Link to post
Share on other sites
informaster

Não me parece que resolva.

Pois só queria impriimir directamente para a lpt1 o meu report viewer já efectuado.

Sem drivers  do windows.

Estou a ver que é dificil.


 

 

Nuno Revez

@informaster

Share this post


Link to post
Share on other sites
apocsantos

    Boa noite,

    Instala a impressora como "Generica / Apenas texto" no Windows.

    No teu report acrescenta código para imprimir a seguinte sequencia de caracteres:

9DH

    Este é o codigo de escape para o "cut" da impressora TM88p (Paralela).

    Vê este link, pode-te ajudar na parte de imprimir sem utilizar o driver da impressora http://visualbasic.about.com/od/usingvbnet/a/printvb2005.htm

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

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

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.