Ir para conteúdo
Fórum Script Brasil

Alexandre Neves

Membros
  • Total de itens

    168
  • Registro em

  • Última visita

Posts postados por Alexandre Neves

  1. Boa noite, NFAC

    Recebi a sua mensagem privada só agora, pois só agora me liguei à internet.

    As regras do fórum obrigam a tirar as dúvidas no fórum para que todos vejam e aprendam.

    Pelo que percebi:

    Existem 4 caixas de combinação: CxcDocente, CxcAno, CxcCurso e CxcDisciplina

    (A tabela Ano utiliza um nome reservado do Access e devia mudar para, por ex., tblAno)

    Todos os campos filtrados nas caixas de combinação são texto, à excepção de AnoLectivo que é número

    No acontecimento Ao Entrar da CxcDocente coloque o seguinte código:

    CxcDocente.RowSource="SELECT NomeDocente FROM Docentes ORDER BY NomeDocente;"

    No acontecimento Ao Entrar da CxcAno coloque o seguinte código:

    CxcAno.RowSource="SELECT AnoLectivo FROM Ano LEFT JOIN Docentes ON Ano.ID_Docentes=Docentes.ID_Docentes WHERE NomeDocente='" & CxcDocente & "' ORDER BY AnoLectivo;"

    No acontecimento Ao Entrar da CxcCurso coloque o seguinte código:

    CxcCurso.RowSource="SELECT Curso FROM (PlanoEstudos LEFT JOIN Ano ON PlanoEstudos.IDAno=Ano.ID) LEFT JOIN Docentes ON Ano.ID_Docentes=Docentes.ID_Docentes WHERE AnoLectivo=" & CxcAno & " and NomeDocente='" & CxcDocente & "' ORDER BY Curso;"

    No acontecimento Ao Entrar da CxcDisciplina coloque o seguinte código:

    CxcDisciplina.RowSource="SELECT NomeDisciplina FROM ((Disciplinas LEFT JOIN PlanoEstudos ON Disciplinas.IDCurso=PlanoEstudos.ID_Plano) LEFT JOIN Ano ON PlanoEstudos.IDAno=Ano.ID) LEFT JOIN Docentes ON Ano.ID_Docentes=Docentes.ID_Docentes WHERE Curso='" & CxcCurso &"' and AnoLectivo=" & CxcAno & " and NomeDocente='" & CxcDocente & "' ORDER BY NomeDisciplina;"

    Boa sorte.

  2. Coloque:

    Private Sub Caixa_de_combinação_Enter()

    'criada por Alexandre Neves

    'em 2010-04-24

    'para Pedro Gaz

    'do fórum ScriptBrasil

    Dim I As Integer

    For I = 0 To CurrentDb.TableDefs.Count - 1

    Caixa_de_combinação.AddItem CurrentDb.TableDefs(I).Name

    Next

    End Sub

  3. Crie uma tabela e nomeie-a como Numeracao2Campos (campo Sequencia1 (texto) e Sequencia 2 (texto)).

    cole este código:

    Sub CriaTabelaNumeracao()

    'criada por Alexandre Neves

    'em 2010-04-24

    'para eu_nickctba

    'do fórum ScriptBrasil

    Dim I As Integer, intInicio1 As Integer, intInicio2 As Integer, intFim As Integer

    intInicio1 = InputBox("Introduza o número inicial da sequência 1.")

    intFim = InputBox("Introduza o número final da sequência 1.")

    intInicio2 = InputBox("Introduza o número inicial da sequência 2.")

    CurrentDb.Execute "DELETE * FROM Numeracao2Campos;"

    For I = 0 To intFim - intInicio1

    CurrentDb.Execute "INSERT INTO Numeracao2Campos(Sequencia1,Sequencia2) VALUES ('" & Format(intInicio1 + I, "000000") & "','" & Format(intInicio2 + I, "000000") & "');"

    Next

    End Sub

  4. Utilize

    Sub EliminaPasta(EnderecoCompleto As String)

    'criada por Alexandre Neves

    'em 2010-04-24

    'para Carlos Higor vp

    'do fórum ScriptBrasil

    Dim fso

    On Error GoTo NaoExistePasta

    Set fso = CreateObject("Scripting.FileSystemObject")

    fso.DeleteFolder (EnderecoCompleto)

    Set fso = Nothing

    Exit Sub

    NaoExistePasta:

    MsgBox "A pasta" & vbCr & EnderecoCompleto & vbCr & "não existe."

    Resume Next

    End Sub

  5. Não percebi quais as colunas, mas criei código considerando 3 colunas: serial, duplicidade e peças defeito

    Se for mais alguma coluna, adapte

    Private Sub CommandButton1_Click()

    linha1 = 1

    Do

    If Cells(linha1, 2) = "Duplicado" Then

    'procura o único

    linha2 = 1

    Do

    If Cells(linha1, 1) = Cells(linha2, 1) And linha1 <> linha2 Then

    Cells(linha1, 3) = Cells(linha1, 3) & " " & Cells(linha2, 3)

    Cells(linha1, 2) = "Único"

    Rows(linha2).Select

    Selection.Delete Shift:=xlUp

    Exit Do

    End If

    linha2 = linha2 + 1

    Loop While Cells(linha2, 1) <> ""

    End If

    linha1 = linha1 + 1

    Loop While Cells(linha1, 1) <> ""

    End Sub

  6. Tente assim:

    1 - Crie uma função

    Function Ordem(NDado) As Long

    'criada por Alexandre Neves

    'em 2010-01-16

    'para Js.ane

    'do fórum ScriptBrasil

    If IsNull(NDado) Then

    NOrdem = 0

    Exit Function

    End If

    NOrdem = NOrdem + 1

    Ordem = NOrdem

    End Function

    2 - Utilize o código SQL

    SELECT Ordem(Produto) as Ranking, Produto, [total vendido] ... ORDER BY [Total vendido];

  7. Deve funcionar assim:

    Dim ctl As Control

    For Each ctl In Form.Controls

    If ctl.ControlType = acTextBox Then

    If IsNull(ctl) Or Len(ctl) = 0 Then

    MsgBox "Prencha o controle " & ctl.Name, _

    vbExclamation, "Controle obrigatório"

    Cancel = True 'Cancela o evento, impedindo a atualização.

    End If

    ElseIf ctl.ControlType = acComboBox Then

    If IsNull(ctl) Or Len(ctl) = 0 Then

    MsgBox "Prencha o controle " & ctl.Name, _

    vbExclamation, "Controle obrigatório"

    Cancel = True 'Cancela o evento, impedindo a atualização.

    End If

    End If

    Next

    Sai:

    Set ctl = Nothing ' Libera memória.

  8. Veja se é isto que pretende:

    (Denomine as combos com nomes diferentes dos nomes dos campos)

    Private Sub CmbLogradouro_Exit(Cancel As Integer)

    'se as combos estiverem preenchidas

    If Me.CmbSst <> "" And Not IsNull(CmbSst) And Me.CmbLogradouro <> "" And Not IsNull(CmbLogradouro) Then

    CurrentDb.Execute "INSERT INTO Dados(sst,logradouro) VALUES ('" & Me.CmbSst & "','" & Me.CmbLogradouro & "');"

    MsgBox "Registo adicionado com os seguintes valores:" & vbCr & vbCr & "sst: " & Me.CmbSst & vbCr & "Logradouro: " & Me.CmbLogradouro

    Me.CmbSst = Null

    Me.CmbLogradouro = Null

    Else

    MsgBox "Registo não adicionado."

    End If

    End Sub

  9. O código não é mostrado na totalidade, de qualquer forma, atente ao seguinte:

    - Se for caixa de combinação, coloque o índice da coluna, começando por 0. Exemplo cmbTal(0)

    - Se o valor for texto coloque entre pelicas. Exemplo: 'xpto'

    - Se o valor for número coloque simples. Exemplo: 1234

    - Se o valor for data coloque entre cardinais. Exemplo: #DataExemplo#

    Construa o seu código com estas orientações que lhe dará certo.

  10. De facto, só agora percebi as suas dúvidas.

    Para seleccionar apenas cidades do estado escolhido na outra combo, coloque ao sair da combo cmbEstados código para a combo cmbCidades filtre as cidades do estado da combo cmbEstados, do género "SELECT Cidade FROM tblCidades WHERE Estado='" & cmbEstados(0) & "' ORDER BY Cidade;" adaptado aos seus dados

    Para gravar os dados noutra tabela, coloque ao sair do último controlo o código adequado, do género CurrentdDB.Execute "INSERT INTO SuaTabela(Estado,Cidade) VALUES ('" & cmbEstado & "'," & cmbCidade &"');"

  11. Será assim:

    Private Sub Comando2_Click()

    Dim strSQL as string

    If Lista0.ItemsSelected.Count = 0 Then

    MsgBox "ESCOLHA PELO MENOS UM ITEM!"

    Exit Sub

    End If

    strsql=""

    Dim varItm As Variant

    For Each varItm In Lista0.ItemsSelected

    strsql = strsql & " or RazaoSocial=" & Lista0.ItemData(varItm)

    Next varItm

    'tira o 1º or

    strsql=mid(strsql, 5,len(strsql)-4)

    DoCmd.OpenReport "Relatorio", acViewNormal, strsql

    End Sub

×
×
  • Criar Novo...