Ir para conteúdo
Fórum Script Brasil

Iceguy

Membros
  • Total de itens

    274
  • Registro em

  • Última visita

Tudo que Iceguy postou

  1. Nesse forum da pra mandar MP? me manda uma MP depois com o link onde você upou o seu BD
  2. Cria um módulo assim: Function verificaCheck(frm As Form) On Error GoTo Erro Dim ctrl As Control verificaCheck = False For Each ctrl In frm.Controls Select Case ctrl.ControlType Case acCheckBox If ctrl.Value = True Then verificaCheck = True GoTo Sair End If Case Else End Select Next ctrl Sair: Exit Function Erro: MsgBox Err.Description, vbCritical Resume Sair End Function e no evento depois de atualizar de todos os CheckBoxes você chama essa func assim If verificaCheck(Me) Then Quadro = 1 Else Quadro = 2 End If Criei um quadro com as opções acondicionado e não acondicionado, onde acond era 1 e não acond era 2 Aí ele analiza todos os checkboxes do form e se achar algum marcado ele muda o botão pra acondicionado, e se todos estiverem desmarcados ele joga pra não acondicionado Sei que é antigo já o post, mas... hehehhhe
  3. A noite vejo seu código e encaixo no meio dele essa parte
  4. Não consigo encaixar dentro do seu aplicativo porque não conheço a lógica dele e nem as variaveis, mas o funcioamento é assim: Dim rs As Recordset 'Cria um recordset Set rs = seuSubFormulario.Form.Recordset 'Captura a tabela do sub-formulário para recordset rs.MoveFirst 'Move para a primeira linha do recordset Do While Not rs.EOF 'Inicia um laço de repetição que é executado até o fim do recordset 'EOF = End Of File MsgBox rs(1) 'Mensagem com a coluna 1 da recordset MsgBox rs(2) 'Mensagem com a coluna 2 da recordset rs.MoveNext 'Move para a próxima linha da recordset Loop rs.Close 'Fecha a recordset Set rs = Nothing 'Limpa os dados da memória
  5. Fiz um teste aqui e funciona assim Dim rs as Recordset set rs = seuSubFormulario.Form.Recordset com isso você captura a tabela toda dentro de uma recordset, depois você trabalha com ela, se movendo entre os registros dando rs.MoveFirst você acessa a primeira linha, depois da rs.MoveNext e vai pra próxima até o fim e pra ler o dado você coloca rs("nomeDoCampo") ou rs(n) onde n = número da coluna
  6. O importante você já fez, que foi deixar o usuário satisfeito. Quando você tiver mais tempo, aí melhora o código pra facilitar pro seu lado e simplificar a manuteção ou expansão do sistema =)
  7. Meu amigo me mandou a foto, e desculpe me meter, mas achei estranho seu formulário A lógica básica é Dados do cliente Dados da compra subtotal desconto juros total forma de pagamento <tabela com vencimentos, valores> esse lance de vencimento A, B, C,... além de feio para o sistema fica amarrado a isso, você fazendo algo mais dinâmico você tem um sistema melhor e deve ser algo relacionado a Index(1), Index(2) ou coisa do tipo. Vou ter que ver a noite
  8. Primeira coisa, como as informações são exclusivas dos cheques, recomendo você a fazer uma tabela com dados específicos dos cheques, seria algo assim Tabela: Pagamentos id_pgto NOT NULL AUTO_INCREMENT, data_pgto DateTime, valor_pgto Money, tipo_pgto Varchar(2), -- Aqui você coloca 'ch' para cheque, 'di' para dinheiro e 'cc' para cartão, por exemplo PRIMARY KEY(id_pgto) Tabela: Cheques id_pgto int, dt_cheque DateTime, n_cheque varchar(20) , -- não sei o tamanho e a composição do número de um cheque bco_cheque varchar(20), ttl_cheque, PRIMARY KEY(id_pgto) Assim você gerecia melhor o banco, evitando campos em branco no caso de cartão e dinheiro Para referenciá-los use um JOIN depois Outra coisa que percebi é que você fez um formulário contínuo dos registros, eu não gosto muito disso, prefiro fazer no "braço" hehehe Ah, claro... o Evento do Form é AfterInsert
  9. Só vou poder ver isso a noite em casa, aqui tenho só Access 2003 e não posso acessar sites de compartihamento de arquivos. :( E serviu de alguma coisa o exemplo que mandei?
  10. Cria um modulo com o código: Sub verificaCampos(frm As Form) On Error GoTo Erro Dim ctrl As Control For Each ctrl In frm.Controls Select Case ctrl.ControlType Case acTextBox, acListBox, acComboBox If ctrl.ControlSource = Empty Then MsgBox "Existem campos sem preechimento.", vbInformation GoTo Sair End If Case Else End Select Next ctrl Sair: Exit Sub Erro: MsgBox Err.Description, vbCritical Resume Sair End Sub E chama ele de qualquer form assim: verificaCampos Me Aí tem ali acTextBox, acListBox e acComboBox que são s tipos de controles que ele verifica Acho que isso resolve seu probema :lol:
  11. Meu amigo upou pra mim http://www.megaupload.com/?d=88EDGL67
  12. Ta meio complexo entender assim sem ver, mas pelo que percebi você tem uma aplicação que faz parcelamento de vencimentos. Você insere um valor e a quantidade de parcelas e ele gera automaticamente? Daqui do meu serviço não acesso nenhum site pra upload, então tenta assim, cria um novo arquivo access e executa essa consulta: CREATE TABLE parcelamentos ( id_cliente int, id_compra int, n_parcela int, venc_parcela DateTime, valor_parcela money, pgto_parcela DateTime, valor_pgto money, PRIMARY KEY(id_compra, n_parcela) ); Agora crie um form chamado main e nele insira uma caixa de texto chamada txbCliente, outra chamada txbValor, outra chamada txbCompra, uma caixa de combinação chamada cbbParcelas com a Origem da Linha assim: 1;2;3;4;5;6 e cria também um botão chamado btnGerar cria uma consulta chamada consParcelamento SELECT Pcm.n_parcela AS Parcela, Pcm.venc_parcela AS Vencimento, Pcm.valor_parcela AS Valor, Pcm.pgto_parcela AS Pagamento, Pcm.valor_pgto AS [Valor Pagamento] FROM parcelamentos AS Pcm WHERE Pcm.id_cliente = Formulários!main!txbCliente.Valor AND Pcm.id_compra = Formulários!main!txbCompra.Valor ORDER BY Pcm.venc_parcela; Cria um formulário baseado nessa consulta e da um nome pra ela lá, daí no form main adiciona ela como sub-consulta, coloca o nome de scPcm Cria um módulo com a função: Function getVencimento(prazo As Integer) As Date Dim dia As Date dia = Now() + prazo If Weekday(dia) = 7 Then dia = dia + 2 ElseIf Weekday(dia) = 1 Then dia = dia + 1 End If getVencimento = Format(dia, "dd/mm/yyyy") End Function ela retorna o dia do vencimento, se for sábado ou domingo ela joga automaticamente para a próxima segunda Depois coloca no botão gerar esse código: Private Sub btnGerar_Click() On Error GoTo Erro Dim db As Database Dim sqlstr As String Dim parcela As String Dim numPcl As Integer Set db = CurrentDb() parcela = Replace(CStr(Round(CDbl(txbValor) / CInt(cbbParcelas), 2)), ",", ".") For numPcl = CInt(cbbParcelas) To 1 Step -1 sqlstr = "INSERT INTO parcelamentos(id_cliente, id_compra, n_parcela, " _ & "venc_parcela, valor_parcela) VALUES( " & txbCliente & ", " _ & txbCompra & ", " & numPcl& ", #" & getVencimento(30 * numPcl) _ & "#, " & parcela & ")" db.Execute (sqlstr) Next numPcl scPcm.Requery db.Close Set db = Nothing Sair: Exit Sub Erro: MsgBox Err.Description, vbCritical Resume Sair End Sub Acho que isso pode te ajudar
  13. Iceguy

    Dificuldade com ORDER BY

    Queria tentar fazer direto pela query, mas vai ter que ser via codigo mesmo. Como última tentativa vou tentar criar um campo na query de ordem, daí ordeno por ele ver se funciona Mas valeu pela ajuda
  14. A macro estava errada, ela tava pegando os dias anteriores e não os seguintes, aí mudei o sinal de "-" para "+"Referenciei a query ao combobox do formulárioO botão gerar só habilita quando ouver um valor na comboboxCriei um report automático, ta feio mas da pra demonstrarAí da uma olhada e vê como ficou http://www.megaupload.com/?d=8N9UEQOP
  15. coloca DoEvents que é mais rápido, com repaint da umas piscadas. Uma vez fiz uma splash screen no access que era chamada pelo form principal, daí era algo assim DoCmd.OpenForm "splash" DoEvents DoCmd.Close acForm, "splash" e no evento de Close do splash ele carregava algumas coisas e aumentava o valor da barra de progresso. Sem o DoEvents a splash ficava parada e sumia, eu não via a barra carregar
  16. Meio confuso o seu problema, mas pelo que vi você precisa dos últimos registros do veículo? Tenta SELECT TOP 2 * FROM Tabela ORDER BY Tabela.Data DESC; com isso você ordena a tabela por data decrescente e busca os 2 primeiros registros, que seriam o mais recente e o anterior a ele, se quiser mais registros muda de TOP2 pra TOP 5 por exemplo.
  17. Ta meio confuso, não sei a necessidade de duas tabela, quem sabe se você criar uma tabela Status [cod, Desc] 0, Pendente 1, Pago 2, Pago com Atraso 3, Atrasado 4, Cancelado daí faz uma única tabela com vencimentos e coloca campo status e dá um JOIN da sua TblSiapi com a Status (Só pra montar relatório com a descrição do Status ao invéz do código dele), daí coloca pra buscar registros onde o status é igual a 2 ou 3 e data está entre ontem e hoje, pode usar essa função aqui pra pegar o dia: Public Function getDia(dias As Integer) As Date Dim retorno As Date retorno = Now - dias getDia = Format(retorno, "dd/mm/yyyy") End Function E busca assim SELECT TS.* FROM TblSiapi AS TS WHERE (TS.Status = 2 OR TS.Status = 3) AND TS.dtPagamento BETWEEN getDia(1) AND getDia(0) Lembrando que SELECT * só quando for buscar realmente tudo da tabela, se não busque só o que precisa mas em todo caso, tenta isso: SELECT * FROM TblSiapiAnterior UNION SELECT * FROM TblSiapi Essa SQL junta os arquivos DISTINTOS das duas tabelas
  18. sei que é antigo o tópico, mas... Tenta isso: Private Sub cmbClientes_AfterUpdate() Dim Banco As Database Dim Cliente As Recordset Dim Sql As String Sql = "SELECT Endereco, Cidade, Estado, Telefone " & _ "FROM tabClientes " & _ "WHERE Nome='" & cmbClientes.Value & "'" Set Cliente = Banco.OpenRecordset(Sql) If Not Cliente.RecordCount = 0 Then Cliente.MoveFirst txtEndereco = Cliente("Endereco") txtCidade = Cliente("Cidade") txtEstado = Cliente("Estado") txtTelefone = Cliente("Telefone") Else MsgBox "Não existem dados para o cliente selecionado.", vbExclamation, "Erro" End If Cliente.Close Set Cliente = Nothing Banco.Close Set Banco = Nothing End Sub
  19. Tudo depende da sua estrutura, mas se tiver algo do tipo: TabelaClientes: id, nome, etc... TabelaProdutos: id, nome, etc... TabelaPedidos: id, id_cliente, id_produto, quantidade, etc... Você pode criar um form que tem algo como isso: <Número do pedido> <Informações do cliente> Cód. Produto <TextBox> Nome Produto <ComboBox> Quantidade <TextBox> <Button Adicionar> e logo abaixo você coloca um subformulário de uma consulta na tabela de pedidos que seria algo como SELECT TP.id AS [Cód.], TP.nome AS [Descrição], TPd.quantidade AS Qtde FROM TabelaPedidos AS TPd, TabelaProdutos AS TP WHERE TPd.id = [Formulários]!seuForm!SeuTextBoxPedido.Valor; Ou pode usar JOIN também, daí toda vez que você pressiona o botão Adicionar ele da um INSERT na tabela pedidos passando o id do pedido, do cliente, do produto, quantidade, etc... e da um Requery no subformulário
  20. Iceguy

    arraanque formulario

    Seu formulário principal não puxa dados das consultas? Ou os outros não puxam dados do rincipal? Ficou meio confusa a sua pergunta
  21. Boa tarde, Cria um macro e coloca esse código: Public Function getDia(dias As Integer) As Date Dim retorno As Date retorno = Now - dias getDia = Format(retorno, "dd/mm/yyyy") End Function Cria as consultas assim SELECT * FROM suaTabela WHERE suaTabela.seuCampoVencimento BETWEEN getDia(dias) AND getDia(0); onde o campo com a data de vencimento tem que ser do tipo "Data", e no parâmetro da função getDia() você coloca a quantidade de dias que você quer subtrair, por exemplo hoje dia 18/02/2011, se você der um getDia(4) ele retorna 14/02/2011. O getDia(0) traz a data de hoje. aí você cria um form para ser inicializado quando abrir o banco e coloca um código tipo esse: Private Sub Form_Load() On Error GoTo Erro Dim relatorio As String 'Nome do relatório relatorio = "reportVencimento7" DoCmd.OpenReport relatorio, acViewPreview 'Abre relatorio reportVencimento7 relatorio = "reportVencimento35" DoCmd.OpenReport relatorio, acViewPreview 'Abre relatorio reportVencimento35 relatorio = "reportVencimento45" DoCmd.OpenReport relatorio, acViewPreview 'Abre relatorio reportVencimento45 Sair: DoCmd.Close acForm, Me.Name Exit Sub Erro: MsgBox Err.Description, vbCritical Resume Sair End Sub Nesse exemplo criei 3 relatórios baseado nas consultas, mas se você preferir pode colocar pra abrir a consulta, daí muda o código, trocando: relatorio = "reportVencimento7" DoCmd.OpenReport relatorio, acViewPreview por consulta = "consultaVencimento7" DoCmd.OpenQuery consulta, acViewNormal lembrando de trocar o nome da variável de relatorio para consulta Mas particularmente prefico criar um form com 3 botões que ficam ou não habilitados dependendo da existência de vencimentos, e que só abre se tiver pelo menos um vencimento
  22. Você não consegue acessar o código VBA do EXCEL? Aí você vê o que ele faz e altera para funcionar no ACCESS
  23. Bom dia pesoal, estou com um probleminha pra ordenar uma consulta, pra ficar mais fácil de explicar vou usar dados de exemplo. Tabela1 Campo1....Campo2 A...............2 B...............1 C...............5 B...............3 A...............4 Nela eu preciso ordenar pelo Campo2 mas agrupado pelo Campo1. O resultado teria que ser assim: Campo1....Campo2 B...............1 B...............3 A...............2 A...............4 C...............5 Ou seja, se o B tem o menor número traz todos os valores de B ordenados, depois parte para o próximo, que no caso seria A, etc...
×
×
  • Criar Novo...