Apostila_Geral_Progr..

Propaganda
Tecnologia
Programação de
Computadores IV
UNISAL
Centro Universitário Salesiano de Campinas
Prof. Gale
Programação de Computadores IV – Prof. Gale
INTRODUÇÃO
Antes do Visual Basic, todas as linguagens de programação eram parecidas do ponto de vista
conceitual. Havia diferenças de sintaxe, é claro, bem como diferenças importantes de paradigmas.
Entretanto, a metodologia da programação em C, por exemplo, era a mesma da programação em
Pascal, Cobol ou Fortran.
O Visual Basic introduziu uma estratégia radicalmente nova de programação. O fato é que,
com o passar do tempo, escrever programas passou a ser cada vez mais difícil, especialmente
programas que exigem interface gráfica. Entretanto, alguns programadores perceberam que muitas
coisas que eram difíceis de ser feitas, como construir janelas, menus ou botões, podiam ser feitas
sempre da mesma forma. Estes programadores, que já tinham o hábito de colecionar sub-rotinas de
utilização geral, passaram a encapsular algumas destas rotinas em uma espécie de “objeto” pronto
para ser usado. A idéia final, que deu origem ao Visual Basic, foi a percepção de que vários destes
objetos podiam simplesmente ser desenhados na tela como se desenha um retângulo ou outra figura
qualquer.
O Visual Basic surgiu no começo da década de 90 e deu início a uma profusão de linguagens
visuais, tais como Delphi, Visual C, Visual Fox Pro, etc. Entretanto, devido a estar mais tempo no
mercado, o Visual Basic apresenta certas vantagens sobre os concorrentes. De fato, o VB (como
chamaremos esta linguagem daqui para frente) é o pacote de programação que apresenta o maior
número de controles no mercado, os quais o programador pode adquirir, muitas vezes sem ônus
(como é o caso dos controles à disposição na Internet ou daqueles que vêem com alguns livros de
programação). É claro que a linguagem por traz do VB é o Basic, mas esta linguagem nada tem a ver
com aquele velho Basic interpretado dos primeiros computadores pessoais. Nos últimos anos o Basic
se sofisticou e se transformou em uma linguagem estruturada que nada fica a dever ao Pascal, por
exemplo. Ainda assim, trata-se de uma linguagem de alto nível e não de uma linguagem “quebradora
de bits”, como o C.
O Visual Basic, por outro lado, é um pacote de ferramentas de programação concebido para programação em Windows. Os objetos são desenhados na tela de forma visual, com auxílio do mouse, e não
por meio de programação. A programação, por outro lado, é orientada a eventos. O coração dos
recursos de detecção de eventos do Windows é a sua arquitetura de mensagens. Quando um evento
ocorre, tal como uma tecla pressionada ou um clique de mouse, uma mensagem é enviada para a fila
de mensagens do Windows. A mensagem estará disponível para todos os aplicativos que estiverem
rodando, mas apenas aquele interessado no evento responderá à mensagem. Tudo que o usuário
precisa fazer é detectar o evento e mandar que um trecho de código seja executado quando isto
acontecer. O VB torna esta tarefa fantasticamente fácil, como veremos.
DICAS DE PROGRAMAÇÃO
• Planeje antecipadamente seus programas. Pense sobre o que é necessário fazer e quais as
ferramentas necessárias. Planejar é essencial para a programação e é comum que programadores
iniciantes se esqueçam deste passo;
• Pense como o usuário. Lembre-se que o usuário não é um especialista em informática. Logo,
você deve ser mais esperto do que ele. Também não é necessário tratá-lo como um idiota. Lembrese da velha máxima da informática: “Um software que qualquer idiota possa usar será usado
somente por um idiota !”;
• Pense nos controles. É comum que programadores inexperientes tentem desenvolver tudo com
as próprias mãos, por falta de hábito ou somente “para provar que é possível”. Trata-se de uma
perda de tempo, pois podem existir controles de software prontos que podem fazer o que você
precisa;
O ambiente de trabalho do Visual Basic é formado por um conjunto de janelas que podem ser abertas
Centro Universitário Salesiano de Campinas
2
Programação de Computadores IV – Prof. Gale
e fechadas individualmente. A janela principal é aquela que contém a Barra de Menus (Menu Bar) e a
Barra de Ferramentas (Tool Bar), conforme mostrado na figura 1 abaixo
Figura 1 - Barra de Menus e de Ferramentas
Como pode ser visto, esta janela contém os controles usuais de qualquer aplicativo Windows,
tais como Abrir Arquivo, Salvar Arquivo, Editar, etc.
A figura 2 mostra a Caixa de Ferramentas (Tool Box), que contém todos os controles
personalizados (objetos) do Visual Basic. A figura 3 mostra a Janela de Propriedades (Properties
Window) que permite o acesso a todas as propriedades do controle selecionado.
Fig. 2
Fig. 3
Fig. 4
A figura 4 mostra a Janela do Projeto
(Project Window), que permite o acesso a
todos os arquivos do projeto em questão.
Para abrir cada uma destas janelas
você pode usar o menu View, ou, então,
digitar F4 para abrir a Janela de Propriedades
e Ctrl+R para abrir a Janela do Projeto. A
Caixa de Ferramentas não tem tecla de atalho
associada.
ALGUMA TERMINOLOGIA
Um objeto, em Visual Basic, é uma conjunto de códigos de programação (sub-rotinas) e
propriedades. Na verdade, cada elemento que você vê em um programa Windows é um objeto
individual, dotado de propriedades características..
Exemplo: Objeto Avião:
Propriedades: velocidade, altitude, inclinação, etc.;
Rotinas: decolar, aterrissar, taxiar, etc.
Mudando as propriedades de um objeto, podemos mudar a forma como ele interage com o
ambiente. Na programação em VB não é necessário ter um conhecimento muito grande de
programação orientada a objetos, como é necessário em outras linguagens. Os objetos estão prontos
para serem usados e o Visual Basic cuida de quase tudo. A programação em VB não é um exemplo
Centro Universitário Salesiano de Campinas
3
Programação de Computadores IV – Prof. Gale
de “Programação Orientada a Objetos” (POO), como é o caso do C++ ou do Object Pascal. O termo
“objeto”, em VB, é usado de uma maneira um pouco diferente, mas isto não significa que a
abordagem seja deficiente. É apenas diferente da POO clássica.
Projeto é o nome dado a um aplicativo desenvolvido em Visual Basic. O arquivo do projeto
(.vpb) é apenas uma lista de todos os outros arquivos que fazem parte do aplicativo, tais como:
•
•
•
•
•
formulários (.FRM);
módulos de programação (.bas);
controles de 16 bits (.VBX);
controles de 32 bits (.OCX);
bancos de dados (.mdb).
Quando se gera o programa executável, o VB cria um arquivo .EXE que tem todas as
características do arquivo .VBP, mas que pode ser executado fora do ambiente do VB.
a janela TOOLBOX (Caixa de Ferramentas) - é a janela que traz os Controles (as ferramentas no VB)
-
Pointer – Não é um Controle, mas uma ferramenta que serve
para mover e dimensionar Controles;
-
PictureBox – Exibir figuras ou ícones nos Formulários.
Também responde ao Evento click.
-
Label – Etiqueta ou rótulo, exibe um texto que não
pode
ser editado pelo usuário. Uso: Títulos.
-
TextBox – Exibe uma área onde o usuário pode digitar texto.
Frame – Moldura para agrupar Controles para que
funcionem de forma lógica.
-
CommandButton – Botão de Comando. Executa ação ao ser
clicado.
- CheckBox – Pode assumir valores falso ou verdadeiro. Em um mesmo Formulário vários
CheckBoxes podem assumir o valor verdadeiro ao mesmo
tempo.
- OptionButton – Pode também assumir valores falso/verdadeiro, mas em um mesmo
Formulário somente um OptionButton pode assumir o valor verdadeiro.
- ComboBox – Combina caixa de texto com caixa de listagem. O usuário pode digitar a
informação como também pode encolher da lista.
- ListBox – Exibe uma lista de itens que o usuário pode selecionar.
Centro Universitário Salesiano de Campinas
4
Programação de Computadores IV – Prof. Gale
- ScrollBar Horizontal e Vertical – Permite selecionar com o mouse um determinado
valor numa faixa de valores.
- Timer – Controla intervalos de tempo determinados pelo programador.
- DriveListBox – Exibe uma lista de drives onde o usuário pode selecionar um.
- DirListBox – Exibe uma lista de diretórios (pastas) e permite que o usuário selecione um.
- FileListBox – Idem para arquivos.
- Shape – Adiciona diversas formas geométricas ao Formulário.
- Line – Adiciona linhas a Formulários.
- Image – Exibe figuras ou ícones e funciona como um CommandButton quando clicado.
- Data – É o DataControl, que permite conectar-se a um Banco de Dados existente para
extrair manipular as informações contidas neste.
- OLE – Incorpora objetos de outros aplicativos em um Formulário.
- CommonDialog – Exibe um conjunto de caixas de diálogo comuns no Windows, abrir
arquivo, imprimir, fontes, salvar, etc.
- ToolBar – Contem uma coleção de Botões e é utilizado para criar Barras de Ferramentas
que estão associadas com uma aplicação.
- StatusBar – Cria uma Barra de Status para um programa com até 16 painéis contidos em
uma coleção de painéis.
- ProgessBar – Barra que indica o progresso de uma operação.
- ImageList – Contém uma coleção de objetos ListImage. Para exibir imagens.
Centro Universitário Salesiano de Campinas
5
Programação de Computadores IV – Prof. Gale
- DBList – Automaticamente preenche uma lista com campos de um DataControl e
opcionalmente passa o campo selecionado para um segundo DataControl. O DBCombo é
similar mas permite editar o campo selecionado.
- DBGrid – Exibe e manipula uma série de linhas e colunas representando Registros e
Campos de um objeto Recordset.
CONVENÇÕES DE NOMES PARA CONTROLES
É sempre bom estabelecer convenções de nomes para objetos do Visual Basic, sob risco de
não se saber, no meio de um projeto mais complicado, qual o tipo de um objeto cujo nome é, por
exemplo, “dados”. A tabela 3 a seguir apresenta alguns exemplos para os controles mais comuns.
Tabela 3
Controle
Form
Check Box
Combo Box
Command Button
Data
Directory List Box
Drive List Box
File List Box
Frame
Grid
Horizontal scroll bar
Image
Label
Line
List Box
Menu
OLE
Option Button
Picture Box
Shape
Text Box
Timer
Vertical Scroll Bar
Nome em Português
formulário
Caixa de Verificação
Caixa “Combo”
Botão de Comando
Dados
Caixa de Diretório
Caixa de Drives
Caixa de Arquivos
Quadro
Grade
Barra de Rolagem Horizontal
Imagem
Rótulo
Linha
Caixa de Lista
Menu
OLE
Botão de Opções
Caixa de Figuras
Forma (geométrica)
Caixa de Texto
Temporizador
Barra de Rolagem Vertical
Centro Universitário Salesiano de Campinas
Prefixo
frm
chk
cbo
cmd
dat
dir
drv
fil
fra
grd
hsb
img
lbl
lin
lst
mnu
ole
opt
pic
sha
txt
tmr
vsb
Exemplo
frmAbrir
chkLeitura
cboPortuguês
cmdCancelar
datLivros
dirFontes
drvAlvo
filArquivos
fraLíngua
grdPreços
hsbVolume
imgÍcone
lblMensagem
linVertical
lstCEP
mnuSalvar
oleObjeto
optFrancês
picDesenho
shaCírculo
txtEntrada
tmrAlarme
vsbTaxa
6
Programação de Computadores IV – Prof. Gale
1ª AULA
VISUAL BASIC – PROF. GALE
Palavras-Chaves
•
•
•
•
•
•
•
Name
Caption
MinButton
MaxButton
ControlBox
Window State
Backcolor
name_objeto.propriedade = ????
Centro Universitário Salesiano de Campinas
7
Programação de Computadores IV – Prof. Gale
Palavras-Chaves
•
•
•
•
•
•
•
•
•
Label (name, caption, font, forecolor)
Text (name , text )
Command Button (name, caption, font)
Timer (interval)
Date , Time
Option Button
Mousemove
End
Hide , Show
Cores
•
•
•
RGB (0..255, 0..255, 0..255)
Constantes: vbred, vbgreen, vbblack, ...
Qbcolor (0..15)
Centro Universitário Salesiano de Campinas
8
Programação de Computadores IV – Prof. Gale
2ª AULA
VISUAL BASIC – PROF. GALE
Palavras-Chaves
•
•
•
•
Shape (fillcolor, fillstyle, shape)
VScroll (max, min, value)
Textos: fontitalic, fontbold, fontunderline,
fontsize, forecolor
Decisão:
if (condição) then
else (opcional)
endif
Centro Universitário Salesiano de Campinas
9
Programação de Computadores IV – Prof. Gale
3ª AULA
VISUAL BASIC – PROF. GALE
Palavras-Chaves
•
•
•
•
Variáveis Globais: declaradas quando
necessitamos utilizar em vários forms a
mesma variável Global variável
Form (picture)
Image (picture, left, top)
Seleção:
Select Case testexpression
[Case expressionlist-n
[statements-n]] . . .
[Case Else expressionlist-n
[elsestatements-n]]
End Select
Centro Universitário Salesiano de Campinas
10
Programação de Computadores IV – Prof. Gale
4ª AULA
VISUAL BASIC – PROF. GALE
Permitem exibir uma mensagem em uma janela e aguarda que o usuário escolha um botão. Uma caixa de mensagem pode ser
utilizada de duas maneiras:
•
Como comando, não sendo possível retornar valor
•
Como função, retornando assim um valor
Sintaxe:
`Como função:
MSGBOX (Mensagem[,[tipo][,título]])
Como comando:
MSGBOX mensagem[,[tipo][,título]]
Onde: mensagem : é o próprio escrito
Tipo : deve conter uma expressão numérica opcional composta por uma soma de valores que especificam a
quantidade e o tipo dos botões, o ícone que será exibido e o estilo da janela.
De acordo com a tabela:
Tipos de Botões
Valor
Descrição
MB_OK
0
Mostra apenas o OK
MB_OKCANCEL
1
“
OK e CANCEL
MB_ABORTRETRYIGNORE
2
“
ABORT, RETRY, IGNORE
MB_YESNOCANCEL
3
“
SIM, NÃO, CANCEL
MB_YESNO
4
“
SIM, NÃO
MB_RETRYCANCEL
5
“
RETRY, CANCEL
Ícones:
MB_ICONSTOP
MB_ICONQUESTION
MB_ICONEXCLAMATION
MB_ICONINFORMATION
16
32
48
64
STOP
?
!
i
Título: expressão do tipo caracter que será exibida na barra de título da janela.
Obs: Para pular linha utilizamos CHR$(13)
Exemplo:
MsgBox "Preste Atenção!!!", 16, "ERRO"
"INFORMAÇÃO"
MsgBox "Você deverá pressionar algum botão...", 67,
Os valores retornados pela MSGBOX indicam qual o botão que foi pressionado.
Tipos de Botões
IDOK
IDCANCEL
IDABORT
IDRETRY
IDIGNORE
IDYES
IDNO
Centro Universitário Salesiano de Campinas
Valor
1
2
3
4
5
6
7
11
Programação de Computadores IV – Prof. Gale
Crie cada “msgbox” em um botão diferente:
Centro Universitário Salesiano de Campinas
12
Programação de Computadores IV – Prof. Gale
4ª AULA – Continuação...
VISUAL BASIC – PROF. GALE
Comando
Format(expression[, format[, firstdayofweek[,
firstweekofyear]]])
Exemplo:
Text1.text = format$ (date, “dd/mmm/yyyy”)
Palavras - Chaves
Objetos:
Drive / Dir / File (pattern)
Image (loadpicture , strech, filename )
Centro Universitário Salesiano de Campinas
13
Programação de Computadores IV – Prof. Gale
Exercícios – Faça Você
Centro Universitário Salesiano de Campinas
14
Programação de Computadores IV – Prof. Gale
Centro Universitário Salesiano de Campinas
15
Programação de Computadores IV – Prof. Gale
Instruções para Desenvolvimento dos
Exercícios de Visual Basic
Atenção: Este é um único projeto formado por 12 formulários diferentes. Cada formulário deve ser acessado pelo botão
próximo ou anterior. É necessário criar um formulário antes de chamá-lo. Como se faz isso??
Vá até o menu do Visual Basic na opção Project / Add Form aparecerá uma tela onde você deverá escolher
“Form” e teclar abrir ou mesmo teclar duas vezes sobre o próprio form. Se você fez a “coisa” certa aparecerá no seu canto
superior direito “Form2”, e assim por diante.
Dicas para realização dos formulários:
Form 1:
o usuário digita um nome e um sobrenome e quando teclar concatenar exiba na terceira textbox o nome e
sobrenome juntos (+)
para colocar o botão próximo não se esqueça:
form1.hide (para esconder o primeiro formulário)
form2.show (para chamar o outro formulário)
para colocar figuras dentro do botão, altere a propriedade “Style” para “graphical” e escolha uma figura dentro da
propriedade “Picture”
no botão sair exiba uma msgbox perguntando realmente se deseja ou não sair do programa.
Form 2:
Permita o usuário digitar dois números e pressionando “Somar” exiba a soma dos dois. Cuidado: os valores
digitados em uma textbox são textos, sendo necessários converter o texto para números, utilizando assim o comando “val”.
Ex: a = val(text1.text)
Form 3:
Permita o usuário digitar o Salário Bruto, as horas extras e o salário família.
Na textbox dos descontos deve-se conter uma soma do valor calculado do INSS + IRRF
o INSS corresponde a 8% do salário bruto
O imposto de renda e a faixa de imposto de renda deve obedecer o cálculo feito no jornal, procure-o
Esta empresa paga R$ 10,00 para cada hora extra feita
O salário líquido é a soma do salário bruto + horas extras + salário família – descontos
Se o Salário líquido ultrapassar R$ 5.000,00 exiba uma mensagem qualquer na caixa de mensagem do final do
formulário.
O botão limpar, limpa todos os conteúdos das textbox
Form 4:
rankine.
Permita o usuário digitar uma temperatura em Celsius e quando pressionar calcular exiba em farenheit, kelvin e
Form 5:
Permita o usuário digitar 3 valores e utilizando o comando “if” exiba o menor e o maior valor digitado.
Form 6:
Permita o usuário digitar dois valores. De acordo com a opção desejada mostre o resultado na textbox. Cuidado:
para se calcular raiz quadrada utiliza-se “sqr”
para seno utiliza-se sin
para cosseno utiliza-se cos
O mod retorna o resto da divisão em Visual
Os valores de seno e cos devem ser convertidos para graus: 3.1415 / 180
Form 7:
Permita o usuário digitar um número de um mês e utilizando obrigatoriamente o comando “Select case” exiba por
extenso o mês.
exiba também uma hora e data correntes
Form 8:
Centro Universitário Salesiano de Campinas
16
Programação de Computadores IV – Prof. Gale
Permita o usuário escolher um número e no momento que teclar “Mostrar” exiba a tabuada deste número em uma
“ListBox”.
Para utilização de uma listbox é necessário um comando de laço (for), um método chamado “Additem” para
preencher cada linha da listbox.
Form 9:
A hora em que o usuário entrar neste formulário a bolinha comece a acender e apagar no sentido horário e o
número que se encontra no meio vai diminuindo até chegar ao 1, voltando rapidamente ao 10 e continuando o processo.
As bolinhas devem esperar 1s para apagar e acender.
Form 10:
Desenvolva dois shapes (um do lado esquerdo e outro do lado direito), a medida em que o usuário entrar no
formulário este vão juntos ao mesmo tempo um para o lado esquerdo e outro para o direito, chegando volta e continua o
processo.
Form 11:
Coloque nas textbox os valores dos resistores e calcule a resistência equivalente em série e em paralelo.
Form 12:
Permita trocar o valor das duas textbox e permita recalcular o salário de uma determinada pessoa, com base no
aumento escolhido de 5%, 10%, 15% ou 20%.
Centro Universitário Salesiano de Campinas
17
Programação de Computadores IV – Prof. Gale
5ª AULA
VISUAL BASIC – PROF. GALE
Manipulando Strings
I-) As funções strings básicas
Primeiro vamos mostrar as funções para tratamento de strings presentes em todas as versções do VB:
a-) Str(numero) - Converte um valor numérica em uma string do tipo Variant
Dim String
String = Str(459)
String = Str(-459.65)
String = Str(459.001)
b-)
Len(string )
' Resultado =>
" 459".
' Resultado = >
"-459.65".
' Resultado = >
" 459.001".
- Determina o número de caracteres de uma string. (o comprimento da string)
Dim sNome As String
Dim tamanho As Long
sNome = "Visual Basic"
tamanho = Len(sNome)
'Resultado =>
c-) Chr$(codigo_do_caractere)
Dim Caractere
Caractere = Chr(65)
Caractere = Chr(97)
Caractere = Chr(62)
Caractere = Chr(37)
'
'
'
'
-
a variavel tamanho será igual a 12
Retorna uma string caractere associado ao código indicado
Resultado
Resultado
Resultado
Resultado
==>
==>
==>
==>
A
a
>
%
Para exibir os códigos de todos os caracteres de 0 a 255 use o código a seguir:
Dim i as integer
For i=0 to 255
Debug.Print i; chr$(i)
Next
d-) Asc(string)
- Retorna um valor inteiro que representa o código do primeiro Caractere da String.
Dim MyNumber
Numero = Asc("A")
Numero = Asc("a")
Numero = Asc("Amor")
' Resultado => 65.
' Resultado => 97.
' Resultado => 65.
e-) Space(numero) - Retorna uma string do tipo Variant contendo a quantidade de espaços indicados
por número.
String = "Visual" & Space(10) & "Basic"
Basic
- insere dez espaços entre as strings Visual e
f-) String$(Tamanho,String) - Cria uma string com comprrimento igual a Tamanho e que contém o
primeiro caráter indicado em String. Se String tiver mais de um caractere somente o primeiro será
usado.
String$(9,"VISUAL")
g-) Trim$(string)
'retorna
=>
"VVVVVVVVV"
- Remove os espaços eexistentes de ambos os lados de uma string.
Dim MVar
Centro Universitário Salesiano de Campinas
18
Programação de Computadores IV – Prof. Gale
MVar = Trim("
visual basic
")
'MVar irá conter
==>
"visual basic".
h-) RTrim$(string) - Remove os espaços a direita da string.
Dim MVar
MVar = RTrim("
basic".
visual basic
")
'MVar irá conter
==>
"
visual
==>
"visual basic
i-) LTrim$(string) - Remove os espaços a esquerda daa string.
Dim MVar
MVar = LTrim("
".
visual basic
j-) LCase$(string) -
")
'MVar irá conter
Converte todos os caracteres alfanuméricos na string para minúsculas.
LCase("SÃO JOSE DO RIO PRETO , 12-08-2001")
12-08-2001
l-) UCase$(string) -
retorna ==> são jose do rio preto ,
Converte todos os caracteres alfanuméricos na string para maiúsculas.
LCase("São Jose Do Rio Preto , 12-08-2001")
PRETO , 12-08-2001
retorna ==>
SÃO JOSE DO RIO
II) Substrings
Substrings são pedaços de uma string. Veremos a seguir as principais funções para o tratamento de substrings.
a-) Left$(String,
esquerdo da String.
Tamanho) - Retorna uma string contendo o número de caracteres definido em Tamanho do lado
Left$("Programar com Visual Basic é fácil", 9)
Retorna
==> "Programar"
Left$("Programar com Visual Basic é fácil", 50)
Retorna ==> "Programar com Visual Basic é fácil"
Left$("Programar com Visual Basic é fácil", 0)
Retorna ==> ""
b-) Right$(String,
direito da String.
Tamanho) - Retorna uma string contendo o número de caracteres definido em Tamanho do lado
Right$("Programar com Visual Basic é fácil", 8)
Retorna
==> " é fácil"
Right$("Programar com Visual Basic é fácil", 50)
Retorna ==> "Programar com Visual Basic é fácil"
Right$("Programar com Visual Basic é fácil", 0)
Retorna ==> ""
c-) Mid$(String, Inicio,[Tamanho]) - Como função retornaa uma substring da String dada , começando no
primeiro caractere de Inicio com comprimento definido em Tamanho. Se Tamanho for omitido ou for menor que o
comprimento da string todos os caracteres a partir de inicio será retornado.
Texto = " Usando strings no Visual Basic"
Mid$(texto,7,7)
retorna => "strings"
Mid$(texto,7)
retorna => "strings no Visual Basic"
Podemos usar MID$ para substituir uma parte da string dada, a partir do primeiro caractere da posição Inicio.
Texto ="Isto é um teste"
Mid$(texto,6)="123456"
retorna => "Isto 123456"
Centro Universitário Salesiano de Campinas
19
Programação de Computadores IV – Prof. Gale
Mid$(texto,6,3)="123456"
retorna => "isto 123m teste"
Mid$(texto,8)="12"
retorna => "Isto é 12 teste"
d-) Instr$(Inicio,string1,string2,[Compare]) - Determina a posiçãoo da primeira ocorrência de uma substring
contida em uma string. Retorna uma variant do tipo Long.
Os argumentos são :
Argumentos
Descrição
Inicio
Expressão numérica que define a posição de inicio para iniciar a procura. Se omitida a procura começa
no inicio da string.
string1
A expressão string a ser procurada.
string2
A expressão string a procurar.
compare
Determina o tipo de comparação que será feito entre as strings.
Os possiveis tipos de comparação são:
Constante
Valor
Descrição
vbUseCompareOption
-1
A comparação será feita como definida em Option
Compare
vbBinaryCompare
0
Comparação binária
vbTextCompare
1
Comparação textual
vbDatabaseCompare
2
Comparação com base no seu banco de dados . Só para o
Microsoft Access
Exemplos:
Dim String1, String2, posicao
String1 = "Visual Basic 6 A linguagem"
String2 = "a"
' string onde será feita a procura
' Substring a procurar
' comparação textual iniciando na posicao 4
posicao = InStr(4, String1, String2, 1)
' Comparação binaria iniciando na posicao 1
posicao = InStr(1, String1, "A", 0)
' Comparação binária
posicao = InStr(String1, "A")
posicao = InStr(1, String1, "W")
Centro Universitário Salesiano de Campinas
'Retorna =>
5.
'Retorna =>
'Returns =>
16
16
' Returns 0 (não achou)
20
Programação de Computadores IV – Prof. Gale
Nota: Observe que :
Se
A função InStr irá retornar:
string1 for igual a ""
0
string1 for Null
Null
string2 for igual a ""
Inicio
string2 for igual a Null
Null
string2 não for encontrada
0
string2 for encontrada em
string1
A posição onde ela for encontrada
start > string2
0
d-) Split(string,delimiter,count,compare_mode] VB6 - Divide uma string e retorna as substrings como um array de strings.
Parte
Descrição
String ( expressão )
Uma expressão string . Se a expressão for uma string vazia ("") o array
retornado estar vazio, ou seja , sem elementos.
delimiter
Um string caractere usado para identificar Indica onde a divisão vai ocorrer. Se
for omitida o caracter de espaço (" " ) será usado. Se for utilizado uma string
vazia ("") então um array contendo a expressão completa será retornada.
Count
O número máximo de substrings a ser retornada. -1 indica que todas as
substrings serão retornadas.
compare
Valor numérico indicando o tipo de comparação a usar quando da avaliação das
substrings . Veja os valores abaixo:
Os valores de compare podem ser:
Constante
Valor
Descrição
vbUseCompareOption
–1
Realiza uma comparação com base na definição de Option
Compare.
vbBinaryCompare
0
Realiza uma comparação binária.
vbTextCompare
1
Realiza uma comparação textual.
vbDatabaseCompare
2
Somente para arquivos Microsoft Access.
Exemplo 1- Vamos dividir a string "Visual Basic 6" (voce pode testar com diversas expressões)
1:Private Sub Command1_Click()
2:Dim i As Integer
3:Dim vetor As Variant
Inicie um projeto no VB e no formulario padrao insira uma
caixa de texto , uma caixa de listagem e um botão de
comando Abaixo veja o resultado do código ao lado:
4:vetor = Split(Text1.Text)
5:List1.Clear
6:For i = LBound(vetor) To UBound(vetor)
7:
List1.AddItem i & vbTab & vetor(i)
7:Next
8:End Sub
Centro Universitário Salesiano de Campinas
21
Programação de Computadores IV – Prof. Gale
O código para dividir strings e gerar vetores de substrings
O resultado gera 3 substrings: vetor(0), vetor(1) e vetor(2)
No exemplo acima usamos a função LBound para determinar o valor do menor índice de um array e UBound para
determinar o maior valor para um índice de um array. Assim acessaremos todos os índices do array.
Se substituirmos o código da linha 4 por : vetor = Split(Text1.Text,,2) iremos obter duas substrings:
0 Visual
1 Basic 6
Exemplo 2- Vamos acrescentar o caracter "s" para indicar onde a divisão irá ocorrer
Private Sub Command1_Click()
Dim i As Integer
Dim vetor As Variant
Inicie um projeto no VB e no formulario padrao insira uma
caixa de texto , uma caixa de listagem e um botão de
comando Abaixo veja o resultado do código ao lado:
vetor = Split(Text1.Text,"s")
List1.Clear
For i = LBound(vetor) To UBound(vetor)
List1.AddItem i & vbTab & vetor(i)
Next
End Sub
Note que a divisão teve inicio no caracter "s" , retornando 4 substrings contidas nos vetores com indices 0,1,2 e 3.
Podemos aproveitar esta última característica para 'contar' quantas vezes uma substring aparece numa string. Por
exemplo , suponha que você queira saber quantas vezes a substring "do" aparece na frase : "Avaliação do impacto
do treinamento no trabalho do programador". Usando Split fica fácil ...:
1:Dim frase As string
2:Dim vetor As Variant
3:frase = "Avaliação do impacto do treinamento no trabalho do programador"
4:vetor = Split(frase,"do")
5:MsgBox " 'do' aparece na texto ' " & frase & " ' " & UBound(vetor) & " vezes."
Centro Universitário Salesiano de Campinas
22
Programação de Computadores IV – Prof. Gale
Você ter como resposta que 'do' aparece 4 vezes no texto, pois 'do' também esta contida na palavra 'programador'.
Para contar somente as ocorrências da preposição 'do' altere a linha 4 do código para: 4:vetor = Split(frase," do
") e você obterá como resposta 3 vezes.
e-)Join(List,Delimter) VB6 - Concatena as substrings contidas em <List em uma única string.
-List - deve ser um array de uma dimensão contendo as strings a serem concatenadas
-Delimiter - Caractere string usado para separar as substrings na string retornada. Se omitida o caractere (" ")
sera usado. Se for uma string vazia ("") , todos os itens da lista serão concatenados sem delimitadores.
Exemplo:
Dim array(1 to 4) As String
Dim sJunta As String
array(1)="Visual"
array(2)="Basic"
array(3)="6"
array(4)="A linguagem"
sJunta= Join(array," ")
sJunta= Join(array)
sJunta= Join(array,",")
sJunta= Join(array,":")
sJunta= Join(array,"")
retorna => "Visual Basic 6 A linguagem"
retorna => "Visual Basic 6 A linguagem"
retorna => "Visual,Basic,6,A,linguagem"
retorna => "Visual:Basic:6:A:linguagem"
retorna => "VisualBasic6Alinguagem"
g-) Filter(Varlist, Value, Include, Compare) VB6 - Procura em VarList pelas strings definidas em
Value e retorna o resultado em um array.
- VarList - contém um array de strings que a função irá filtrar
- Value - é a string de caracteres usada para identificar qual elemento será incluída no novo array.
- Include - Um valor boleano que indica se os elementos contendo o valor coincidente será incluido ou não na
string . O valor padrão é True.
- Compare indica como a busca por Value será efetuada.
Os valores de compare podem ser:
Constante
vbUseCompareOption
Valor
–1
Descrição
Realiza uma comparação com base na definição de Option
Compare.
vbBinaryCompare
0
Realiza uma comparação binária.
vbTextCompare
1
Realiza uma comparação textual.
vbDatabaseCompare
2
Somente para arquivos Microsoft Access.
Exemplo:
Centro Universitário Salesiano de Campinas
23
Programação de Computadores IV – Prof. Gale
Dim vetor(1 to 3) As String
Dim i as integer
Dim sFiltra As Variant
vetor(1)="Visual"
vetor(2)="Basic 6"
vetor(3)="a linguagem"
sFiltra=Filter(vetor,"a")
List1.Clear
For i = LBound(vetor) To UBound(vetor)
List1.AddItem i & vbTab & vetor(i)
Next
h-) StrReverse(string) - VB6 - Retorna uma string com os caraccteres invertidos.
Exemplo: StrReverse ("Visual Basic")
retorna => cisaB lausiV
Se string for um for um valor Null ocorrerá um erro.
h-) Replace(string, strProcura, strSubstPor, Inicio, Contador, Compare)
1.
String - é a string a ser alterada
2.
strProcura - é a string a procurar em <String>
3.
strSubstPor - é a string usada para substituir a string <strProcura>
4.
Inicio - indica o incio da busca por <strProcura>. (Opcional)
5.
Contador - indica o número máximo de vezes que <strProcura> será substituida
6.
Compare - o modo de comparação a ser efetuada.
Esta função é muito útil para substituir ocorrências em uma string por um determinado valor. Vamos mostrar um
exemplo onde vamos substituir todas a vírgulas(,) em uma frase por ponto e vírgula(;):
Exemplo:
Frase = " Geralmente , temos um problema , quando a temperatura aumenta "
NovaFrase = Replace(Frase, "," , ";" ) retorna => "Geralmente ; temos um problema ; quando a
temperatura"
Nota: Observe que você deverá estar atento ás seguintes ocorrências:
Se
A função strReverse irá retornar:
string for igual a ""
""
string for Null
Um erro
strProcura for igual a ""
Uma cópia de string
strSubstPor for igual a ""
Uma cópia de string com todas as ocorrências de StrProcura removidas
Inicio > string
Uma string vazia ""
contador for igual a zero
Uma cópia de string
Centro Universitário Salesiano de Campinas
24
Programação de Computadores IV – Prof. Gale
FORMULÁRIO
Centro Universitário Salesiano de Campinas
25
Programação de Computadores IV – Prof. Gale
6ª AULA
VISUAL BASIC – PROF. GALE
Criação de Menus
Menus são criados usando a janela Menu Design. Você adiciona itens ao menu em tempo de projeto pela criação de controles
de menu e setando propriedades que definirão sua aparência.
Para a criação de um Menu devemos ir ao menu Tools – Menu Editor ou teclar Ctrl+E.
1) Começamos digitando o Título (em Caption) do Menu mais à esquerda. Caso desejemos acessar esse menu via Alt e a
letra grifada devemos inserir o & antes da letra que será grifada. No exemplo abaixo: &TesteMenu (que aparecerá como
TesteMenu);
2) Depois digitamos o nome (em Name) do Menu para referência em Código;
3) Os outros itens não são obrigatórios;
4) Clicar em Next para entrar um novo Menu ou item de Menu. Caso seja um item de Menu devemos clicar na seta para a
direita quando aparecerão três pontinhos a esquerda do título do item que ficará abaixo do nome do Menu.
5) Os Menus e os itens de Menus podem ser referenciados em Código através do Evento Click, que deve ser feito no
Formulário após teclarmos em OK.
Desenvolva o seguinte menu:
Arquivo
novo
abrir
texto
figura
sair
Editar
colar
Ajuda
normal
especial
copiar
Centro Universitário Salesiano de Campinas
26
Programação de Computadores IV – Prof. Gale
Botões Indexados
Geramos um botão indexado quando copiamos e colocamos um botão e mantemos o mesmo “name”. O que
diferencia um botão de outro é apenas a propriedade “index”, que retorna um valor numérico iniciado pelo valor 0.
No menu Project – Components, procurar: MICROSOFT Windows COMMON CONTROLS-2 6.0
OBJETO – DTPICKER (propriedade Value)
Sintaxe do Comando:
Centro Universitário Salesiano de Campinas
Configura
Descrição
yyyy
Year
q
Quarter
m
Month
y
Day of year
d
Day
w
Weekday
ww
Week of year
h
Hour
n
Minute
s
Second
DateDiff(interval, date1, date2)
27
Programação de Computadores IV – Prof. Gale
7ª AULA
VISUAL BASIC – PROF. GALE
Common Dialog
No menu Project – Components, procurar: MICROSOFT COMMON DIALOG CONTROLS-2 6.0
• Esse objeto permite exibir cinco caixas de diálogo nos padrões do Windows.
• Apenas uma caixa de diálogo pode ser exibida a partir de um objeto Common Dialog.
• Para exibir uma determinada caixa de diálogo, deve ser utilizado o método correspondente à caixa
desejada.
• Os conteúdos das caixas são controlados através de suas propriedades, ou seja, quando uma caixa é
preenchida, os resultados são apresentados por suas propriedades.
Caixas de Diálogo e sua utilização:
Abrir: para abrir um arquivo.
Método correspondente: ShowOpen
Salvar Como: para salvar um arquivo.
Método correspondente: ShowSave
Imprimir: para definir as opções de impressão.
Método correspondente: ShowPrinter
Fonte: para definir uma fonte e um estilo para textos. Método correspondente: ShowFont
Cor: para escolher uma nova cor da paleta.
Método correspondente: ShowColor
NOTAS:
Um objeto CommonDialog não é visível ao usuário em tempo de execução do programa.
Propriedades correspondentes à CommonDialog Abrir:
Filter: define quais os tipos de arquivos deverão ser exibidos.
Por exemplo:
commondialog1.filter = “Bitmaps (*.BMP) | *.BMP |Metafiles (*.WMF) | *.WMF”
Filename: define o nome do arquivo selecionado.
Centro Universitário Salesiano de Campinas
28
Arquivo Texto
ABERTURA DE ARQUIVOS
Abrir um arquivo significa “alocar um buffer do computador para eventos de entrada e saída”. O Visual
Basic disponibiliza o comando Open, cuja sintaxe é mostrada abaixo.
Open Nome_do_Arquivo [For Modo][Access acesso][Lock] As [#] nº_do_arquivo [Len=comp.],
onde:
• Nome_do_arquivo: String que contém o nome do arquivo e caminhos eventuais. Se o caminho não
for especificado, o arquivo será aberto na pasta atual;
• Modo: palavra-chave que especifica o modo de acessão arquivo, conforme a tabela 9;
• Acesso: palavra-chave opcional que especifica as operações permitidas no arquivo aberto, conforme
a tabela 10;
• Lock: palavra-chave opcional que controla o acesso a um arquivo por outros processos, conforme a
tabela 11;
• nº_do_arquivo: número do próximo arquivo livre (1 a 255)
• comp.: tamanho do registro, em bytes, para arquivos aleatórios, ou o tamanho do buffer para
arquivos seqüenciais.
Modos de abertura de arquivo
Modo
APPEND
Acesso ao arquivo
Acesso seqüencial; se o arquivo já existe, novos dados serão adicionados no final dos dados já
existentes. Se o arquivo não existe, ele é criado.
BINARY Acesso binário para leitura e escrita. Se o arquivo não existe, ele é criado.
INPUT
Acesso seqüencial para leitura. Se o arquivo não existe, ocorre um erro.
OUTPUT Acesso seqüencial para gravação. Se o arquivo já existe, ele é eliminado e um outro é criado. Se o
arquivo não existe, ele é criado.
RANDOM Acesso aleatório para leitura e gravação. Se o arquivo não existe, ele é criado. Esse é o padrão se o
argumento Modo for omitido.
Por exemplo, para abrir um arquivo seqüencial para leitura, chamado VBJUNK.TXT, na pasta atual,
escreveríamos:
Open VBJUNK.TXT For Input As #1
Para fechar um arquivo devemos usar o comando Close: Close [#] nº_do_arquivo. O número do arquivo
pode ser determinado com a função FreeFile, que retorna o número do próximo arquivo livre:
nº_do_arquivo=FreeFile.
LEITURA DE ARQUIVOS SEQÜENCIAIS
O comando Open por si mesmo somente abre o arquivo, sem ler o conteúdo. Para ler arquivos
seqüenciais devemos usar o comando Input$, cuja sintaxe é mostrada a seguir.
Input$ (tamanho,[#]nº_do_arquivo),
onde:
tamanho: tamanho, em bytes, do arquivo a ser lido;
nº_do_arquivo: número usado no comando Open.
Para determinar o tamanho de um arquivo podemos usar a função LOF, que significa Length of File, ou
Tamanho do Arquivo.
Exemplo: Input$ (LOF(1), #1)
line input lê uma linha do arquivo
input #número,var1, var2 lê um conjunto de campos por vez
GRAVAÇÃO DE ARQUIVOS SEQÜENCIAIS
Programação de Computadores IV – Prof. Gale
Para gravar arquivos sequenciais estes devem, antes, ter sido abertos para saída (output). O comando mais
comum para gravação é Print #.
Print # nº_do_arquivo, Lista,
onde o parâmetro Lista contém os dados a serem gravados.
Exemplo: Print # 1, txtTexto.text.
Revisão - Comandos básicos:
Open <nome arq> for <modo> as #número
<modo> input, output, append
line input lê uma linha do arquivo
input #número,var1, var2 lê um conjunto de campos por vez
eof verifica fim de arquivo
close fecha o arquivo
do until eof(1)
..
..
loop
EXEMPLO:
Centro Universitário Salesiano de Campinas
30
Programação de Computadores IV – Prof. Gale
Para ler um arquivo:
cd.ShowOpen
On Error GoTo fim
monta = cd.FileName
enter = Chr$(13) + Chr$(10)
Open monta For Input As #1
Do Until EOF(1)
Line Input #1, linha$
tudo$ = tudo$ + linha$ + enter
Loop
Text1.Text = tudo$
Text2.Text = cd.FileName
Text3.Text = FileLen(cd.FileName)
Text4.Text = FileDateTime(cd.FileName)
Close #1
fim:
Para gravar um arquivo:
cd.ShowSave
On Error GoTo fim
monta = cd.FileName
Open monta For Output As #1
Print #1, Text1.Text
Close #1
fim:
Para imprimir um arquivo:
cd.ShowOpen
On Error GoTo fim
cd.ShowPrinter
monta = cd.FileName
enter = Chr$(13) + Chr$(10)
Open monta For Input As #1
Do Until EOF(1)
Line Input #1, linha$
Printer.Print linha$
Loop
Printer.EndDoc
Close #1
fim:
Centro Universitário Salesiano de Campinas
31
Programação de Computadores IV – Prof. Gale
FAÇA VOCÊ!!!!
Centro Universitário Salesiano de Campinas
32
Programação de Computadores IV – Prof. Gale
8ª AULA
VISUAL BASIC – PROF. GALE
Dinamic Library Link (DLL)
Inclua no seu projeto um módulo:
Project Add Module Existing
Procure “port.dll”
Este arquivo contém:
Public Declare Sub OutPort Lib "port" (ByVal porta As Integer, ByVal Valor As Byte)
Public Declare Function InPort Lib "port" (ByVal porta As Integer) As Byte
Enviando e Recebendo dados
Enviar OutPort &H378, valor
Ler valor = InPort(&H378)
Exemplo:
Progress Bar Microsoft Windows Common Controls 5.0
Propriedades (max, min, value)
Centro Universitário Salesiano de Campinas
33
Programação de Computadores IV – Prof. Gale
Faça Você!!!
Monte
todas
as
seqüências;
deixe-as
funcionando. Os “options”
servem apenas para acionar os
leds com a seqüência desejada.
Todas as seqüências na tela
ficam
funcionando
sucessivamente até que seja
pressionado o botão terminar.
Além de criar o arquivo executável, para que seja possível rodar o programa em
outro computador que não possua VB instalado, é necessário criar o "Setup" de
instalação. Isso nada mais é que um pacote de arquivos que o VB cria (com
base no arquivo executável criado anteriormente) e que inclui todos os arquivos
adicionais/DLL's, necessários à execução do programa.
Para criar esse "Setup", acesse:
=> Iniciar
Programas
Microsoft Visual Basic 6.0
Microsoft Visual Basic 6.0 Tools
Package & Deployment Wizard
Esse aplicativo do VB irá pedir que você aponte qual é o arquivo de projeto (*.VBP) e seguirá adiante
criando o executável, mesmo que já exista. Daí em diante, basta finalizar a execução do aplicativo.
Centro Universitário Salesiano de Campinas
34
Programação de Computadores IV – Prof. Gale
9ª AULA
VISUAL BASIC – PROF. GALE
Comunicação Serial – MSCOMM
Termos e Definições
CommPort seta e retorna o número da porta de comunicação
Settings configura velocidade de transmissão(baud rate), paridade,
bits de dados e Stop bit
PortOpen configura e retorna o estado atual da porta de
comunicação (abre e fecha a porta)
Input recebe caracteres do buffer
Output envia uma string de caracteres para um buffer de
transmissão
Inbuffercount retorna o número de caracteres que estão esperando
para serem enviados.
InputLen configura o número de caracteres que o buffer pode ler.
Exemplo Simples
Private Sub Form_Load ()
Dim Instring As String
' Utilizando a COM1.
MSComm1.CommPort = 1
' 9600 baud, no parity, 8 data, and 1 stop bit.
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 0
' Open the port.
MSComm1.PortOpen = True
' Envia um aviso para o modem
MSComm1.Output = "ATV1Q0" & Chr$(13)
Do
DoEvents
Buffer$ = Buffer$ & MSComm1.Input
Loop Until InStr(Buffer$, "OK" & vbCRLF)
' Fecha a porta serial.
MSComm1.PortOpen = False
End Sub
MSCOMM Microsoft Comm Control 6.0
Centro Universitário Salesiano de Campinas
35
Programação de Computadores IV – Prof. Gale
Centro Universitário Salesiano de Campinas
36
Programação de Computadores IV – Prof. Gale
10ª AULA
VISUAL BASIC – PROF. GALE
Banco de Dados
O Visual Basic disponibiliza meios de se construir aplicativos de bancos de dados de maneira rápida.
De modo geral, bancos de dados são conjuntos de tabelas, índices e relações potencializados por
algum driver de banco de dados. O VB possibilita a conexão com os seguintes drivers:
•
•
•
•
•
Microsoft Access;
dBase III, IV e 5.0;
FoxPro 2.0, 2.5 e 3.0;
Paradox 3.x, 4.x e 5.x;
ODBC, entre outros.
Os bancos de dados do VB são potencializados pelo Jet Engine, que é o mesmo driver do
Access.
Alguns termos merecem definição:
• DBEngine: é um objeto que representa o Jet Engine da MicroSoft e contém todos os outros objetos
de bancos de dados.
• Worspace: é um objeto que define uma seção de trabalho do usuário. Quando um banco de dados
é iniciado, um Workspace default é criado, com senha “” e nome “ Admin”.
• DataBase: é o objeto banco de dados por excelência;
• TableDef: representa a estrutura de uma tabela, que pode conter vários campos (Fields) e vários
índices (Indexes);
• Field: representa um campo dentro de uma tabela.
• Index: representa um índice dentro de uma tabela.
• QueryDef: representa a estrutura de uma consulta (query) em uma tabela.
• RecordSet: representa uma tabela ou parte dela. O Recorset pode ser do tipo Table (Tabela),
Dynaset ou SnapShot (Instantâneo). Dynaset é uma estrutura mais versátil do que uma tabela,
podendo ser gerado por uma consulta ou uma declaração SQL. Snapshot é o tipo mais restritivo de
tabelas e seus dados não pode ser alterados pelo usuário.
O CONTROLE DE DADOS
A maneira mais fácil de manipular bancos de dados é por meio do Data Control, ou Controle de
Dados. Este controle, disponível desde a versão 2.0, abre um banco de dados, conecta-se a uma
tabela especificada e mostra o conteúdo dos campos em “controles ligados”.
Para usar o Controle de Dados, proceda da seguinte maneira:
a) Desenhe o Controle de Dados no formulário;
b) Na janela de propriedades, especifique a propriedade DataBaseName. Esta propriedade deve
conter um banco de dados já existente, com todo o caminho;
c) Especifique a propriedade RecordSource, que deve corresponder a uma tabela válida do banco de
dados;
d) Desenhe uma caixa de texto para cada campo da tabela;
e) Defina a propriedade DataSource de cada caixa de texto como sendo Data1 (ou o nome do
Controle de Dados).Da mesma forma, especifique a propriedade DataField de cada caixa de texto
como uma campo distinto da tabela.
Resumindo:
Centro Universitário Salesiano de Campinas
37
Programação de Computadores IV – Prof. Gale
Banco de Dados
Tabelas
Linhas (registros)
Colunas (campos)
O Controle DATA
Databasename: (Banco de Dados)
Recordsource: (tabela)
Recordsets (conjunto de registros): são objetos que representam coleções de registros de uma ou mais tabelas.
Recordsets são equivalentes as variáveis da programação tradicional.
Nas textbox devemos observar as seguintes propriedades:
•
•
Datasource (enxerga o Banco)
Datafield (nome do campo)
O Controle Data:
MoveFirst
MoveLast
MovePrevious
MoveNext
Ex: Data1.Recordset.movefirst
If Data1.Recordset.EOF then
Data1.Recordset.moveLast
Endif
Método Find:
FindFirst
FindLast
FindNext
FindPrevious
Ex:
Data1.Recorset.FindFirst “
“
Crie uma tabela através do Add-Ins / Visual Data Manager, contendo:
Número / Nome / Apelido / Cidade / Estado / Data_Nasc / Profissão / Estado Civil
UMA AGENDA DE ENDEREÇOS
O VB pode ser usado para criar um formulário simples do tipo agenda. Você precisará de um
banco de dados com os seguintes campos:
Centro Universitário Salesiano de Campinas
38
Programação de Computadores IV – Prof. Gale
•
•
•
•
•
•
•
•
Nome;
Endereço;
Telefone;
FAX;
E-mail;
Cidade;
Estado;
CEP.
Este banco de dados pode ser criado em Access ou por meio do Data Manager. Denomine
este banco de dados de AGENDA.MDB. Será necessário criar apenas uma tabela dentro deste banco
de dados, a qual chamaremos de NOMES.
Formulário frmAgenda
conectar o Controle de Dados ao banco de dados e as caixas de texto ao Controle de Dados:
a) Na janela de propriedades de Data1, especifique a propriedade DataBaseName para
AGENDA.MDB, incluindo todo o caminho;
b) Especifique a propriedade RecordSource de Data1, que deve corresponder à tabela Nomes;
c) Defina a propriedade DataSource de cada caixa de texto como sendo Data1. Da mesma forma,
especifique a propriedade DataField de cada caixa de texto como o campo correspondente
Código
3
5
6
7
9
10
11
13
14
16
17
18
20
Descrição
Return without GoSub
Invalid procedure call
Overflow
Out of memory
Subscript out of range
This array is fixed or temporarily locked
Division by zero
Type mismatch
Out of string space
Expression Too Complex
Can't perform requested operation
User interrupt occurred
Resume without error
Centro Universitário Salesiano de Campinas
Descrição em português
Return sem GoSub
Chamada inválida de procedimento
Sobrecarga
Falta de memória
Subescrito fora do intervalo
Este array é fixo ou temporariamente travado
Divisão por zero
Tipo incorreto
Falta de espaço no string
Expressão muito complexa
Impossível realizar a operação requisitada
Interrupção do usuário
Continuar sem erro
39
Programação de Computadores IV – Prof. Gale
Código
28
35
47
48
49
51
52
53
54
55
57
58
59
61
62
63
67
68
70
71
74
75
76
91
92
93
94
444
452
453
457
460
461
480
481
482
483
484
485
520
521
Descrição
Out of stack space
Sub, Function, or Property not defined
Too many DLL application clients
Error in loading DLL
Bad DLL calling convention
Internal error
Bad file name or number
File not found
Bad file mode
File already open
Device I/O error
File already exists
Bad record length
Disk full
Input past end of file
Bad record number
Too many files
Device unavailable
Permission denied
Disk not ready
Can't rename with different drive
Path/File access error
Path not found
Object variable or With block variable not
set
For loop not initialized
Invalid pattern string
Invalid use of Null
Method not applicable in this context
Invalid ordinal
Specified DLL function not found
Duplicate Key
Invalid Clipboard format
Specified format doesn't match format of
data
Can't create AutoRedraw image
Invalid picture
Printer error
Printer driver does not support specified
property
Problem getting printer information from
the system. Make sure the printer is set
up correctly
Invalid picture type
Can't empty Clipboard
Can't open Clipboard
Centro Universitário Salesiano de Campinas
Descrição em português
Falta de espaço na pilha
Sub, Função ou propriedade não definida
Demasiados aplicativos DLL clientes
Erro no carregamento de DLL
Má convenção de chamada de DLL
Erro interno
Número ou nome de arquivo incorreto
Arquivo não encontrado
Modo de arquivo incorreto
Arquivo jã aberto
Erro de dispositivo de entrada/saída
Arquivo já existe
Tamanho de registro incorreto
Disco cheio
Entrada depois do fim do arquivo
Número de registro incorreto
Arquivos em damasia
Dispositivo inacessível
Permissão nagada
Disco não pronto
Impossível renomear com drive diferente
Erro de acesso a caminho ou arquivo
Caminho não encontrado
Variável objeto ou bloco With não definida
Laço For não inicializado
Padrão de string inválido
Uso inválido de Null
Métod não aplicável neste contexto
Ordinal inválido
Função DLL especificada não encontrada
Chave duplicada
Formato do Clipboard inválido
Formato especificado não casa com formato do
dado
Impossível criar imagem AutoRedraw
Figura inválida
Erro de impressão
Driver de impressão não suporta a
proprieadade especificada
Problemas em conseguir informação da
impressora do sistema. Certifique-se de que a
impressora está configurada corretamente.
Tipo de figura inválida
Impossível esvaziar o Clipboard
Impossível abrir o Clipboard
40
Programação de Computadores IV – Prof. Gale
11ª AULA
VISUAL BASIC – PROF. GALE
Componente Winsock
O controle Winsock permite a comunicação de uma ou mais estações através dos protocolos TCP/IP ou UDP.
Protocolo TCP/IP -> é o protocolo usado na Internet. Como podemos notar, andam sempre em dupla o TCP (Transmission
Control Protocol) e o IP (Internet Protocol). O protocolo TCP realiza as seguintes tarefas: Divisão da informação em
pequenos pacotes, enviar/receber informações pela rede, verificar/reagrupar informações pela rede.
Número IP -> O número IP é na verdade formado por um conjunto de quatro números e permite a identificação de cada
computador conectado na Internet.
UDP -> User Datagram Protocol. Utilizada um sistema de transmissão sem a verificação se existe uma conexão. É um
protocolo lento e que pode perder pacotes de informação.
Porta -> A porta é um canal de comunicação e permite que existam várias conexões em uma mesma máquina.
Propriedades e métodos do controle Winsock
Principais Propriedades
Propriedade
Localport
Remoteport
Protocol
RemoteHostIP
LocalIP
LocalHostName
BytesReceived
State
Descrição
É a porta que seu computador usará. Máx 4 dígitos (9999).
É a porta da qual sua máquina recebe dados.
Protocolo a ser usado na transmissão (TCP ou UDP).
Retorna o endereço IP da uma máquina remota.
Retorna o endereço IP da máquina local.
Retorna o nome da máquina local.
Determina a quantidade de dados recebidos (bytes).
Define o estado atual do controle. Definições abaixo:
Definições da propriedade State:
Constante
sckClose
sckOpen
sckListening
sckConnectionPending
sckResolvingHost
sckHostResolved
sckConnecting
sckConnected
sckClosing
sckError
Valor
0
1
2
3
4
5
6
7
8
9
Descrição
Default Closed
Open
Listening
Connection Pending
Resolving Host
Host resolved
Connecting
Connected
Peer is closing the connection.
Error
Principais métodos e eventos do controle winsock:
Método/Evento
Accept
Connect
Close
DataArrival
GetData
Listen
SendData
SendProgress
SendComplete
ConnectionRequest
Error
Descrição
Aceita uma conexão TCP.
Solicita uma conexão TCP. Ocorre quando há uma conexão com outro computador.
Fecha uma conexão TCP.
Onde você coloca o código fonte que você deseja executar quando a informação chegar pela portal
local.
Efetua a recepção de dados
Espera por uma conexão TCP.
Envia dados.
Indica que você quer controlar a conexão enquanto ela estiver enviando os dados.
Indica o que você quer que aconteça depois que a transferência foi terminada. Ex. Exibir uma
mensagem.
Solicita uma conexão.
Ocorreu um erro.
Centro Universitário Salesiano de Campinas
41
Programação de Computadores IV – Prof. Gale
Usando o Controle Winsock
Ao rodar sua aplicação, se ela estiver no modo servidor esperando alguma solicitação você
deverá definir a propriedade LocaPort e invocar o método Listen para deixar o computador
disponível.
winsock1.LocalPort = 1001
winsock1.Listen
Se estiver no modo cliente você vai precisar definir as propriedades RemoteHost ou
RemoteHostIP e RemotePort . Depois basta usar o método Connect para solicitar uma conexão.
Winsock1.RemoteHost = "geocities.com/"
Winsock1.RemotePort = 80
Winsock1.Connect
Quando você se conecta usando Connect é executado o evento ConnectionRequest do
controle Winsock o qual possui o parâmetro requestID. Este parâmetro serve para identificar a
conexão de forma única.
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Accept requestID
End Sub
Após a conexão ter sido estabelecida podemos enviar e receber dados, para enviar dados
usamos o método SendData :
Winsock1.SendData "dados a serem enviados"
Para receber os dados devemos utilizar o método GetData tendo como parâmetro o nome da
variável que irá receber os dados. Quando os dados sao recebidos eles são colocados no buffer de
entrada do controle Winsock e o evento DataArrival é disparado, assim devemos usar o método
GetData neste evento:
Private Winsock1_DataArrival()
Dim variavel
winsock1.GetData variavel
...
...
End Sub
Centro Universitário Salesiano de Campinas
42
Programação de Computadores IV – Prof. Gale
SQL
O nome SQL significa “Structure Query Language” – Linguagem estruturada de pesquisa. É uma
linguagem estruturada para manipulação de dados. É padronizada para os bancos de dados relacionais, mas
cada gerenciador pode assumir uma extensão própria dessa linguagem.
Vantagens e Desvantagens da linguagem SQL:
Independência de fabricante: é oferecido a todos os sistemas gerenciadores de banco de dados
Portabilidade entre computadores: pode ser usada em um computador pessoal, passando a uma
estação de trabalho, até um computador de grande porte.
• Inglês estruturado de alto nível: é formada por um conjunto bem simples de sentenças em inglês
• Consulta interativa: A SQL provê um acesso rápido aos dados, fornecendo respostas ao usuário, a
questões complexas
• Definição dinâmica dos dados: pode-se alterar, expandir ou incluir, as estruturas dos dados
armazenados
Desvantagem:
•
•
•
Como é feita uma padronização, ocorre assim uma inibição da criatividade, pois quem desenvolve
aplicações fica preso a soluções padronizadas.
Criação e Distribuição de Tabelas:
CREATE TABLE
Segue a seguinte forma:
Create table <tabela>
(<descrição das colunas>);
(<descrição das chaves>);
onde:
<tabela>: é o nome da nova tabela a ser criada
<descrição das colunas> : é uma lista de colunas (campos) e seus respectivos tipos de dados.
(smallint, char, money, varchar, integer, decimal, float, real, date, time, logical)
<descrição das chaves> : é a lista de colunas que são tratadas como chave estrangeira
Alguns campos podem receber o valor NULL (nulo) e o campo definido como chave primária, além de
não poder receber NULL, deve ser um campo UNIQUE (sem repetiçòes – chave primária).
Exemplo: Figura 1
Create Table cliente
(código_cliente smallint not nul unique,
nome_cliente char(20),
endereço char(30),
cidade char(15),
CEP char(8),
UF char(2),
CGC char(20),
IE char(20) );
Centro Universitário Salesiano de Campinas
43
Programação de Computadores IV – Prof. Gale
Create Table Pedido
(num_pedido int not null unique,
prazo_entrega smallint not null,
código_cliente smallint not null,
código_vendedor smallint not null,
FOREIGN KEY (código_cliente)
REFERENCES CLIENTE) ;
Para eliminar uma tabela criada é utilizado o comando DROP:
Drop table <tabela>;
Extraindo Dados de uma Tabela: Comando SELECT:
Forma:
Select <nome(s) da(s) coluna(s)> from <tabela>;
Exemplo: listar todos os produtos com respectivas descrições, unidades e valores unitários?
(Diagrama 1)
select descrição, unidade, valor_unitário from produto;
(Diagrama 2)
•
Selecionando todas as colunas da tabela:
Select *
From <tabela>;
•
Selecionando somente alguns registros da tabela:
Select <nome(s) da(s) coluna(s)>
From <tabela>
Where <restrições>;
Onde: where <nome da coluna> <operador> <valor>
OBS1: quando a coluna é do tipo caractere, o <valor> deve estar entre apóstrofes
OBS2: Em SQL existe diferenciação entre maiúscula e minúscula
Exemplo: Listar o num_pedido, o código_produto e a quantidade dos itens do pedido com a quantidade igual a
Centro Universitário Salesiano de Campinas
44
Programação de Computadores IV – Prof. Gale
35.
Select num_pedido, código_produto, quantidade
From item_pedido
Where quantidade = 35
Exemplo2: Quais os clientes moram em Niterói?
Operadores Lógicos:
•
•
•
And
Or
Not
Exemplo: listar os produtos que tenham unidade igual a ‘M’ e valor unitário igual a R$ 1,05
Select descricão_produto
From produto
Where unidade = ‘M’ and val_unit = 1.05;
Exemplo: Liste os clientes e seus respectivos endereços, que moram em ‘São Paulo’ou estejam na faixa de CEP
entre ‘30077000’ e ‘30079000’.
Select nome_cliente, endereço
From cliente
Where (CEP >= ‘30077000’ AND CEP <= ‘30079000’)
OR cidade = ‘São Paulo’
Obs: A utilização de parênteses é fundamental para a construção correta da frase, pois sem eles as consultas
podem ser analisadas de forma errada, devido a prioridade do operador AND ser maior que a prioridade do
operador OR.
Exemplo: Mostrar todos os pedidos que não tenham prazo de entrega igual a 15 dias
Select num_pedido
From pedido
Where NOT (prazo_entrega = 15);
•
Operadores Between e NOT Between
-
where <nome da coluna> BETWEEN <valor1> AND <valor2>
where <nome da coluna> NOT BETWEEN <valor1> AND <valor2>
Este operador propicia a pesquisa por uma determinada coluna e que esteja dentro de uma faixa de valores,
sem a necessidade dos operadores >=, <= e AND. Tanto o valor1 quanto o valor2 tem que ser do mesmo tipo
de dado da coluna.
Exemplo: Listar o código e a descrição dos produtos que tenham o valor unitário na faixa de R$ 0,32 até R$
2,00.
Centro Universitário Salesiano de Campinas
45
Programação de Computadores IV – Prof. Gale
Select codigo_produto, descricão
From produto
Where valor between 0.32 and 2.00;
•
Operadores LIKE e NOT LIKE
-
Where <nome da coluna> LIKE <valor>;
Os operadores LIKE e NOT LIKE só trabalham sobre colunas que sejam do tipo CHAR. Eles têm
praticamente o mesmo funcionamento que os operadores = e <>, porém o poder desses operadores está na
utilização dos símbolos (%) e ( _ ) que podem fazer o papel de coringa:
% - substitui uma palavra
_ - substitui um caractere
Ex: ‘Lápis %’ pode enxergar os seguintes registros:
Lápis Preto
Lápis Cera
Lápis Borracha
Exemplo: Listar os produtos que tenham a sua unidade começando por K:
Select codigo, descrição
From produto
Where unidade LIKE ‘K_’;
Exemplo2: Listar os vendedores que não começam por ‘Jo’
Select codigo, nome_vendedor
From vendedor
Where nome_vendedor NOT LIKE ‘Jo%’;
•
Operadores IN e NOT IN
-
Where <nome da coluna> IN <valores>;
Where <nome da coluna> NOT IN <valores>;
Estes operadores pesquisam registros que estão ou não contidos no conjunto de <valores> fornecido.
Exemplo: Listar os vendedores que são da faixa de comissão A e B
Select nome_vendedor
From vendedor
Where faixa_comissão IN (‘A’, ‘B’);
•
Operadores IS NULL e IS NOT NULL
- Where <nome da coluna> IS NULL;
Centro Universitário Salesiano de Campinas
46
Programação de Computadores IV – Prof. Gale
-
Where <nome da coluna> IS NOT NULL;
A utilização do valor nulo (NULL) é muito problemática, pois cada implementação da linguagem pode adotar
qualquer representação para o valor nulo.
Exemplo: mostrar os clientes que não tenham inscrição estadual
Select *
From cliente
Where IE IS NULL;
•
Ordenando os dados Selecionados
Quando se realiza uma seleção, os dados recuperados não estão ordenados.
A SQL prevê a cláusula ORDER BY para realizar uma ordenação dos dados selecionados.
Forma:
Select < nome da (s) coluna(s)>
From <tabela>
<where < condição(ões)> >
order by <nome da(s) coluna(s)>
ASC
ou
order by <número da(s) coluna(s)>
DESC
Obs: o default é ASC
Exemplo: Mostrar em ordem alfabética a lista de vendedores e seus respectivos salários fixos
Select nome_vendedor, salário_fixo
From vendedor
Order by nome_vendedor;
Exemplo2: listar os nomes, cidades e estados de todos os clientes, ordenados por estado e cidade de forma
descendente.
Select nome_cliente, cidade, UF
From cliente
Order by UF DESC, cidade DESC;
Exemplo3: mostrar a descrição e o valor unitário de todos os produtos que tenham a unidade ‘KG’, em ordem de
valor unitário ascendente.
Select descrição, val_unit
From produto
Where unidade = ‘KG’
Centro Universitário Salesiano de Campinas
47
Programação de Computadores IV – Prof. Gale
Order by val_unit ASC;
•
Realizando Cálculos com informação Selecionada
Com a SQL pode-se criar um campo que não pertença à tabela original, e que seja fruto do cálculo sobre
alguns campos da tabela.
Exemplo: Mostrar o novo salário fixo dos vendedores, de faixa de comissão ‘C’, calculado com base no reajuste
de 75% acrescido de R$ 120,00 de bonificação. Ordenar pelo nome do vendedor.
Select nome_vendedor,
Novo_salário = (salário_fixo * 1.75) + 120
From vendedor
Where faixa_comissão = ‘C’
Order by nome_vendedor;
•
Utilizando funções sobre conjuntos
•
Buscando máximos e mínimos (MAX, MIN)
Exemplo: Mostrar o menor e o maior salário de vendedor.
Select MIN(salário_fixo), MAX (salário_fixo)
From vendedor;
•
Totalizando colunas (SUM)
Exemplo: Mostrar a quantidade total pedida para o produto ‘VINHO’ de código ‘78’
Select SUM(quantidade),
From pedido
Where código = ‘78’;
•
Calculando Médias: (AVG)
Exemplo: Qual a média dos salários fixos dos vendedores?
Select AVG(salário_fixo),
From vendedor;
Centro Universitário Salesiano de Campinas
48
Programação de Computadores IV – Prof. Gale
•
Contando os Registros (COUNT)
Exemplo: Quantos vendedores ganham acima de R$ 2.500,00 de salário fixo?
Select COUNT (*),
From vendedor
Where salario_fixo > 2500;
•
Utilizando a cláusula DISTINCT
Normalmente, vários registros dentro de uma tabela podem conter os mesmos valores, com exceção da
chave primária. Com isso muitas consultas podem trazer informações erradas.
Exemplo: quais as unidades de produtos, diferentes, na tabela produto?
Select DISTINCT unidade,
From produto;
•
Agrupando informações selecionadas (GROUP BY)
Utilizando a cláusula GROUP BY, é possível organizar a seleção de dados em grupos determinados.
•
Forma:
Select <nome da(s) coluna(s)>
From <tabela>
<where condição(ões)>
group by <nome da(s) coluna(s)>;
order by <nome da(s) coluna(s)>;
Exemplo: Listar o número de produtos que cada pedido contém.
Select num_pedido, total_produtos = COUNT (*)
From item_pedido
Group by num_pedido
Centro Universitário Salesiano de Campinas
49
Download