Dicas de Visual Basic



Não use Visual Basic !!



Mas se quiser arriscar mesmo e for trabalhar com
banco de dados, trabalhe bastante com
SQL,
principalmente para consultas,atualizações em massa,
totalizadores e agrupamento de registros.



Utilize o tratamento de erros através de
"On Error" ... mas cuidado !! Você tem duas opções:
utilizando "On Error Resume Next", o erro é ignorado,
e isso em certos casos não é bom, pois não se
sabe se deu erro ou não;ou utilize "On Error Goto <label>",
tomando cuidado para não criar um espaguete lógico no
seu código infeliz.



VB4/VB5- Movendo e redimensionando controles com precisão

Ao desenhar um form, você pode utilizar mouse e teclado para
obter melhor precisão. Esta dica serve também para Access 2 e 7 (95)
.
A - Quando você desejar alterar o tamanho de um controle:
1. Selecione-o
2. Pressione SHIFT e use as teclas de navegação para
alterar o tamanho.

B - Quando você desejar mover um controle:
1. Selecione-o
2. Pressione CTRL e use as teclas de
navegação para alterar a posição.

C - Maior precisão
Use os valores numéricos de tamanho e posição:
left, top, height e width - correspondentes a x, y'
(eixo y do topo para baixo) , h (altura) e b (base),
respectivamente - na Janela de Propriedades ou
Janela de Código. Esta tarefa é um pouco árdua,
então, desenhe o controle com medidas
aproximadas para depois, ajustar, via digitação de valores.



VB3 /VB4/ VB5 -Abrindo bases de dados com senha

Dim wrk As Workspace
Dim db As Database
Set wrk = DBEngine. Workspace(0)
Set db = wrk.OpenDatabase("MYDB.MDB", false, false, ";PWD=bobo")

O parâmetro Connect (4º 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
(2º e 3º parâmetros) devem ser falsos.



VB3/VB4/VB5 - Digitação em Grid

O controle Grid é uma tabela de exibição de dados, que não
permite a digitação direta de valores em suas células
(não estou falando do DBGrid). É possível "simular" a aceitação
de teclas através de código. Basta um clique de mouse na
célula e digitar. Quem se habilitar a isso deve ter incluído
as rotinas abaixo nos eventos KeyDown e KeyPress.

Sub Grid1_KeyDown (KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case &H8 'BACKSPACE
If Len(Grid1.Text) > 0 Then
Grid1.Text = Left(Grid1.Text, (Len(Grid1.Text) - 1))
End If
Case &H2E 'DEL
Grid1.Text = ""
End Select
End Sub

Sub Grid1_KeyPress (keyascii As Integer)
Select Case keyascii
Case Is <> 8, 9, 10, 13'não imprimíveis
Grid1.Text = Grid1.Text & Chr(keyascii)
End Select
End Sub


No evento KeyPress todos os caracteres imprimíveis são
acrescentados ao texto da célula ativa
do Grid. O evento KeyDown apaga o último caracter com
BACKSPACE ou o texto inteiro com a tecla DEL.



VB3/VB4/VB5 - Verificando se uma aplicação está sendo
executada pela segunda vez na mesma máquina

Você pode garantir que um sistema só será executado em uma
sessão ao mesmo tempo.
O controle disto no VB é feito através do objeto App (Aplicação).

Dim SaveTitle as string
If App.PrevInstance Then
SaveTitle = App.Title
App.Title = "... segunda chamada ao mesmo programa."
Me.Caption = "... segunda chamada ao" + _
"mesmo programa, serei fechado"
'se for a Sub Main, a linha acima, obviamente, não existe
'as linhas abaixo fecham a segunda chamada
'e alternam para a primeira
AppActivate SaveTitle
SendKeys "% R", True
End
End If

O código acima deve ser a primeira coisa a ser executada
na sua aplicação. Assim, ao invés de
abrir uma segunda sessão do programa, o Windows
irá alternar para a sessão já aberta.




VB3/VB4 /VB5- Não vá embora sem avisar

Usuários podem, por descuido, sair da sua aplicação através
da Lista de Tarefas ou Barra de Tarefas, ou ainda,
saindo do Windows. Adicione um procedimento ao
evento QueryUnload do form principal para prevenir o problema.
Este evento possui um parâmetro, o UnloadMode, que permite detectar
como o fechamento do form foi invocado. Se o valor for 1, representa
que o fechamento ocorreu via código
(comando Unload). Se o valor do parâmetro cancel for
alterado para true, o fechamento do form é cancelado.
Veja QueryUnload e Using MDI Features no Help do VB para maiores detalhes.

Private Sub Form_QueryUnload (Cancel As Integer, UnloadMode As Integer)
If UnLoadMode <> 1 then
If MsgBox("Deseja realmente sair do sistema?", 32 + 4) =7 Then
'respondeu não
Cancel = True
End If
End If
End Sub





VB3/VB4/VB5/ACCESS 2 e 97 - Alterações com Mid

Você provavelmente já conhece a função e o comando Mid, que
retorna uma substring com um número específico de
caracteres, ou seja, uma parte da string usada como parâmetro.
Mas, você sabe como usar o Mid para substituir caracteres no meio
de uma string? O Mid é uma pequena excentricidade do VB,
pois, altera um de seus próprios argumentos. Mas, isto economiza
uma série de instruções de concatenação, observe:

Dim mystring as String
mystring = "SOME STRING"
If Mid(mystring, 2, 1) = "O" Then
mid(mystring, 2, 1) = "A" ' substituindo caracter
End If




Se você tiver uma linha de comando quiilométrica a
digitar, utilize o caracter underline ("_" ou sublinha, ou sublinhado,
ou undescore, enfim, chame do que quiser, até de tracinho) no
final da linha, após um espaço em branco. Assim:

Texto = IIf(isnull(NomeFuncionário), "funcionário " + _
"não cadastrado", NomeFuncionario)

Se você tem um texto muito grande a ser "setado" a uma
variável, e não quer perdê-lo de vista, divida-o em partes
menores, concatenado-as. Assim:

Texto = "Alunos do Bacharel em Matemática" + _
"com Informática da Fundação "+_
"Santo André, como vão ? Tirando " + _
"os problemas, tudo está bem!!"




Lembre-se sempre: o VB pode ter vários bugs e limitações e
atrapalhar em muita coisa, mas quem pode atrapalhar mais é o
próprio programador ... Não importa a linguagem, o bom
programador faz algo decente mesmo se for em
arquivo em batch do DOS.