vb.net manual

Upload: pedro-klein

Post on 06-Jul-2015

2.109 views

Category:

Documents


2 download

TRANSCRIPT

Dando os primeiros passos - Escrevendo Cdigo VB.NET -I

Desde o lanamento do Visual Studio .NET eu procurei dar uma viso geral do ambiente de desenvolvimento do VB.NET e dos novos conceitos que a nova plataforma trouxe. Para se atualizar veja os artigos : y Visual Basic .NET - aquecendo as turbinas y Minha primeira aplicao no Visual Basic .NET y VB.NET - Windows Forms y Minha primeira aplicao Windows no Visual Basic .NET y Meu primeiro acesso a dados com o VB.NET Acho que voc j percebeu que o V B.NET trs um conjunto de ferramentas , mtodos , propriedades e conceitos antes no existentes nas verses anteriores , e, isto com certeza ir facilitar muito o trabalho do desenvolvedor que usa o Visual Basic como ferramenta. Neste artigo eu vou fazer u abordagem ma bem bsica sobre os principais conceitos necessrios para escrever cdigo VB.NET : variveis , constantes , operadores , clculos , rotinas , funes , fundamentos para escrever cdigo robusto , etc... Se voc j domina estes assuntos pode p arar a leitura aqui mesmo , o objetivo e fornecer uma base slida para quem esta comeando a programar usando o Visual Basic e est com medo de enfrentar a nova plataforma .NET , para quem comeou ,parou e quer voltar , para quem j comeou ...

VariveisO conceito de varivel fundamental em qualquer linguagem de programao , portanto , no poderia ser diferente com o VB.NET. O que uma varivel ? ( bem ai vareia !!! ) . Podemos dizer que varivel um lugar que usamos para armazenar uma informao que pode sofrer alterao durante a execuo de um programa. As variveis so usadas para guardar valores que sero usados durante o decorrer do programa , para guardar informaes fornecidas pelo usurio e que ser exibida mais tarde. Cada varivel que usamos identificada por um nome e por um tipo. Voc pode guardar informao de diversos tipos em uma varivel : nmeros pequenos , nmeros mdios , nmeros grandes , letras , palavras , frases , pginas de texto , etc.. Ento dizemos que .; uma varivel tem um nome que a identifica e um tipo de dado que esta armazenando. Quando voc guarda uma informao em uma varivel esta usando a memria do computador para isto , e , quanto maior a informao que voc guardar mais memria voc vai gasar dependendo do tipo de varivel t que decidir usar. Se voc precisar realizar clculos que envolvam somente valores inteiros dever procurar usar uma varivel do tipo Integer , voc pode usar uma varivel do tipo Long , Single e Doublemas com isto ir gastar mais memria. Podemos criar trs tipos bsicos de variveis no VB.NET : 1. Variveis simples - usadas para guardar valores simples como nmeros e strings(alfanumricas) 2. Variveis complexas - usadas para guardar valores mais complexos , vetores , e tpos definidos i pelo usurio 3. Variveis objeto - usadas para guardar variveis objeto Variveis Simples

m

Int

Os inteiros s o valores num ricos que no possuem casas decimais e so muito usadas em qualquer programa VB.NET . No gastam muita mem ria do computador e tornam o processamento e os c l culos mais rpidos. Por isto se voc pode escolher um tipo de varivel escolha Inteiro (se isto se adequar ao seu caso claro... Tipo de Dado Byte Tamanho em Bytes 1 0 at 255 ). Na tabela abaixo as variveis do tipo Inteiro: Intervalo Comentrio O tipo de menor tamanho. No suporta valores negativos. Usado para contadores e faixas de valores de pequeno intervalo. O tipo mais rpido dos inteiros. Indicada tratar valores no intervalo.

Short Integer Long

2 4 8

-32768 at 32767 -2.147.483.648 at 2.147.483.647 -9,223,372,036,854,775,808 at 9,223,372,036,854,775,807.

Nmeros com casas decimais Tipo de Dado Single Tamanho em Bytes 4 1.401298x10^-45 at 3.402823x10^38 (positivos) -1.79769313486231570E+308 at 4.94065645841246544E -324 (negativos) Double 8 4.94065645841246544E -324 at 1.79769313486231570E+308 (positivos) Strin e Caracteres

Intervalo -3.402823x 10^38 ate 1.401298 x 10^-45 (negativos) e

Para tratar caracteres , palavras , texto usamos as variveis do tipo : Tipo de Dado Char String Tamanho em Bytes Intervalo 0 through 65535 (sem sinal). Comentrio Usada para tratar um caractere. Pode tratar at 1,7 milhoes de pginas de texto

2

Depende da at 2 bilhes de caracteres plataforma

Note que cada caractere precisa de 2 bytes para ser representado , pois o sistema usado aqui o UNICODE. No sistema ASCII cada caractere representado por um byte(c m s m s s s 256 c c s) ;Para acomodar caracteres especiais usados em outras lnguas (

s Comentrio Trata valores com dupla preciso at 15 casas decimais ; usado para clculos com nmeros muito grandes que exijam muita preciso.

As

3 873 6 35 4

3

ssm s m sm s c m s s: 1. Inteiros 2. Decim is 3. Strings e c racteres 4. Outras ( ata , Boolean) m s c s m

s; s m m

c s

m s m s

m s s

s

s ss

s

)

1

8 985 A9A

(

A @8 6A 9A5@8 89 689

!

'

&%$ " # 2

0

Para clculos que exijam certa preciso.

Russo , Grego , Japons) e incluir tambm outros snbolos o sistema UNICODE usa dois bytes para representar cada caractere. O VB.NET usa o UNICODE para todos os caracteres. Outros tipos de variveis Tipo de Dado Boolean Date Tamanho em Bytes Intervalo True ou False 01/01/100 at 31/12/9999 Comentrio Usada tratar valores que podem assumir Falso ou verdadeiro. Usado no tratamento de datas.

28

Nota: Voc pode armazenar datas em outro tipo de varivel como String ou Integer , mas para evitar dores de cabea procure usar o tipo Date.

Declarando variveisAgora que j falamos sobre variveis e seus tipos vamos ver como usar variveis em um programa VB.NET. A maneira mais simples de usar uma varivel usar a palavra chave Dim(dim sion) seguida pelo nome da varivel , a palavra chave AS e o tipo da varivel. Exemplo: Dim valor As Integer Aqui estamos criando uma nova varivel chamada valor que ir ocupar 4 bytes e que poder tratar valores numricos na entre : -2.147.483.648 at 2.147.483.647

O VB.NET trouxe como novidade a possibilidade de atribuir o valor para a varivel durante a sua criao usando a linha da declarao. Assim : Dim valor As Integer = 100 ou nome As String = "Macoratti" Dim dtNascimento As Date = #15/03/1978# ou Dim

Vetores ( Arrays)Os vetores so usados para armazenar e referenciar uma srie de variveis pelo mesmo nome (uma coleo de valores relacionados). Assim podemos usar um vetor para armazenar todos os nomes dos alunos de uma escola , todas as datas de aniversrio dos seus amigos, todos os valores da sua conta corrente , etc.... Cada item armazenado no vetor identificado por um ndice. A dimenso de um array o nmero que identifica quando ndices iremos usar para identificar uma item do array .Um array pode ter de uma at 32 dimenses. Cada dimenso de um array possui um comprimento diferente de zero. Os elementos de um array so contguos e iniciam no ndice igual a zero at o valor de maior valor. Quanto maior a dimenso do array voc usar mais memria vai precisar ser alocada. Exemplos: Vetores de uma dimenso Dim ValoresDiarios(365) as Decimal - aloca espao para itens de (0) at (365) Dim Meses(11) As String - aloca espao para elementos com indice de 0 a 11 teremos 12 elementos Dim Matriz(49) AS integer - aloca espao para elementos com ndice de 0 a 49 (50 elementos)

Vetores de duas dimenses Dim retangulo(4,9) As Single 0a9

- aloca espao para elementos de 0 a 4 e para elementos de

D

Para maiores detalhes sobre este tpico leia o artigo : mudou ?

B.NET - Declarao de variveis o que

CB

Acima declaramos um array de duas dimenses que possuir 5 linhas ( 0 a 4) e 10 colunas ( 0 a 9) perfazendo um total de 50 elementos. Podemos tambm definir array usando a seguinte sintaxe: Dim semana() As String = {"Segunda" , "Terca", "Quarta" , "Quinta" , "Sexta" , "Sabado" , "Domingo"} Neste caso j definimos quais os elementos do vetor semana. Assim para obter o elemento segunda fazemos : dia = semana(0) Alm disto podemos atribuir diretamente a cada elemento o seu valor :

Dim Datas(3) As Date Datas(0)="12/05/2002" Datas(1)="25/08/1965" Datas(2)="30/03/1978"Como os arrays no possuem um tamanho fixo no VB.NET podemos alterar o tamanho de um array criado previamente usando a declarao ReDim. Ex: ReDim Matriz(59) integer - redimensiona o array criado usando a instruo - Dim Matriz(49) AS

Obs: No VB.NET no podemos iniciar um array usando a declarao : Dim valor(2 to 10) As Single quando fazamos isto no VB6 , as matrizes ficavam com o tamanho fixo e no podiam ser redimensionadas com a declarao Redim. No VB.NET todas as matrizes podem ser redimensionveis atravs da declarao Redim , voc s no pode mudar o nmero de dimenses da matriz. Alm disto o VB.NET trouxe inovaes na sintaxe da declarao de matrizes. Podemos ter :

Dim Salas(15) As Integer Integer(12) {}

= identico a = Dim Salas() As Integer = New

Dim Salas As Integer = { 1, 2, 3 , 4, 5, 6, 7, 8, 9, 10, 11, 12} - inicializa a matriz com valores

Nota: Se voc no definir um valor inicial para uma varivel o VB.NET ir atribuir valores padres conforme a tabela abaixo: Tipo Boolean Date Tipos Numricos Objeto Valor False 12:00:00AM 0 Nothing

ConstantesConstantes sos valores que no sofrem alteraes durante a execuo do programa. (Exemplos : As constantes fsicas e matemticas : PI , o valor de e(logaritimo neperiano) , a velocidade da luz , do som , etc... Declaramos um valor como sendo uma constante na sua declarao. As duas formas de declarar uma constante so : Const PI = 3,141516 Se voc no declarar o tipo da constante o compilador vai procurar ajustar

O s: As constantes da linguagem VB sofrem alteraes no VB.NET . Abaixo mostramos algumas mudanas para constantes de cdigo de teclas : (Para ver a tabela completa clique aqui - tabela de constantes para teclas ) Visual Basic 6.0 vbKeyLButton (1) vbKeyRButton (2) vbKeyCancel (3) vbKeyMButton (4) vbKeyBack (8) vbKeyTab (9) vbKeyClear (12) vbKeyReturn (13) vbKeyShift (16) vbKeyControl (17) Equivalen e- Visual Basic .NET System.Windows.Forms.Keys.LButton System.Windows.Forms.Keys.RButton System.Windows.Forms.Keys.Cancel System.Windows.Forms.Keys.MButton System.Windows.Forms.Keys.Back System.Windows.Forms.Keys.Tab System.Windows.Forms.Keys.Clear System.Windows.Forms.Keys.Return System.Windows.Forms.Keys.ShiftKey System.Windows.Forms.Keys.ControlKey

Veja a continuao do artigo no link abaixo:

Dando os primeiros passos - Escrevendo Cdigo VB.NET - II ...Jos Carlos Macoratti

Dando os primeiros passos - Escrevendo Cdigo VB.NET - II

No artigo Dando os primeiros passos - Escrevendo Cdigo VB.NET - I abordei os conceitos bsicos para voc que esta comeando a querer aprender a utilizar a linguagem Visual Basic.NET. Neste artigo vou mostrar como podemos usar efetivamente a linguagem para realizar algumas tarefas bsicas.

VB.NET - Operadores e funes bsicasJ falamos sobre variveis e constantes no artigo anterior e vimos como so importantes , mas , de que adianta criar variveis e constantes se eu no posso fazer nada com elas ? Por isso o VB.NET oferece um conjunto de fun es que podemos usar para fazer algo de til . O VB.NET possui tambm operadores matemticos que podemos usar para realizar clculos outras operaes : junte tudo isto e j podemos ver o VB.NET funcionando a todo vapor. Vou mostrar a seguir os operadores m ais comumente usados no Visual Basic.Net Operador U ilizao Atribui um valor a uma varivel ou constantes

Exemplo y = 10 ou Sobrenome = "Macora i"

PP

=

H

E F

Const ano As integer = 365 Const nome As String = "Macoratti"

ao valor que mais se aproxima seguindo as seguinte regras :y y y

Long - para valores numricos no declarados Dou le - Para valores numricos com decimais no declarados. S ring - Para qualquer valor caractere.

I

G

+ * / \ Mod & += -= *= /= &= ^ Sqrt

Soma dois valores Subtrai um valor de outro Multiplica dois valores Divide um valor por outro Divide um valor por outro e retorna somente a parte inteira do resultado

x = y + 5 ( o valor de x ser igual a 15) x = y - 2 ( o valor de x ser igual a 5) x = y * 2 ( o valor de x ser igual a 20) x = y / 2 ( o valor de x ser igual a 5) x = y \ 3 ( o valor de x ser igual a 3)

Divide um valor por outro e retorna o resto da x = y mod 3 ( o valor de x ser igual a operao 1) Combina , concatena duas strings soma o valor e atribui o resultado subtrai o valor e atribui o resultado multiplica o valor e atribui o resultado divide o valor e atribuiu o resultado concatena a string e atribui o resultado Eleva um valor a um determinado expoente Extrai a raiz quadrada de um valor (Namespace System classe Math) cliente = "Jose Carlos " & Sobrenome ( cliente ser igual a Jose Carlos Macoratti) y += 3 ( y ser igual a 13) y -= 6 y *= 2 y /= 2 ( y ser igual a 7) ( y ser igual a 14) ( y ser igual a 7)

Sobrenome &= ", Jose Carlos" ( Sobrenome ser igual a "Macoratti , Jose Carlos" 3 ^ 3 ( 3 elevado a 3 ; resultado = 27 ) x = Math.Sqrt(81) ( O valor de x ser igual a 9)

Obs: A c ss Math do nam s ac System poss i diversos m todos que oferecem um suporte matem tico. (Ex: Atan , Exp , Sign , Sqrt , Pow , Min , Round , Abs , Cos , Sin , Tan , etc...) Alm destas funes oferecidas pelo .NET Framework o Visual Basic .NET possui muitas funes intrnsecas que permite realizar alm de converses entre tipos de variveis , clculos matemticos , manipulao de strings , etc. Vejamos primeiro as funes para converso de variveis: Todas as funes de converso no VB.NET iniciam com a letra C ( de converso ) e terminam com uma forma abreviada do novo tipo . Existem tambm a funo de converso genrica -Ctype - que pode converter para qualquer tipo. Vejamos as principais: Funo Descrio Exemplo Dim A, B, C As Integer Dim Check As Boolean A=5 B=5 Check = CBool(A = B) ' Check ser True. ' ... C=0 Check = CBool(C) ' Check ser False.

Cbool

Converte para um Booleano ( False ou True). False ou 0 ser definido como False. Retorna um Boolean

Cbyte

Dim MyDouble As Double Converte para um Byte . Qualquer valor maior Dim MyByte As Byte que 255 ou valor fracionrio ser perdido. MyDouble = 125.5678 Retorna um Byte. MyByte = CByte(MyDouble) ser igual a Converte para um Caracter . Qualquer valor maior que 65,535 ser perdido e , se voc tentar converter uma string somente o primeiro caractere ser convertido.

CChar

Dim MyString As String Dim MyChar As Char MyString = "BCD" 'converte s o primeiro caractere

V

U

S

TS

S RQ

W

' MyByte

MyChar = CChar(MyString) ser igual a "B".

' MyChar

CDate

Converte para um Date. Aceita qualquer representao de data e tempo.

Dim MyDateString, MyTimeString As String Dim MyDate, MyTime As Date MyDateString = "February 12, 1969" MyTimeString = "4:35:47 PM" ' ... MyDate = CDate(MyDateString) ' Converte p/ o tipo Date. MyTime = CDate(MyTimeString) ' Converte p/ o tipo Date. Dim MyDec As Decimal Dim MyDouble As Double MyDec = 234.456784D . MyDouble = CDbl(MyDec * 8.2D * 0.01D) ' Converte para Double Dim MyDouble As Double Dim MyDecimal As Decimal MyDouble = 10000000.0587 MyDecimal = CDec(MyDouble) ' Converte para Decimal.

CDbl

Converte para um Double.

CDec

Converte para um Decimal.

CInt

Dim MyDouble As Double Converte para um inteiro. Valores de Dim MyInt As Integer 2,147,483,648 at 2,147,483,647 . Fraes so MyDouble = 2345.5678 arredondadas. MyInt = CInt(MyDouble) igual a 2346.

' MyInt ser

CLng

Converte para um Longo. Valores 9,223,372,036,854,775,808 at 9,223,372,036,854,775,807 . Fraes so arredondadas.

Dim MyDbl1, MyDbl2 As Double Dim MyLong1, MyLong2 As Long MyDbl1 = 25427.45 MyDbl2 = 25427.55 MyLong1 = CLng(MyDbl1) ' MyLong1 conter 25427. MyLong2 = CLng(MyDbl2) ' MyLong2 conter 25428. Dim MyByte as Byte Dim MyShort as Short MyByte = 100 MyShort = CShort(MyByte) para Short. Dim MyDouble As Double Dim MyString As String MyDouble = 437.324 MyString = CStr(MyDouble) ser igual a "437.324".

CSht

Converte para um Short. Valores de 32,768 a 32,767. Fraes so arredondadas.

' Converte

CStr

converte para um String. Se for uma Data o retorno ser no formato -Short Date.

' MyString

CSng

Dim MyDouble1, MyDouble2 As Double Dim MySingle1, MySingle2 As Single MyDouble1 = 75.3421105 Converte para um Single . -3.402823E+38 at MyDouble2 = 75.3421567 -1.401298E-45 // 1.401298E-45 at MySingle1 = CSng(MyDouble1) ' 3.402823E+38 MySingle1 ser igual a 75.34211. MySingle2 = CSng(MyDouble2) ' MySingle2 ser igual a 75.34216 . Dim MyDouble As Double Dim MyObject As Object MyDouble = 2.7182818284 MyObject = CObj(MyDouble) ' MyDouble estar apontada para MyObject. Dim MyNumber As Long

CObjCtype

Converte para um objeto.

Converte para qualquer tipo de dados.

Sintaxe: Variavel = Ctype( TipoVelho ,

NovoTipo)

Dim MyNewType As Single MyNumber = 1000 MyNewType = CType(MyNumber,Single) ' MyNewType igual a p/1000.0

Nota: 1. Se a expresso submetida a funo estiver fora do intervalo do tipo de dados para o qual voc 2. 3. 4.

quer converter ocorrer um erro Usamos estas funes para forar que o resultado de uma operao seja de um tipo particular diferente do resultado padro. Assim usamos CDec para forar para decimal em casos no qual a preciso simples, dupla ou um valor inteiro normalmente iria ocorrer. Se o valor fracionrio submetido for exatamente 0,5 , CInt e CLng iro arredondar para o nmero par mais prximo. Assim 0,5 ser arredondado para 0 e 1,5 ser arredondado para 2. CDate reconhece o formato de datas de acordo com a configurao local do sistema. Voc deve informar o dia , ms e ano na ordem correta de acordo com a configurao local.

Funes para tratar StringsVejamos agora as principais funes para manipular Strings : (Para maiores detalhes leia o artigo: Funo Len Chr Asc Left Right Mid Instr Strings um novo enfoque ) Descrio Retorna o comprimento(tamanho) de uma string. Retorna o caractere correspondente ao valor ASCII ou UNICODE Retorna o valor ASCII ou UNICODE do caractere correspondente Retorna um nmero definido de caracteres mais a esquerda de uma string Retorna um nmero definido de caracteres mais a direita de uma string Retorna uma string contendo um nmero definido de caracteres. Sintaxe: Mid(String , inicio, tamanho) Retorna um inteiro informando a posio inicial da primeira ocorrncia de uma string em outra. Sintaxe: Instr( inicio , String1 , String2 , Compare) Converte os caracteres de uma string para caracteres minsculos. Converte os caracteres de uma string para caracteres maisculos. Remove todos os espaos contidos em uma string. Exemplo a = len("Macoratti") a = Chr(56) => a = 9

=> a = A

a = ASC("A") => a = 56 a= Left("Macoratti",4) => a= "Maco" a= Rigth("Macoratti",5) "oratti" => a=

a= Mid("Macoratti", 4,3) => a= "ora" a= Instr( 1, "Macoratti", "t") => a= 7 a= Lcase("Macoratti") => a="macoratti" a= Ucase("Macoratti") => a="MACORATTI" a= Trim(" Macoratti ") a="Macoratti" =>

Lcase Ucase Trim

Para encerrar com as funes intrnsecas abaixo temos algumas funes teis: Funo IsArray IsDate IsNumeric IsObject TypeName Now Descrio Retorna True se o parmetro for um array. Retorna True se o parmetro for uma Data. Retorna True se o parmetro for um nmero. Retorna True se o parmetro for um objeto. Retorna o nome do tipo de dados do parmetro . Retorna a data e hora atual. Exemplo

Today

Retorna a data atual no formato: 0:00:00 a.m. Dim MyVar As Object Dim MyCheck As Boolean MyCheck = IsDBNull(MyVar) ' Retorna False. Retorna True se a varivel ainda no foi iniciada MyVar = "" com um valor. MyCheck = IsDBNull(MyVar) ' Retorna False. MyVar = System.DBNull.Value MyCheck = IsDBNull(MyVar) ' Retorna True.

IsDBnull

Bem , voc j tem a disposio um verdadeiro arsenal de funes que j lhe do um idia do poder de fogo do VB.NET e , tenha certeza , isto apenas o comeo. Na continuao deste artigo vou mostrar como criar suas prprias funes e do escopo das variveis.

Dando os primeiros passos - Escrevendo Cdigo VB.NET - III ...Jos Carlos Macoratti

Dando os primeiros passos - Escrevendo Cdigo VB.NET - III

No artigo Dando os primeiros passos - Escrevendo Cdigo VB.NET - II abordei os conceitos bsicos sobre operadores e funes impl citas (as que vem embutidas no VB.NET) para voc que esta comeando a querer aprender a utilizar a linguagem Visual Basic.NET. Neste artigo vou mostrar como voc pode escrever suas prprias funes e sub -rotinas no VB.NET e falar um pouco sobre escopo de variveis.

VB.NET - Escrevendo suas prprias funesNo artigo anterior voc foi apresentado s funes que o VB.NET oferece para facilitar sua vida. Mas sempre vai ficar faltando alguma coisa ; embora o VB.NET possua milhares de funes prontas para voc usar , com certeza no dia a dia voc vai ter que criar sua prpria funo. Sem problema algum ! ; o VB.NET permite que voc crie suas prprias rotinas e funes. isto que vamos mostrar agora. Existem dois tipos de rotinas usadas no VB.NET : 1. Sub-rotinas - Sub - So rotinas que realizam tarefas e que no retornam valor algum. 2. Funes - Func ion - So rotinas que realizam tarefas e que retornam valores.

Sub-ro inasAs sub-rotinas so um bloco de cdigo VB.NET que realiza um servio e no retorna nenhum valor. Quando voc usa o cdigo : Console.Writeline esta usando uma sub-rotina que apenas imprime uma informao na tela e no retorna valor algum. Voc cria uma sub-rotina quando deseja realizar uma tarefa que vai ser repetida muitas vezes ou se a mesma tarefa precisa ser usada em muitos programas. Com isto voc esta agrupando o seu cdigo e tornando-o mais fcil de localizar e manter pois basta voc invocar a sua sub -rotina para fazer o servio ao invs de ter que escrever todo o cdigo novamente. Para criar uma sub-rotina voc usa a palavra -chave - Sub - seguido do nome da sub-rotina e dos parmetros que voc esta passando para ela. Os parmetros so valores que voc passa para sub -

X

Y

`

rotina usar na realizao da tarefa que lhe foi atribuda. A sub-rotina termina com a palavra-chave : End Sub. Vejamos como fica a sintaxe: Sub NomedaSubRotina (parametro1 As TipodoParametro1, Parametro2 As TipodoParametro1, ...) ' O cdigo da funo ... End Sub Abaixo temos um exemplo de uma sub-rotina que multiplica dois nmeros inteiros x e y e escreve o resultado no console: Sub Multiplica ( x As integer, y As Integer) Console.WriteLine( x & " x " & y & " = " & x*y ) End Sub Para chamar a sub-rotina e passar os parmetros usamos a forma :

NomeSubRotina(parametro1 , parametro2)

No exemplo acima podemos fazer assim : Module Module1 Sub Main() Console.WriteLine("Vou chamar a Sub-rotina : Multiplica com os parametros: 521 e 123.") Console.WriteLine("Pressione algo para ver o resultado...") Console.Read()

Multiplica(521, 123)End Sub Sub Multiplica(ByVal x As Integer, ByVal y As Integer) Console.WriteLine(x & " x " & y & " = " & x * y) Console.Read() End Sub End Module

y y y

O nome da sub-rotina Multiplica x e y so os parmetros do tipo inteiro que so fornecidos para a sub -rotina realizar a multiplicao A sub-rotina realiza a mutiplicao usando o operador * : x*y e escreve o resultado na tela.

FunesAs funes so idnticas s sub-rotinas a nica mudana que elas retorna um valor. No caso das funes usamos a palavra-chave : Function seguida do nome da funo e da relao dos parmetros e terminamos com a palavra-chave : End Function. No cdigo da funo usamos tambm a palavrachave : Return que ir retornar o valor da funo. Assim temos: Sub NomedaFuna (parametro1 As TipodoParametro1, Parametro2 As TipodoParametro1, ...) ' O cdigo da funo ... Return ValordeRetorno End Sub

Usando o mesmo exemplo podemos criar uma funo para multiplicar dois nmeros inteiros e retornar o resultado. Assim: Sub Multiplica ( x As integer, y As Integer) Return x*y End Sub Para chamar a funo e passar os parmetros usamos a forma :

NomeFuno(parametro1 , parametro2)

Um exemplo prtico pode ser o seguinte : Module Module1 Sub Main() Console.WriteLine("Vou chamar a Funo : Multiplica c/parametros: 521 e 123.") Console.WriteLine("Pressione algo para ver o resultado...") Console.Read() Console.Write("521 x 123 = " & Multiplica(521, 123)) Console.Read() End Sub Function Multiplica(ByVal x As Integer, ByVal y As Integer)

Return x * yEnd Function End Module

Como exemplos de funes do VB.NET podemos dar como exemplo aqueles que retornam um valor para uma operao. Exemplo as funes Sqrt que calcula a raiz quadrada de um numero e a funo Cos que calcula o coseno de um ngulo. Estas funes pertencem a classe Math. Module Module1 Sub Main() Dim raiz, angulo As Double raiz = Math.Sqrt(100) angulo = Math.Cos(1.12) Console.WriteLine(" Raiz = " & raiz) Console.WriteLine("Angulo = " & angulo) Console.Read() End Sub End Module

O uso dos parmetros no obrigat rio nas sub-rotinas nem nas funes , assim , voc pode definir uma funo sem parmetros, mas deve definir o tipo de valor que ser retornado: Function CalculaPreco() As Dim Preco Double as Double 'cdigo da funo A funo CalculaPreco no usa parmetros mas deve informar o tipo do valor que ir retornar. No caso a funo retorna um valor do

a

...... return valor End Function

tipo Double. Preco = CalculaPreco() Para usar a funo temos que declarar uma varivel compatvel com o valor de retorna e chamar a funo.

Nota: as variveis que voc declara em uma sub-rotina ou funo so locais e apenas visveis pelocdigo da funo ou sub -rotina.

Alterando o valor do parmetro : ByVal ou ByRef ?Na funo multiplica usamos a palavra-chave ByVal , o que significa ByVal ? ByVal significa que estamos passando o argumento(parmetro) por valor ; desta forma a funo ou sub-rotina no pode modificar o valor do argumento. Quando voc usa ByVal o VB.NET faz uma cpia do valor do parmetro e ento o Vb.NET passa uma cpia do valor para a rotina. Desta forma a rotina no pode alterar o valor do parmetro. Se quisermos permitir que o argumento seja alterado pela funo ou sub-rotina devemos usar a chave ByRef. Quando voc usa ByRef a rotina pode alterar o valor do parmetro pois recebe uma referncia ao parmetro , e, a alterao do parmetro na rotina se reflete no parmetro passado.Vejamos o exemplo abaixo: Module Module1 Sub Main() Dim Numero As Integer = 100 Console.WriteLine("Valor de 'Numero' ANTES de chamar a sub-rotina: " & Numero) Console.Read()

MudaValorParametro(Numero)Console.WriteLine("Valor de 'Numero' DEPOIS de chamar a sub-rotina: " & Numero) Console.Read() End Sub Sub MudaValorParametro(ByRef valor As Integer)

valor = 1000End Sub End Module

Escopo das variveis em rotinas e funesPara terminar vamos falar um pouco sobre o escopo. O escopo refere-se a visibilidade das variveis rotinas e funes dentro de um programa. Talvez voc tenha bons motivos para que uma rotina ou varivel no acesse todas as variveis do seu programa . Permitir que todas as variveis do seu programa seja acessadas por todas a rotinas do programa pode lhe trazer algumas dor es de cabea , pois , dependendo da complexidade do programa voc pode perder o controle sobre quem esta alterando e acessando quem.

At agora usamos a palavra -chave Dim para declarar uma varivel . Porm podemos declarar variveis fora das rotinas e funes e assim torn-las acess veis a outras rotinas. Para fazer isto podemos usar as palavras -chave Public e Priva e: 1. Public - As variveis so vis veis por toda a aplicao. a 2. Priva e - As variveis so vis veis dentro do mdulo ou classe onde foram declar das. Podemos usar as palavras -chave acima tambm para definir o escopo de funes e rotinas. Da mesma forma temos para funes e sub-rotinas: 1. Public - A rotina pode ser chamada de qualquer parte de sua aplicao. o padro quando no se informa nada. 2. Priva e - A rotina pode ser chamada somente por outra rotina dentro do mesmo mdulo ou classe onde esta definida. Module Module1 Module Module1 Sub main() Sub main() contador1() contador1() contador2() contador2() End Sub End Sub

For contador = 10 To 100 Console.WriteLine(contador) Next Console.ReadLine() End Sub Sub contador2()

Dim con ador As In eger

Dim con ador As In egerSub contador1() For contador = 10 To 100 Console.WriteLine(contador) Next Console.ReadLine() End Sub Sub contador2() For contador = 100 To 1000 Console.WriteLine(contador) Next End Sub End Module

For contador = 100 To 1000 Console.WriteLine(contador) Next End Sub End Module

Dim con ador As In eger

varivel con ador tem escopo local : as variveis varivel con ador tem escopo global: vis vel por so vis veis somente em cada sub -rotina . ambas as sub-rotinas. declarada fora das declara dentro de cada rotina. rotinas. Os conceitos apresentados no esgotam o assunto , mesmo por que , abordei somente os conceitos mais usados . Em um prximo artigo vou mostrar como aplicar todos estes conceitos em uma aplicao VB.NET. At l...

Dando os primeiros passos - Escrevendo Cdigo VB.NET - IV ...Jos Carlos Macoratti

Dando os primeiros passos - Escrevendo Cdigo VB.NET - IV

Dando sequncia aos artigos da srie - Dando os primeiros passos - Escrevendo Cdigo VB.NET neste artigo vou mostrar uma aplicao prtica de toda a teoria vista at agora . Vamos criar uma aplicao no VB.NET usando alguns dos conceitos expostos e mostrar como podemos juntar as partes para criar algo de til. Para que voc se situe a srie de artigos : 1. Dando os primeiros passos - Escrevendo Cdigo VB.NET - I - variveis e cons an es 2. Dando os primeiros passos - Escrevendo Cdigo VB.NET - II - operadores e funes bsicas

v

u

v

q

t

p

i

h

Sub contador1()

b

c

f

d

e g

r

i

h

s

3. Dando os primeiros passos - Escrevendo Cdigo VB.NET - III - sub-rotinas e funes Nossa aplicao ir realizar um clculo matemtico envolvendo valores monetrios. Vamos criar um programa para calcular o Valor Futuro de uma determinada aplicao financeira em um determinado perodo a uma taxa de juros definida.O problema bsico , temos que criar uma funo que receba como informao : y o valor inicial y os valores dos depsitos mensais y a taxa de juros y e o perodo da aplicao O resultado deve ser o Valor Futuro da aplicao para as condies definidas. Se voc nem sabe por onde comear eu vou lhe dar uma dica : felizmente o VB.NET j tem uma funo para calcular o Valor Futuro : FV . A sintaxe da funo

FV a seguinte :Onde:

Function FV( _ ByVal Rate As Double, _ ByVal NPer As Double, _ ByVal Pmt As Double, _ Optional ByVal PV As Double = 0, _ Optional ByVal Due As DueDate = DueDate.EndO fPeriod _ ) As Double

y y y y y

- Rate - a taxa do perodo Double - Nper - O total de pagamentos no perodo - Double - Pmt - O pagamento feito em cada perodo - Double - PV - O valor atual de uma srie de pagamentos futuros - Double - Due - Define quando os pagamentos so devidos

Para ter uma viso da funcionalidade do aplicativo vamos escrever como dever ser o fluxo de dados do aplicativo usando alguns dados como exemplo :

1. 2. 3. 4.

Se comearmos o investimento com R$ 10.000,00 Valor inicial - (R$) - 10000 e investirmos R$ 200,00 por ms Taxa anual - (%) - 5 por 10 anos Valor dos Depsitos mensais - (R$) 200 a uma taxa de 5% ao ano Perodo de investimento - (anos) - (tempo) Iremos ter um valor futuro de : 10 ?????

A frmula usada por FV a seguinte : FV = DepositoMensal * ((( 1 + TaxaMensal) ^ Periodo -1 ) / TaxaMensal ) + ValorInicial * ( 1+ TaxaMensal) ^ Periodo Perceba que a frmula usa quatro variveis que vamos ter que definir em nossa aplicao . Primeiro vamos criar uma aplicao do tipo Console por ser mais simples , depois iremos criar a mesma aplicao usando os Windows Forms. Vamos ao trabalho: 1 - Inicie um novo projeto no Visual Studio.NET com as seguintes ca ractersticas (sinta-se a vontade paraalterar a seu gosto.)

1. 2. 3.

Project Types : Visual Basic Projects Templates : Console Application Name : ValorFuturo1

4.

Location : c:\vbnet \ValorFuturo1

2 - Altere o nome do modulo para ModVF.vb.(Clique com o boto direito do mouse sobre o nome e selecione Renomear) Veja ao lado a janela - Solution Explorer - e o mdulo preparado para receber o cdigo da nossa aplicao - ValorFuturo1

Como j mostramos acima temos que definir quatro variveis para armazenar os dados que vamos informar para a aplicao calcular o valor futuro usando a forma j descrita. Declaramos as quatro variveis como privadas (Private) desta forma elas sero visveis somente dentro do mdulo. Private 0 Private 0 Private 0 Private 0 dbTaxaAnual As Double iAnos As Integer decValorInicial As Double = = = - No incio de cada nome de cada uma das variveis usei um prefixo para identificar qual o tipo da varivel (esta uma boa prtica de programao), assim : y y y db - Double i - Integer dec - Decimal

decDepositoMensal AS Double =

Com exceo da varivel iAnos que foi definida como sendo do tipo inteiro as demais foram definidas como sendo do tipo Double. Todas as variveis foram iniciadas com valor igual a 0.

Eu poderia colocar todo o cdigo da aplicao na rotina Main , mas isto no seria muito aconselhvel pois iramos gerar um cdigo difcil de ler e manter. Vamos criar sub-rotinas para cada uma das funcionalidades que vamos precisar na nossa aplicao . Qual seriam elas ???? Voc pode ter uma idia melhor que a minha , mas eu dividi a aplicao em 3 partes , abaixo cada uma delas e a seguir uma sugesto de nome para a rotina associada: 1. Entrada de dados - AlimentaVF 2. Calculo do Valor Futuro - CalculaVF 3. Exibio do resultado - MostraVF Nosso cdigo inicial teria ento a seguinte estrutura :

Explicando o cdigo acima: 1. Estamos usando uma varivel do tipo Double - decResultado - que ir armazenar o resultado 2. Criamos duas sub-rotinas : AlimentaVF() que ir receber os valores e MostraVF() que ir exibir o resultado 3. Criamos a funo CalculaVF(dbTaxaAnual, iAnos, decDepositoMensal, decValorInicial) que ir calcular o Valor Futuro. Perceba que a funo usa quatro parmetros que sero usados no calculo da operao. 2- A prxima etapa ser criar o cdigo para cada uma das sub-rotinas e da funo usada na aplicao. Vamos comear com a sub-rotina AlimentaVF() : - Vamos definir a rotina AlimetaVF() como sendo private ; como ela uma sub-rotina nenhum valor ser retornado. Abaixo temos uma sugesto para o cdigo desta sub-rotina: Private Sub AlimentaVF() 'escreve uma linha no console Console.WriteLine() 'recebe os valores e armazena em cada varivel decValorInicial = CDec(ObtemDados("Valor Inicial = ")) dbTaxaAnual = CDbl(ObtemDados("Taxa Anual = ")) decDepositoMensal = CDec(ObtemDados("Deposito Mensal = ")) iAnos = CInt(ObtemDados("Periodo do Investimento = ")) End Sub Explicao do cdigo: - Criamos a funo - ObtemDados(msg) - que ir receber o valor informado pelo usurio. O valor retornado ser armazenado em cada varivel j definida no incio do mdulo. O parmetro passado para a funo a mensagem que ir aparecer para usurio ao digitar o valor. A seguir o cdigo da funo ObtemDados(msg) : Private Function ObtemDados(ByVal msg As String) As String Console.WriteLine(msg) Return Console.ReadLine End Function

A funo ObtemDados recebe o parmetro - msg - e exibe a mensagem usando a mtodo Console.Writeline . Aps informar o valor e teclar ENTER o valor retornado via mtodoConsole.Readline. Observe que definimos o tipo de retorno da funo ObtemDados como String. 3- Vamos agora ao cdigo da funo - CalculaVF() -. Esta funo usa 4 parmetros e devolve o resultado do Valor Futuro. Abaixo o cdigo: Private Function CalculaVF(ByVal TaxaAnual As Double, ByVal Anos As Integer, ByVal DepositoMensal As Double, ByVal ValorInicial As Double) As Double 'Vamos pegar a taxa anual e dividir por 1200 para obtermos o percentual mensal Dim decTaxaMensal As Double = CDec(TaxaAnual / 1200) 'Vamos calcular o numero de meses Dim iMeses As Integer = (Anos * 12) 'A seguir vamos declarar uma varivel temporria e a varivel que vai armazenar o valor de retorno Dim decTemp As Double Dim decRetorno As Double 'vamos usar a varivel temporaria e a variavel de retorno decTemp = CDec((1 + decTaxaMensal) ^ iMeses) decRetorno = CDec(DepositoMensal * ((decTemp - 1) / decTaxaMensal) + (ValorInicial * decTemp)) Return decRetorno End Function Na funo CalculaVF() usamos os parmetros recebidos para efetuar os clculos e retorna o valor futuro. O retorno da funo do tipo Double. A seguir vamos exibir o valor do resultado usando a funo : MostraVF(decResultado) : Private Sub MostraVF(ByVal resultado As Double) Console.WriteLine() Console.WriteLine(" Com um valor incial de {0:c} ", decValorInicial) Console.WriteLine(" e depositos mensais de {0:c} ", decDepositoMensal) Console.WriteLine(" por um periodo de {0} anos ", iAnos) Console.WriteLine(" a uma taxa de {0}% no perodo ", dbTaxaAnual) Console.WriteLine() Console.WriteLine(" Voc ter como um valor futuro de : {0:c}", resultado) Console.ReadLine() End Sub A funo recebe o resultado e usando o mtodo Console.Writeline , exibe o resultado no console . Perceba que formatamos a sada usando os parmetros de formatao para o console. (Leia o artigo : VB.NET - Formatando a sada do console. ). O valor das variveis ir substituir os parmetros {0:c} e {0} em cada posio. ( {0:c} significa : formato de moeda local) Vamos executar a aplicao para ver o resultado final :

Gostou ??? Embora muito simples , voc j usou muitos dos conceitos explanados nos artigos anteriores. No perca a continuao dos artigos da srie - VB.NET - Primeiros passos onde iremos falar de orientao a objetos , classes , e as caracter sticas OOP presentes no VB.NET , tudo isto em VB.NET - Primeiros passos - Concei os - V , at l... !!!

Jos Carlos Macoratti

MySQL - Criando aplicaes RAD com o Assistente para Data SourceNeste artigo eu vou mostrar como voc pode criar aplicaes RAD com a ajuda dos assistentes de configurao de Data Source realizando operaes de arrastar e soltar usando o banco de dados MySQL. (Se voc pensava que isso era possvel somente com o SQL Server se enganou...) Para isso preciso que voc tenha instalados os seguintes recursos

w

x

y y y

Na anela do assistente de onfi urao do Data ource selecione a o o DataBase; Na anela ara escolher a conexo cli ue no oto New onne tion; x ~ } w | { v u z y

Na anela Add onne tion cli ue no oto hange

;

Na anela Change Data Sou e , selecione o item MySQL DataBase e cli ue em OK;

A ora informe as se uintes informaes:y y y

Server name: o nome do seu servidor MySQL. Se estiver na mquina local informe localhost; User name : informe o nome do usurio. Eu usei root mas em roduo no aconselhvel usar este usurio; Password : A senha do usurio;

sr

pqpo

nm l

No menu Data sele ione a ok t

o : Add New

Sou e;

f

iar m o o ro e o o i o Wi ow Forms A Vamo tudio 2008 P1 om o nome MySQL_ ; j h i e d e d g g

y

y

Vi io 2008 o MySQL 5.1 MySQL GUi Tools; MySQL Connector;

se ice

ck 1;

i atio

sando o Visual

Feito isso voc oder selecionar o anco de dados criado no MySQL. Eu estou usando o anco de dados northwind. Sim isso mesmo , eu fiz uma mi rao do anco de dados Northwind.mdb para o MySQL ara usar neste arti o. (vej s efe ci s is de hes) Ve a abaixo uma viso do banco de dados northwind importado para o MySQL:

Feito isso teremos a anela abaixo onde podemos ver a string de conexo exibindo o usurio e a senha o que no muito recomendvel.

Nota: Para fazer a migrao eu usei uma ferramenta grtis chamada Access to MySQL que voc pode pegar no endereo : http://www.bullzip.com/download.php

Clique no boto Next> surgir uma anela alertando para o fato da senha estar aberta e solicitando sua confirmao para armazenar estas informaes na string de conexo. Para este exemplo eu vou clicar Sim mas em produo isso no deve ser feito. OK.

Na prxima anela poderemos escolher as tabelas com as quais vamos gerar o nosso Data Source. Neste exemplo eu vou usar a tabela Products;

Com isso podemos ver o dataset criado na anela Solution Explorer.

Vamos agora criar um formulrio de manuteno de dados usando o datasource criado. Para isso clique sobre o formulrio form1.vb gerado no pro eto e abra a anela Data Source. Podemos selecionar o modo de exibio do campo conforme exibido na figura abaixo:

A seguir selecione a tabela Products e vamos escolher um modo de exibio. Para este exemplo vou usar o modo DataGridView; Feito isso s arrastar e soltar a tabela no formulrio;

Observe que sero criados os seguintes componentes:y y

NorthwindDataSet ProductsBindingSource

y y y

ProductsBindingNavigator ProdutosTableAdapter TableAdapterManager

Selecione a barra de tarefa do DataGridView e marque a opo Dock in parent Container e a seguir clique em Edit Columns para remover algumas colunas na exibio do DataGridView:

Pronto vamos executar e realizar a manuteno da tabela Products , incluindo , excluindo e alterando dados.

Podemos tambm incluir a tabela Categories no DataSource e editar o DataGridView e retornar a exibio do campo CategoryID; (Para fazer isso se ecio e o DataSo rce e c i e co o boto direito do o se e se ecio e a a o o : Co fi re Data So rce with Wizard ) Em seguida podemos definir as seguinte propriedades para a coluna CategoryID:y y y y

ColumnType : DataGridViewComboBoxColumn - com isso a exibio dos dados nesta coluna ser feita em um combobox; DataSource : CategoriesBindingSource ; DisplayMember - CategoryName - O valor que ser exibido no combobox do campo, no caso o nome da categoria; ValueMember - CategoryID - O valor que ser usado quando o campo for selecionado, no caso o cdigo da categoria;

Executando o pro eto novamente aps as alteraes teremos:

Obs: Existem alguns problemas com tabelas relacionadas que eu pretendo abordar em outro artigo. Tudo o que mostramos aqui havia sido feito para o SQL Server. A novidade fica por conta do mesmo recurso estar disponvel para o MySQL. Pegue o pro eto completo aqui:

Eu sei apenas VB .NET e MySQL , mas eu gosto...

MySQL_RAD.zip

Referncias:y y y y y

MySQL - Importanto e Exportando tabelasVB .NET - Criando uma conexo com o MySQL via ODBC VB .NET - Strings de Conexo e Provedores de dados ASP.NET - Acessando o MySQL

Acessando o MySQLJos Carlos Macoratti

MySQL - Conectando , Importando e Exportando tabelas Access

Continuando a focar o MySQL agora vou mostrar como Conectar , Importar e Exportar tabelas de um banco de dados Access. Pr-Requisitos : Voc vai precisar do seguinte :

y y y y

Possuir o MySQL instalado na sua mquina - (

Visual Basic - Acessando uma base de dados MySQL com

ADO )Possuir o MyODBC instalado e configurado Possuir um DSN configurado para o banco de dados MySQL - ( Criando um DSN para o MySQL ) Possuir o Microsoft Access ( 97 ou 2000 ) instalados.

Obs: Neste artigos vamos usar o banco de dados clientes e a tabela clientes do MySQL criados no artigo -

Acessando uma base de dados MySQL com ADO

Visual Basic -

1 - Vinculando tabelas MySQL no Microsoft Access : Inicie o Microsoft Access e selecione a opo - Criar um banco de dados Novo usando | Banco de dados vazio do Access Informe o nome do banco de dados - eu informei: Access_MySQL No Menu Arquivo selecione a opo - Obter Dados Externos | Vincular Tabelas

Na Janela Vincular selecione na caixa Arquivos do Tipo a opo - ODBC Databases

y

A janela Select a Data Source ir surgir . Clique na aba Machine Data Source (se o seu mysql estiver instalado em um NT ou Windows 2000 a aba ser diferente) , e selecione a seguir o nome do DSN -MySQLConexao ( o DSN deve ser criando anteriormente) e clique no boto OK.

y

A proxima tela ir exibir a configurao do driver ODBC - Confirme ou altere as opes para conexo ( Banco de dados , usurio , senha , etc.) e clique no boto OK

y

Na janela - Vincular tabelas - apenas selecione as tabelas que deseja vincular e clique em OK.

y

Dependendo da tabela a ser vinculada voc dever informar o campo que identifica o registro exclusivo. (Figura a abaixo a esquerda ). Como resultado temos a tabela vinculada exibida na janela Banco de dados. (figura a direita)

Com isso todas as alteraes que voc fizer na tabela vinculada sero refletidas e salvas automaticamente no servidor MySQL , e , mesmo que voc feche o banco de dados Access ao abr-lo novamente a conexo com o servidor MySQL ser feita tambm de forma automtica. (Voce deve ter em mente que as tabelas vinculadas no suportam todas as operaes de uma tabela nativa.)

2 - Importando tabelas MySQL para o Microsoft Access : Inicie o Microsoft Access e selecione a opo - Criar um banco de dados Novo usando | Banco de dados vazio do Access Informe o nome do banco de dados - eu informei: Access_MySQL No Menu Arquivo selecione a opo - Obter Dados Externos | Importar...

Na Janela Importar selecione na caixa Arquivos do Tipo a opo - ODBC Databases.

y y y

A janela Select a Data Source ir surgir . Clique na aba Machine Data Source (se o seu mysql estiver instalado em um NT ou Windows 2000 a aba ser diferente) , e selecione a seguir o nome do DSN -MySQLConexao ( o DSN deve ser criando anteriormente) e clique no boto OK. A proxima tela ir exibir a configurao do driver ODBC - Confirme ou altere as opes para conexo ( Banco de dados , usurio , senha , etc.) e clique no boto OK Na janela - Importar Objetos - apenas selecione as tabelas que deseja importar e clique em OK.

y

Abaixo o resultado da importao exibida na janela Banco de dados do Access . Como eu selecionei a tabela pedidos e a mesma j havia sido vinculada no item anterior o Access mudou o nome da tabela importada para pedidos1.

3 - Exportando uma tabela Access para o MySQLy y y yInicie o Access e abra o banco de dados com as tabela que voc quer exportar. Vamos abrir o banco de dados Biblio.mdb e exportar a tabela Authors. Abre o banco de dados Biblio.mdb (Eu renomei o arquivo para Biblio_2001.mdb), selecione a tabela Authors e clique na opo Arquivo|Exportar Na Janela - Exportar Tabela 'Authors' em ... - selecione na caixa - Salvar como tipo , a opo ODBC Databases Na janela Exporta , confirme ou altere o nome da tabela que esta exportando.

y

Na janela Select a Data Source e clique na aba Machine Data Source (se o seu mysql estiver instalado em um NT ou Windows 2000 a aba ser diferente) , e selecione a seguir o nome do DSN -MySQLConexao ( o DSN deve ser criando anteriormente) e clique no boto OK.

y

A proxima tela ir exibir a configurao do driver ODBC - Confirme ou altere as opes para conexo ( Banco de dados , usurio , senha , etc.) e clique no boto OK

y

Pronto , a tabela Authors foi exportada para o banco de dados Clientes do servidor MySQL. Execute o utilitrio Mascon e verifique a tabela no banco de dados Clientes do MySQL.

Se voc achou muito trabalhoso as tarefas acima pode usar algumas ferramentas de terceiros. 1-) O utilitrio DBTools funciona somente com o MYSQL e pode ser usado para importar arquivos vrios formatos para um banco de dados MySQL. Voc pode fazer o download em http://www.dbtools.com.br/ , e GRTIS. 2-) Para importar arquivos textos voc pode usar um servio on-line em : http://www.itlab.musc.edu/mysql_import/mysql_import.html , um utilitrio para importar arquivos para um banco de dados MySQL , o arquivo de ajuda para preencher os campos do formulrio de importao voc acessa em : http://www.itlab.musc.edu/mysql_import/help.html . At mais ver...

Jos Carlos Macoratti

Acessando o MySQL usando o ODBC .Net Data Provider

O ODBC .NET Data provider permite o acesso a banco de dados ODBC atravs de um driver ODBC nativo da mesma forma que os provedores nativos OLE DB. A grande vantagem em usar os provedores ADO.NET que todos eles definem a mesma hierarquia de classes , e , por isso a nica coisa que voc tem que alterar so as classes e a string de conexo. Diferentemente dos provedores - SQL e OleDb - o provedor ODBC precisa ser instalado a parte do .NET Framework , ento a primeira coisa a fazer pegar o provedor no site da Micro$oft (http://msdn.microsoft.com/downloads/default.asp?URL=/downloads/sample.asp?url=/MSDNFILES/027/001/668/msdncompositedoc.xml ). Aps instalar o OBDC .NET temos que customizar a barra de ferramentas (toolbox) para incluir os componentes de dados ODBC. Vamos fazer isto: y y Abra a caixa de ferramentas e selecione a guia Data A seguir clique com o boto direito do mouse e no menu suspenso selecione a opo Customize ToolBox . (Figura 1.0)

Figura 1.0

Figura 2.0

y y

A seguir na janela - Customize Toobox - selecione a guia - .NET Framework Components - e procure pelo Namespace - Microsoft.Data.Obdc Marque a caixa de seleo para estes namespaces e a seguir clique em OK. (figura 2.0) Agora para poder usar o ODBC no seu projeto VB.NET voc precisa incluir uma referncia a Microsoft.Data.Obdc.dll. Estando no seu projeto , em - Solution Explorer - e clique com o boto direito do mouse e selecione a opo - Add Reference... (veja figura ao lado) Na janela - Add Reference - clique no boto - Browse. O arquivo Microsoft.Data.Obdc.dll esta na pasta : \Arquivos de Programas\Microsoft.NET\Obdc.NET

Selecione o componente e clique no boto Open para incluir uma referncia Aps a incluso as referncias iro aparecer na janela - Add Reference - e no seu projeto , na janela Solution Explorer ; conforme abaixo

Pronto , agora basta inserir o cdigo que trata as informaes da fonte de dados e fazer a referncia no cdigo da classe do OBDC: Imports Microsoft.Data.Obdc As classes do provedor ODBC.NET so : Representam o comando SQL ou Procedimento armazenado a ser executado Gera automaticamente comandos select , insert , update e delete Representa uma conexo Representa um Data adapter Representa um data reader Representa os erros e avisos Representa uma coleo de erros e avisos Representa a classe de exceo ODBC Representa um parmetro ODBC Representa uma transao

OdbcCommand

OdbcCommandBuilder OdbcConnection OdbcDataAdapter OdbcDataReader OdbcError OdbcErrorCollection OdbcException OdbcParameter OdbcTransaction

A string de conexo para OdbcConnection contm o driver para a fonte de dados (data source ) e o caminho para a fonte de dados com os parmetros opcionais para senha ( Password) e usuario (User). Vejamos as strings de conexo para alguns casos:

"Driver={Microsoft ODBC for Oracle};Server=ORACLE8i7;UID=obdcuser;PWD=123456"

Oracle

"Driver={SQL SQL Server Server};SERVER=MyServer;UID=sa;Trusted_connection=true;DATABASE=northwind;" "Driver={Microsoft Access Driver(*.mdb)};DQB=c:\SeuBancodeDados.mdb" "Driver={Microsoft Excel Driver(*.xls)};DQB=c:\teste\planilha.xls" "Driver={Microsoft Text Driver(*.txt; *.csv)};DQB=c:\teste" Access Excel Arquivos Textos MySQL [ cdigo #1] End While - Voc pode usar qualquer expresso booleana Nota: No visual basic 6 havia a instruo While/Wend , no VB.NET a instruo Wend foi substituida por End While.

Ex: While contador < 10 And valor = 5 contador = contador + 1 End While Do ... Loop Este lao alm de ser simples um dos mais flexveis , ele executa o bloco de cdigo enquanto uma condio for verdadeira. A sintaxe a seguinte : Do [ {While | Until} [bloco de cdigo] - - qualquer expresso numrica ou de string avaliada pelo lao - Exit Do - interrompe a execuo do lao.

[Exit Do] Loop Temos ento as seguintes estruturas possveis: Do While [ cdigo ] Loop Faa enquanto a expresso for verdadeira Do Until [ cdigo ] Loop Faa at que a expresso torne-se verdadeira

A diferena entre Do While e Do Until o modo como a estrutura avalia a expresso lgica. Para o Until o bloco ser executado enquanto o valor da expresso for Falsa. Ao escolher entre um lao While e Until use o lao que no precisar de uma negao na expresso condicional. Tenha cuidado a posicionar a sua instruo condicion al. Se voc colocar a condio no incio do lao , o cdigo no interior do lao nunca ser executado se a condio no for atendida. Voc pode colocar a condio de sada no final do lao , assim : Do [Cdigo #1} Loop Until Nota: se a expresso da condio for Null o VB.NET tratar a condio como False. Voc deve tomar cuidado com o seu cdigo dentro dos laos pois isto pode afeta o desempenho de sua aplicao. Abaixo algumas dicas para ajudar a voc ter um cdigo rpido: y y y y Evite fazer chamadas a funes dentro de laos Tenha sempre uma condio de sada de um lao No torne a condio de sada de um lao muito complexa pois ele precisa ser avaliada a cada passo Ao utilizar expresses booleanas coloque a parte mais simples da expresso do lado esquerdo

Lao Infinito - Um lao infinito um lao que executa o cdigo no seu interior e no tem condio de sada , ou seja, o cdigo ser executado infinita vezes... Dica: Se por um erro de lgica seu cdigo entrar em um lao infinito use as teclas CTRL+Break para encerr-lo. Abaixo um exemplo de um lao infinito: Dim i as integer = 0 While i < 100 Adivinhe por que o lao ao lado infinito ???? Console.Writeline(i) End While Para evitar um lao infinito procure adotar os seguintes procedimentos: y y Inicialize a varivel de controle Teste o valor da varivel de controle

y y

Execute o bloco de cdigo e verifique se ele esta correto Verifique se o valor da varivel de controle esta sendo alterado

Recurso claro que os laos nem sempre so a melhor soluo para todos os problemas. Em alguns casos voc pode usar a recurso como uma alternativa aos laos. A recurso ocorre quando um programa ou rotina chama a ele prprio. Um exemplo clssico para mostrar como a recurso funciona o clculo do um fatorial. A frmula para calcular um fatorial de um valor n = n! onde fazemos n ! = (n -1)(n-2)...(n-(n1))(1). Assim para o fatorial para o nmero 5 seria : 5! = 5x4x3x2x1 = 120 . A frmula geral para calcular o fatorial pode ser ento expressa como : n * (n-1) ! ( n multiplicado pelo fatorial de n menos 1). A seguir temos o cdigo que usa a recurso ao invs de laos para calcular o fatorial de um nmero inteiro. Public Class Fatorial Shared Sub Main() Dim entrada As String Dim numero As Integer Dim contador As Integer Console.Write(" >>> Calculo do Fatorial

Maior que

Ao comparar duas strings o VB compara caractere por caractere em cada string. Assim comparando : "123ABC" com "123ACB" o VB compara os dois primeiros caracteres (1) depois os dois (2) , os dois (3) at que os caracteres se am diferentes , ento a comparao interrompida. No caso o como o cdigo do caractere B (66) menor que o cdigo do caractere C (67) ento o VB considera a string "123ABC" menor que a string "123ACB"$ $# !

Nota: a maior de A pois o cdi o de a (97) e

uanto ue o cdi o de A (65)

Se a comparao ocorrer entre duas strings de tamanho diferentes: "ABC" com "ABCD" a comparao encerrada quando no houver mais caracteres na primeira string para comparar com os caracteres da segunda string. Neste caso a string mais pequena - "ABC" - considerada menor que a string mais longa - "ABCD" ou se a : "ABC" < "ABCD"

Usando o operador LIKE para comparar StringsO Visual Basic 6 apresenta o operador LIKE que utilizado para comparar duas strings. Sua sintaxe : resultado = string Like modelo Parte resultado string modelo Descrio variavel numrica string de comparao uma expresso string conforme o a conveno definida.

Os valores adotados para comparao no modelo so:Caracteres no Modelo ? * # [charlist] [!charlist] Valor comparativo na string Qualquer caractere simples Nenhum ou mais de um caractere Qualquer digito simples ( "0", ..."9") Qualquer caractere simples da lista de caracteres Qualquer caractere simples da no presentes lista de caracteres

Ve amos alguns exemplos :Comparao "ABCD" Like "AB?D" "ABC3D" Like "ABC#D" Resultado True True

"

%

"

&

"ABCD" Like "A???D" "A$1D" Like "A*D"

False True

Dim Compara Compara = "aBBBa" Like "a*a" Compara = "F" Like "[A-Z]" Compara = "F" Like "[!A-Z]" Compara = "a2a" Like "a#a" Compara = "aM5b" Like "a[L-P]#[!c-e]" Compara = "BAT123khg" Like "B?T*" Compara = "CAT123khg" Like "B?T*"

' Retorna True. ' Retorna True. ' Retorna False. ' Retorna True. ' Retorna True. ' Retorna True. ' Retorna False.

Manipulando StringsVamos agora trabalhar com strings usando as funes para tratamento de strings que o VB nos

oferece. Vale lembrar que a verso VB6 trs muitas funes novas pa ra tratar strings. Essas funes facilitam em muito o nosso trabalho e podem substituir muitas linhas de cdigo antes necessrias para obter o mesmo efeito. I-) As funes strings bsicas Primeiro vamos mostrar as funes para tratamento de strings presentes em todas as verses do VB: a-) Str(numero) - Converte um valor numrica em uma string do tipo VariantDim String String = Str(459) 459". String = Str(-459.65) 459.65". String = Str(459.001) 459.001".

' Resultado =>

"

' Resultado = > "' Resultado = > "

b-) Len(string ) string)Dim sNome As String Dim tamanho As Long sNome = "Visual Basic" tamanho = Len(sNome) tamanho ser igual a 12

- Determina o nmero de caracteres de uma string. (o comprimento da

'Resultado => a variavel

c-) Chr$(codigo_do_caractere) indicadoDim Caractere Caractere = Chr(65) ' Resultado ==> A Caractere = Chr(97) ' Resultado ==> a Caractere = Chr(62) ' Resultado ==> >

-

Retorna uma string caractere associado ao cdigo

Caractere = Chr(37) ' Resultado ==> %

Para exibir os cdigos de todos os caracteres de 0 a 255 use o cdigo a seguir: Dim i as integer For i=0 to 255 Debug.Print i; chr$(i) Next d-) Asc(string) da String.Dim MyNumber Numero = Asc("A") Resultado => 65. Numero = Asc("a") Resultado => 97. Numero = Asc("Amor") Resultado => 65.

- Retorna um valor inteiro que representa o cdigo do primeiro Caractere

' ' '

e-) Space(numero) - Retorna uma string do tipo Variant contendo a quantidade de espaos indicados por nmero. String = "Visual" & Space(10) & "Basic" espaos entre as strings Visual e Basic - insere dez

f-) String$(Tamanho,String) - Cria uma string com comprimento igual a Tamanho e que contm o primeiro carter indicado em String. Se String tiver mais de um caractere somente o primeiro ser usado. String$(9,"VISUAL") => "VVVVVVVVV" g-) Trim$(string) 'retorna

Remove os espaos existentes de ambos os lados de uma string.

Dim MVar MVar = Trim(" visual basic ") ==> "visual basic". h-) RTrim$(string)

'MVar ir conter

- Remove os espaos a direita da string.

Dim MVar MVar = RTrim(" visual basic ") ir conter ==> " visual basic". i-) LTrim$(string)

'MVar

- Remove os espaos a esquerda da string.

Dim MVar MVar = LTrim(" visual basic ") ir conter ==> "visual basic ".

'MVar

j-) LCase$(string)

-

Converte todos os caracteres alfanumricos na string para minsculas. retorna

LCase("SO JOSE DO RIO PRETO , 12-08-2001") ==> so jose do rio preto , 12-08-2001 l-) UCase$(string) -

Converte todos os caracteres alfanumricos na string para maisculas. retorna ==>

LCase("So Jose Do Rio Preto , 12-08-2001") SO JOSE DO RIO PRETO , 12-08-2001 II) Substrings

Substrings so pedaos de uma string. Veremos a seguir as principais funes para o tratamento de substrings. a-) Left$(String, Tamanho) - Retorna uma string contendo o nmero de caracteres definido em Tamanho do lado esquerdo da String. Left$("Programar com Visual Basic fcil", 9) ==> "Programar" Left$("Programar com Visual Basic fcil", 50) ==> "Programar com Visual Basic fcil" Left$("Programar com Visual Basic fcil", 0) ==> "" Retorna

Retorna

Retorna

b-) Right$(String, Tamanho) - Retorna uma string contendo o nmero de caracteres definido em Tamanho do lado direito da String. Right$("Programar com Visual Basic fcil", 8) ==> " fcil" Right$("Programar com Visual Basic fcil", 50) ==> "Programar com Visual Basic fcil" Right$("Programar com Visual Basic fcil", 0) ==> "" Retorna

Retorna

Retorna

c-) Mid$(String, Inicio,[Tamanho]) - Como funo retorna uma substring da String dada , comeando 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) "strings" Mid$(texto,7) "strings no Visual Basic" retorna =>

retorna =>

Podemos usar MID$ para substituir uma parte da string dada, a partir do primeiro caractere da posio Inicio. Texto ="Isto um teste" Mid$(texto,6)="123456" => "Isto 123456" Mid$(texto,6,3)="123456" => "isto 123m teste" Mid$(texto,8)="12" => "Isto 12 teste" retorna

retorna

retorna

d-) Instr$(Inicio,string1,string2,[Compare]) - Determina a posio da primeira ocorrncia de uma substring contida em uma string. Retorna uma variant do tipo Long. Os argumentos so : Argumentos Inicio string1 string2 compare Descrio Expresso numrica que define a posio de inicio para iniciar a procura. Se omitida a procura comea no inicio da string. A expresso string a ser procurada. A expresso string a procurar. Determina o tipo de comparao que ser feito entre as strings.

Os possveis tipos de comparao so:Constante vbUseCompareOption vbBinaryCompare vbTextCompare vbDatabaseCompare Valor -1 0 1 2 Descrio A comparao ser feita como definida em Option Compare Comparao binria Comparao textual

Comparao com base no seu banco de dados . S para o Microsoft A

Exemplos:Dim String1, String2, posicao String1 = "Visual Basic 6 A linguagem" onde ser feita a procura String2 = "a" ' string

' Substring a procurar

' comparao textual iniciando na posicao 4 posicao = InStr(4, String1, String2, 1) 'Retorna => 5.

' Comparao binaria iniciando na posicao 1 posicao = InStr(1, String1, "A", 0) 'Retorna => 16 ' Comparao binria posicao = InStr(String1, "A") 'Returns => 16 posicao = InStr(1, String1, "W") Returns 0 (no achou) Nota: Observe que : Se string1 for igual a "" string1 for Null string2 for igual a "" string2 for igual a Null string2 no for encontrada string2 for encontrada em string1 start > string2 A funo InStr ir retornar: 0 Null Inicio Null 0 A posio onde ela for encontrada 0 '

d-) Split(string,delimiter,count,compare_mode] VB6 - Divide uma string e retorna as substrings como um array de strings.Parte string ( expresso ) delimiter Descrio

Uma expresso string . Se a expresso for uma string vazia ("") o array retornado e sem elementos.

Um string caractere usado para identificar Indica onde a diviso vai ocorrer. Se fo espao (" " ) ser usado. Se for utilizado uma string vazia ("") ento um array cont completa ser retornada.

count compare

O nmero mximo de substrings a ser retornada. -1 indica que todas as substrings

Valor numrico indicando o tipo de comparao a usar quando da avaliao das su valores abaixo:

Os valores de compare podem ser:Constante vbUseCompareOption vbBinaryCompare vbTextCompare Valor 1 0 1 Descrio Realiza uma comparao com base na definio de Option Compare. Realiza uma comparao binria. Realiza uma comparao textual.

vbDatabaseCompare

2

Somente para arquivos Microsoft Access.

Exemplo 1- Vamos dividir a string "Visual Basic 6" (voc pode testar com diversas expresses)1:Private Sub Command1_Click() 2:Dim i As Integer 3:Dim vetor As Variant 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 O cdigo para dividir strings e gerar O resultado gera 3 substrings: vetor(0), vetor(1) e vetores de substrings vetor(2) No exemplo acima usamos a funo 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 cdigo da linha 4 por : substrings: 0 Visual 1 Basic 6 vetor = Split(Text1.Text,,2) iremos obter duas Inicie um projeto no VB e no formulr io padro insira uma caixa de texto , uma caixa de listagem e um boto de comando Abaixo veja o resultado do cdigo ao lado:

Exemplo 2- Vamos acrescentar o caracter "s" para indicar onde a diviso ir ocorrer Private Sub Command1_Click() Dim i As Integer Dim vetor As Variant vetor = Split(Text1.Text,"s") List1.Clear For i = LBound(vetor) To UBound(vetor) List1.AddItem i & vbTab & vetor(i) Next End Sub Inicie um projeto no VB e no formulrio padro insira uma caixa de texto , uma caixa de listagem e um boto de comando Abaixo veja o resultado do cdigo ao lado:

Note que a diviso teve inicio no caracter "s" , retornando 4 substrings contidas nos vetores com indices 0,1,2 e 3. Podemos aproveitar esta ltima caracterstica para 'contar' quantas vezes uma substring aparece numa string. Por exemplo , suponha que voc queira saber quantas vezes a substring "do" aparece na frase : "Avaliao do impacto do treinamento no trabalho do programador". Usando Split fica fcil ...: 1:Dim frase As string 2:Dim vetor As Variant 3:frase = "Avaliao do impacto do treinamento no trabalho do programador" 4:vetor = Split(frase,"do") 5:MsgBox " 'do' aparece na texto ' " & frase & " ' " & UBound(vetor) & " vezes." Voc ter como resposta que 'do' aparece 4 vezes no texto, pois 'do' tambm esta contida na palavra 'programador'. Para contar somente as ocorrncias da preposio 'do' altere a linha 4 do cdigo 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 dimenso 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 sero 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," ") "Visual Basic 6 A linguagem" sJunta= Join(array) "Visual Basic 6 A linguagem" sJunta= Join(array,",") "Visual,Basic,6,A,linguagem" sJunta= Join(array,":") "Visual:Basic:6:A:linguagem" sJunta= Join(array,"") "VisualBasic6Alinguagem" retorna => retorna => retorna => retorna => retorna =>

g-) Filter(Varlist, Value, Include, Compare) VB6 - Procura em VarList pelas strings definidas em Value e retorna o resultado em um array. - VarList - contm um array de strings que a funo ir filtrar - Value - a string de caracteres usada para identificar qual elemento ser includa no novo array. - Include - Um valor boleano que indica se o s elementos contendo o valor coincidente ser incluido ou no na string . O valor padro True. - Compare indica como a busca por Value ser efetuada.

Os valores de compare podem ser:Constante vbUseCompareOption vbBinaryCompare vbTextCompare vbDatabaseCompare Exemplo: 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 Valor 1 0 1 2 Descrio Realiza uma comparao com base na definio de Option Compare. Realiza uma comparao binria. Realiza uma comparao textual. Somente para arquivos Microsoft Access.

h-) StrReverse(string) - VB6 - Retorna uma string com os caracteres 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. 2.

String - a string a ser alterada strProcura - a string a procurar em

6.

sta funo muito til para substituir ocorrncias em uma string por um determinado valor. Vamos mostrar um e emplo onde vamos substituir todas a vrgulas , em uma frase por ponto e vrgula9

emploB @ A

rase Geralmente , temos um problema , quando a temperatura aumenta Nova rase Replace Frase, "," , " " ) retorna > "Geralmente ; temos um pro lema ; quan o a temperatura" Nota: Observe que voc dever estar atento s seguintes ocorrncias: Se st st for igual a for Null u a for igual a "" for igual a ""be RR PIH Q G F E D C A @

A funo strReverse ir retornar: "" Um erro Uma p a de sta ` cab d

st SubstPb

Inicio > st ing contador for i ual a zerog h f

m outro artigo estarei dando continuidade ao assunto , por hoje s. u sei s VB, mas eu gosto...

Jos Carlos acoratti

i

W YXW W

st P

Uma cpia de string com todas as ocorrncias de StrProcura removidas Uma string vazia "" Uma cpia de string

B

7 6

5

3 1

5.

0

)

2

(

4.

'

3.

strSubstPor a string usada para substituir a string Inicio indica o incio da busca por . Opcional Contador indica o nmero m imo de vezes que ser substituida Compare o modo de comparao a ser efetuada.

9786

UTS V

4 5

4 h