|
|
| Como
Abrir base de dados com Senha ? |
Este exemplo utiliza o objeto Dao
Jet. Para outros objetos consulte o Help do VB.
Para abrir o banco é necessário passar a senha no parâmetro Connect. No exemplo
abaixo, a senha é "web".
Dim wrk As Workspace
Dim db As Database
Set wrk = DBEngine. Workspace(0)
Set db = wrk.OpenDatabase("MYDB.MDB", false, false, ";PWD=web")
O parâmetro Connect (4o
parâmetro) é case sensitive (diferencia A de a) e - ao contrário
do que diz a documentação do VB - os parâmetros exclusive e read-only
(2o e 3o parâmetros) devem ser falsos.
|
| Eliminando o IF quando possível |
Se você atribui true ou false
para uma variável (ou propriedade), após testar certas condições, poderia fazê-lo sem
o IF. Veja:
If (age > 18 and sex = "M") and
(NecessitaSeContigente = true ) Then ServicoMilitar = true
Pode substituir por:
ServicoMilitar = (age > 18 and sex =
"M") and (NecessitaSeContigente)
Outro exemplo:
IF (age > 25 and Category = "M1") or
(age > 35 and Category = "C1") or _
(Age > 45 and Category = "P1") then ExecuteDemissao
Poderia ser:
Dim condicao as Integer 'boolean
condição = (age > 25 and Category = "M1") or (age > 35 and Category =
"C1")_ or (Age > 45 and Category = "P1")
If condicao Then ExecuteDemissao
|
|
Validando CGC e CPF |
Os números de CGC e CPF possuem
dígitos verificadores para que ?!?!?!...
Horas para serem verificados!!!
Isto é obvio. A validação deve ser feita (por qualquer sistema
decente) para impedir a digitação por engano e os CGCs e CPFs falsos.
Function Fu_consistir_CgcCpf (Vl_CgcCpf As String)
' Esta Rotina Devolverá True Se o Cgc/Cpf Informado
For valido
' ou False Se o Cgc/Cpf Não For Correto
' Para Chamar esta Rotina de Consistência
' 1 ) Atribuir o valor do CgcCpf a uma Variavel String
' 2 ) Chamar a Rotina com : Fu_consistir_CgcCpf (Variavel)
' Uma Forma Simples de fazer a Consistencia
' é Copiando as linhas abaixo (exemplo)
' para dentro do Programa
' Dim Vl_CgcCpf As String
' Vl_CgcCpf = Me.CgcCpf.Text
' If Fu_consistir_CgcCpf(Vl_CgcCpf) = False then
' MsgBox "( Cgc/Cpf Informado Não é um Cgc/Cpf Correto )"
' Me.CgcCpf.SetFocus
' Exit Sub
' End if
Fu_consistir_CgcCpf = False
Dim VA_CgcCpf As String
Dim VA_Digito As String
Static Numero(15) As Integer
Dim VA_Resto As Integer
Dim VA_Resultado As Integer
Dim VA_SomaDigito10 As Integer
Dim VA_resto1 As Integer
VA_CgcCpf = Format(Vl_CgcCpf, "@@@@@@@@@@@@@@")
VA_Digito = Mid(VA_CgcCpf, 13, 2)
Numero(1) = Val(Mid(VA_CgcCpf, 1, 1))
Numero(2) = Val(Mid(VA_CgcCpf, 2, 1))
Numero(3) = Val(Mid(VA_CgcCpf, 3, 1))
Numero(4) = Val(Mid(VA_CgcCpf, 4, 1))
Numero(5) = Val(Mid(VA_CgcCpf, 5, 1))
Numero(6) = Val(Mid(VA_CgcCpf, 6, 1))
Numero(7) = Val(Mid(VA_CgcCpf, 7, 1))
Numero(8) = Val(Mid(VA_CgcCpf, 8, 1))
Numero(9) = Val(Mid(VA_CgcCpf, 9, 1))
Numero(10) = Val(Mid(VA_CgcCpf, 10, 1))
Numero(11) = Val(Mid(VA_CgcCpf, 11, 1))
Numero(12) = Val(Mid(VA_CgcCpf, 12, 1))
Numero(13) = Val(Mid(VA_CgcCpf, 13, 1))
Numero(14) = Val(Mid(VA_CgcCpf, 14, 1))
If Len(Trim(Vl_CgcCpf)) > 11 Then ' Cgc
VA_Resultado = Numero(1) * 2
If VA_Resultado > 9 Then
VA_SomaDigito10 = VA_Resultado + 1
Else
VA_SomaDigito10 = VA_Resultado
End If
VA_Resultado = Numero(3) * 2
If VA_Resultado > 9 Then
VA_SomaDigito10 = VA_SomaDigito10 + VA_Resultado + 1
Else
VA_SomaDigito10 = VA_SomaDigito10 + VA_Resultado
End If
VA_Resultado = Numero(5) * 2
If VA_Resultado > 9 Then
VA_SomaDigito10 = VA_SomaDigito10 + VA_Resultado + 1
Else
VA_SomaDigito10 = VA_SomaDigito10 + VA_Resultado
End If
VA_Resultado = Numero(7) * 2
If VA_Resultado > 9 Then
VA_SomaDigito10 = VA_SomaDigito10 + VA_Resultado + 1
Else
VA_SomaDigito10 = VA_SomaDigito10 + VA_Resultado
End If
VA_SomaDigito10 = VA_SomaDigito10 + Numero(2) + Numero(4) + Numero(6)
If Mid(Str(VA_SomaDigito10), Len(Str(VA_SomaDigito10)), 1) = "0"
Then
VA_Resto = 0
Else
VA_Resto = 10 - Val(Mid(Str(VA_SomaDigito10), _ Len(Str(VA_SomaDigito10)),
1))
End If
If VA_Resto <> Numero(8) Then
Exit Function
End If
VA_Resultado = (Numero(1) * 5) + (Numero(2) * 4) _
+ (Numero(3) * 3) + (Numero(4) * 2) _
+ (Numero(5) * 9) + (Numero(6) * 8) + _
(Numero(7) * 7) + (Numero(8) * 6) + _
(Numero(9) * 5) + (Numero(10) * 4) + _
(Numero(11) * 3) + (Numero(12) * 2)
' Atribui para resto o resto da divisão
' de VA_resultado dividido por 11
VA_Resto = VA_Resultado Mod 11
If VA_Resto < 2 Then
VA_resto1 = 0
Else
VA_resto1 = 11 - VA_Resto
End If
If VA_resto1 <> Numero(13) Then
Exit Function
End If
VA_Resultado = (Numero(1) * 6) + _
(Numero(2) * 5) + (Numero(3) * 4) + _
(Numero(4) * 3) + (Numero(5) * 2) + _
(Numero(6) * 9) + (Numero(7) * 8) + _
(Numero(8) * 7) + (Numero(9) * 6) + _
(Numero(10) * 5) + (Numero(11) * 4) + _
(Numero(12) * 3) + (Numero(13) * 2)
' Atribui para resto o resto da divisão
' de VA_resultado dividido por 11
VA_Resto = VA_Resultado Mod 11
If VA_Resto < 2 Then
VA_resto1 = 0
Else
VA_resto1 = 11 - VA_Resto
End If
If VA_resto1 <> Numero(14) Then
Exit Function
End If
Else ' Cpf
VA_Resultado = (Numero(4) * 1) + _
(Numero(5) * 2) + (Numero(6) * 3) _
+ (Numero(7) * 4) + (Numero(8) * 5) _
+ (Numero(9) * 6) + (Numero(10) * 7)_
+ (Numero(11) * 8) + (Numero(12) * 9)
VA_Resto = VA_Resultado Mod 11
If VA_Resto > 9 Then
VA_resto1 = VA_Resto - 10
Else
VA_resto1 = VA_Resto
End If
If VA_resto1 <> Numero(13) Then
Exit Function
End If
VA_Resultado = (Numero(5) * 1) _
+ (Numero(6) * 2) + (Numero(7) * 3) _
+ (Numero(8) * 4) + (Numero(9) * 5) + _
(Numero(10) * 6) + (Numero(11) * 7) + _
(Numero(12) * 8) + (VA_Resto * 9)
VA_Resto = VA_Resultado Mod 11
If VA_Resto > 9 Then
VA_resto1 = VA_Resto - 10
Else
VA_resto1 = VA_Resto
End If
If VA_resto1 <> Numero(14) Then
Exit Function
End If
End If
Fu_consistir_CgcCpf = True
End Function
|
| Imprimindo Relatórios do Crystal no VB |
Você precisa criar um relatório,
baseado na sua tabela, diretamente no Crystal. Depois você deverá inserir o objeto
Crystal no seu formulário. Você deve "setar", diretamente nas propriedades do
Crystal, ou em tempo de execução, as seguintes propriedades:
- ReportFileName, que é o nome do arquivo RPT que será impresso;
- Destination, se a saída será a impressora, o vídeo ou um arquivo texto;
- P/ executar a impressão basta usar o comando NomedoControleReport.Action = 1.
|
|
DBGrid
com consultas parametrizadas (consulta com parâmetros) |
Você deverá mudar a propriedade RecordSource
do seu controle data (no qual é baseado o DBGrid) em tempo de execução, para algo como
o que segue:
Data1.RecordSource = "Select * suatabela Where
seucampo = valordocamponoformulário"
Data1.Refresh
É necessário utilizar o método Refresh para atualizar o
controle Data.
|
| Movendo-se entre os campos com Enter |
Usar o evento KeyPress dos seus
controles.
IF Keyascii =13 Then
SendKeys "{TAB}"
END IF
|
|