Ir para conteúdo
Fórum Script Brasil

Humm

Membros
  • Total de itens

    570
  • Registro em

  • Última visita

Posts postados por Humm

  1. Bom dia.

    To desenvolvendo uma aplicação aqui e to usando o netbeans.

    Pois bem, eu criei 2 JFrames.. um se chama Login e o outro MainMenu

    Até o momento, funciona assim:

    De dentro do Login, após o login ter sucesso, exite um evento que cria uma instancia nova do JFrame MainMenu e torna o JFrame Login oculto.

    package delivery;
    
    import java.awt.Color;
    import java.awt.event.KeyEvent;
    import java.sql.SQLException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.ImageIcon;
    
    public class Login extends javax.swing.JFrame {
    
        MainMenu mainmenu;
        private ConectaFirebird con;
    
        public Login() {
            con = new ConectaFirebird();
            initComponents();
            // < ICONE DA JANELA
            this.setIconImage(new ImageIcon(getClass()
                    .getResource("dico32.png")).getImage());
            // ICONE DA JANELA >
        }
    private void txtSenhaKeyPressed(java.awt.event.KeyEvent evt) { //aqui dispara a nova instancia MainMenu
                            if (mainmenu == null) {
                                mainmenu = new MainMenu();
                                mainmenu.setLocationRelativeTo(null);
                                mainmenu.setVisible(true);
                                mainmenu.setResizable(false);
                                Login.this.setVisible(false);
                                //Login.this.dispose();
                            } else {
                                mainmenu.setLocationRelativeTo(null);
                                mainmenu.setVisible(true);
                                mainmenu.setResizable(false);
                                Login.this.setVisible(false);
                                //Login.this.dispose();
                            }
    }
    

    Até ai tudo bem.. mas então eu coloquei um botão de evento Sair no JFrame MainMenu.. e a idéia é que ao clicar, dê um MainMenu.this.dispose() e então de um .setvisible(true) no JFrame Login..

    mas pra ser sincero não to sabendo como referenciar essa instancia do JFrame Login que está oculta dentro do JFrame MainMenu

    Se eu usar new Login() ele cria uma nova e a oculta permanece lá..

    eu imagino que antes de criar a instancia Jframe MainMenu a partir do JFrame Login, eu tenha que já mandar referenciado.. mas como faço isso?

    grato.

  2. amigo, isso ocorre porque o SQL não ta sabendo o q e é esse TOTAL

    Veja bem, você criou um campo calculado chamado TOTAL.. mas isso é apenas um rotulo de um resultado de calculo, não pode ser usado como se fosse uma variavel total.

    ali na utima coluna que aparece na imagem, voce vai ter que repetir a expressao de calculo que simboliza o TOTAL, sacou??

    abraços

  3. oi amigo.. esse assunto sobe estoque já foi bem exemplificado.. inclusive com bds de exemplo..

    esse teu conceito sobre saldo por exemplo está errado.

    da uma procurada ai que você vai achar o tópico, e até exemplos pra baixar

    abcos

  4. é possivel sim..

    antes de mais nada, faça uma consulta para cada tipo de movimentacao.. uma para seguros, outra para impostos e assim por diante..

    feito isso, voce vai passar a ter uma consulta com cada totalizacao por tipo de movimentacao..

    então voce cria uma nova consulta e nela você utiliza essas consultas de totais.. entendeu?

  5. na verdade voce não precisa de uma tabela estoque, muito menos de um campo estoque.

    entenda a diferença entre DADOS e INFORMAçÃO

    DADOS são os componentes que compoem um problema.

    por exemplo:

    voce tem a classe PRODUTOS.. dentro de produtos.. você tem os DADOS:

    codigo

    descricao

    preço unitario

    qtde minima

    fornecedor

    então para movimentar os produtos, voce precisa de uma classe ENTRADA que seria a de compra e nela os dados:

    codigo (campo relacionado a PRODUTOS.CODIGO)

    data entrada

    qtde

    preço de custo

    e tambem uma tabela SAIDA que seria a de vendas e nela os dados:

    codigo (campo relacionao a PRODUTOS.CODIGO)

    data saida

    qtde

    valor unitario

    pronto, voce já consegue coletar todos os DADOS inerentes ao produtos e sua movimentacao..

    agora vamos entender o que é INFORMAÇÂO:

    é tudo aquilo que é resultado de um calculo de um dado ou entre os dados. sendo assim, INFORMAÇÃO é a solucao de um problema.

    ou seja, o total em estoque, não é um dado, e sim uma informação, pois:

    estoque = total que entrou - total que saiu

    logo, para se obter o estoque, voce precisa criar uma consulta totalizando as entradas.. e outra totalizando as saidas, ambas agrupadas pelo codigo do produto.

    feito isso, cria-se uma terceira consulta onde voce subtrai o total de entradas pelo total de saida.

    pronto, voce terá seu saldo de etoque sempre atualizado e sem a menor margem de erro.

  6. amigo, acredito que sua logica está errada.

    ao invés de ter um campo sim/não.. eu faria o seguinte:

    use os campos que você já tem de datas: datar e datae

    crie uma consulta simples de nome CONS_REV_IND com a tabela REQUISICAO usando criterio nos campos DATAR e DATAE:

    DATAR = NOT NULL

    DATAE = IS NULL

    isso trará as revistas que estão indisponiveis.

    então crie uma nova consulta usando a tabela REVISTA e a consulta CONS_REV_IND

    faça um relacionamento do tipo LEFT JOIN entre REVISTA e CONS_REV_IND pelo campo ID da revista

    adicione na consulta pelo menos os campo revista.id_rev e depois CONS_REV_IND.id usando criterio neste ultimo = IS NULL

    assim a consulta te retornara todas as revistas cadastradas menos aquelas que estão requisitadas e não tiveram data de entrega lançada.

    abraços

  7. tenho essa query:

    strSQL = "SELECT PRODUTOS.COD_PROD, PRODUTOS.DESCR, Sum(PEDIDOS_ITENS.QTDE) AS TOTAL_PRO " & _
        "FROM PEDIDOS_PGTOS INNER JOIN ((PRODUTOS INNER JOIN PEDIDOS_ITENS ON PRODUTOS.COD_PROD = PEDIDOS_ITENS.COD_PROD) INNER JOIN PEDIDOS ON PEDIDOS_ITENS.COD_PED = PEDIDOS.COD_PED) ON PEDIDOS_PGTOS.COD_PED = PEDIDOS.COD_PED " & _
        "WHERE (((CDate(Format([DT_HR],""dd/mm/yyyy""))) Between #" & Me.DT_IN & "# And #" & Me.DT_OUT & "#) And ((PEDIDOS.TRASH)=False)) " & _
        "GROUP BY PRODUTOS.COD_PROD, PRODUTOS.DESCR " & _
        "ORDER BY PRODUTOS.DESCR"
    só que eu preciso trocar essa tabela PEDIDOS_PGTOS pela subquery:
    SELECT PEDIDOS_PGTOS.COD_PED FROM PEDIDOS_PGTOS GROUP BY PEDIDOS_PGTOS.COD_PED

    na verdade eu não vou resgatar nenhum dado dessa subquery, eu so quero ela para o innerjoin, para que toda a query só retorne resultados se não for nulo PEDIDOS_PGTOS.COD_PED da subquery

    eu poderia fazer direto pela tabela, como ta no exemplo anterior, mas o problema é que essa tabela pode ter mais de mesmo dado PEDIDOS_PGTOS.COD_PED igual, pois essa tabela PEDIDOS_PGTOS é uma relação de um-para-muitos da tabela PEDIDOS.. ai fica repetindo o valor na query e na hora da soma, o resultado sai dobrado.

    alguém ajuda?

  8. sim, antes até estava no 2.2, mas testei todas as versoes..

    tanto que no accdb ele funciona..

    mas se compilar em accde, mesmo com a referencia marcada, o que faz com que a dll seja incluida no projeto, da pau.

    na oresolvi o problema, mas fui pra alternativa do DAO e ta funcionando perfeitamente.

    só pra deixar bem claro.. vou explicar em que cenário ocorre o problema:

    arquivo em accde + runtime

  9. seguinte, nessa tabela de debitos, na verdade deveria se chamar movimentos..

    o mesmo campo de debitos, tem q servir pra creditos.. e ai você cria mais um campo so pra especificar se o lancamento do momento é debito ou credito..

    feito isso, crie uma consulta que totalize os creditos, e os debitos.. e depois outra consulta que faça a diferença entre cada total.. ai você vai ter o chamado SALDO ATUAL

  10. então, tenho um projeto que funciona perfeitamente bem na minha maquina..

    mas ao roda-lo accde em uma maquina com runtime instalado, alguns procedimentos dao esse erro 13: tipos incompativeis.

    se eu rodar accdb nessa mesma maquina com runtime, ele roda perfeito..

    e essa? quem explica?

    um dos codigos que da erro:

    Private Sub BT_PRINT_Click()
            Dim conn As ADODB.Connection
            Dim cmd As ADODB.Command
            Dim RS As ADODB.Recordset
    
        On Error GoTo BT_PRINT_Click_Error
    
            Set conn = CurrentProject.Connection
            Set cmd = New ADODB.Command
            cmd.ActiveConnection = conn
            
            If IsNull(DLookup("[COD_PROD]", "PRODUTOS")) Then
                MsgBox "Não existem nenhum produto cadastrado ainda.", vbInformation, "Impressora"
                Exit Sub
            End If
            
            cmd.CommandText = "SELECT COD_PROD, DESCR, preço " & _
            "FROM PRODUTOS " & _
            "WHERE TRASH = FALSE " & _
            "ORDER BY DESCR"
            Set RS = cmd.Execute
    CHECK:
            If IsNull(DLookup("[prnport]", "app")) Or DLookup("[prnport]", "app") = "" Or IsNull(DLookup("[espace]", "app")) Or DLookup("[espace]", "app") = "" Then
                MsgBox "As configurações de impressão não foram efetuadas ainda." & vbNewLine & vbewline & "Defina as configurações na janela a seguir...", vbInformation, "Configurações de Impressão"
                DoCmd.OpenForm "print_cfg", , , , , acDialog
                GoTo CHECK
            End If
            fanta = DLookup("[fant]", "config")
            port = DLookup("[prnport]", "app")
            endspace = DLookup("[espace]", "app")
            Open port For Output As #1
            Print #1, fanta
            Print #1, ende
            Print #1, ende2
            Print #1, Format(telef, "(@@) @@@@-@@@@")
            Print #1, www
            Print #1, "------------------------------------------------"
            Print #1, "                TABELA DE PREÇOS                "
            Print #1, "------------------------------------------------"
            Print #1, "CODIG DESCRIÇÃO                         preço R$"
            POS = 1
            PAG = 1
            PAGS = 0
            RS.MoveFirst
            Do While Not RS.EOF
                PAGS = PAGS + 1
                RS.MoveNext
            Loop
            If PAGS >= 100 Then
                PAGS = PAGS / 100
                PAGS = Format(PAGS, "0")
            Else
                PAGS = 1
            End If
            RS.MoveFirst
            Do While Not RS.EOF
                If POS = 101 Then
                    Print #1, ""
                    Print #1, "Pagina " & PAG & " de " & PAGS
                    Print #1, "Impresso em " & Now
                    For i = 1 To endspace
                        Print #1, ""
                    Next i
                    Close #1
                    MsgBox "Pagina " & PAG & " de " & PAGS & vbNewLine & "Aguarde o término da impressão..." & vbNewLine & "Destaque a página e pressione OK para continuar...", , "Impressora"
                    PAG = PAG + 1
                    POS = 1
                    Open port For Output As #1
                End If
                COD = Format(RS("COD_PROD"), "0000")
                DESC = Left(RS("DESCR"), 35)
                PR = Format(RS("preço"), "#.00")
                Print #1, COD & " " & DESC & Replace(Space(43 - Len(DESC) - Len(PR)), " ", ".") & PR
                RS.MoveNext
                POS = POS + 1
            Loop
            Print #1, ""
            Print #1, "Pagina " & PAG & " de " & PAGS
            Print #1, "Impresso em " & Now
            For i = 1 To endspace
                Print #1, ""
            Next i
            Close #1
       
        On Error GoTo 0
        Exit Sub
    
    BT_PRINT_Click_Error:
        ARQUIVO = "C:\SysControl\Delivery\error_log.txt"
        Open ARQUIVO For Append As #9
            Print #9, Now() & " - " & Me.Name & "(BT_PRINT_Click)"
            Print #9, "Erro " & err.Number & ": "; err.Description
        Close #9
        MsgBox "Ocorreu um erro inesperado." & vbNewLine & vbNewLine & "Por favor, entre em contato com house.fix.macae@gmail.com e relate o problema ocorrido. Obrigado!", vbCritical, "Erro!"
    
             
    End Sub

  11. só um alerta.. se você instalar o office 2010 ou access 2010 SP1 na sua maquina, e ai você salvar ou compilar um projeto nessa versao, o runtime do access em outras maquinas sem SP1 não vao abrir o accdb ou accde

    será necessario atualizar todas as maquinas com access 2010 para o SP1.. 75 megas a atualizacao.

    e parece que é um caminho sem volta, uma vez salvo ou compilado em SP1, não volta mais.

×
×
  • Criar Novo...