sexta-feira, 10 de fevereiro de 2012

Trabalhando com Arquivos Texto no VB6


Lendo um Arquivo Txt ou CVS
Bem, esse artigo foi escrito por que vira e mexe eu necessito de algumas funções do vb6 para dar manutenção e me deparo com uma linguagem que nem me recordo como funciona ou quais são suas bibliotecas e classes. Esse artigo aborda a leitura e de arquivo texto, seja ele txt, cvs ou log.

Idealização do Algorítimo
Para ficar mais didático separei o algorítimo em 3 partes, primeiro leitura do arquivo texto, segundo separação do arquivo em linhas e por fim, separação das linhas em colunas. Para criei 3 funções básica e bem comentadas.

Criando meu Projeto
Criei um projeto simples, com um form e adicionei um botão para chamar a ação, em seguida fui no menu “Projetos”, “Referências” e adicionei a referência “Microsoft Scripting Runtime”, essa biblioteca que possibilita a leitura do Arquivo, é semelhante a System.IO da plataforma Net.

Arquivo de Leitura
O Arquivo que irei ler esta no padrão, separado por ponto e vírgula, ok, conforme imagem em anexo.

Solução
Segue abaixo as função criadas e comentadas:

Public Function lerArquivo(arquivo As String) As String
    'DEFINIR O OBJETO DE LEITURa
    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
   
    'ABRIR O ARQUIVO ATRAVÉS DO CAMINHO FISICO
    Set arq2 = fso.OpenTextFile("C:\Pastapadrao\" & arquivo, ForReading, True)
   
    'LER OS DADOS DO ARQUIVO
    Dim texto As String
    texto = arq2.ReadAll
    arq2.Close
    'RETORNAR A STRING DO CONTEUDO O ARQUIVO LIDO
    lerArquivo = texto
End Function

Public Sub DividirEmColunas(ByVal arquivo As String)
    'SEPARANDO O ARQUIVO POR LINHAS
    ' vbVrLf ou CHR(13) representam quebra de linha
    Dim LinhasDoArquivo() As String
    LinhasDoArquivo = Split(arquivo, Chr(13)) 
    'PARA QUE A FUNÇÃO SPLIT POSSA FUNCIONAR
    'A DEFINIÇÃO DA VARIAVEL QUE RECEBERÁ SEU VALOR
    'DEVERÁ SER FINALIZADA COM "( )"
    'EXEMPLO SE ELAS ESTIVESSE ASSIM Dim LinhasDoArquivo As String
    'DARIA ERRO
    For i = 0 To UBound(LinhasDoArquivo)
       'CHAMAR FUNCAO PARA LER LINHAS
       TratarLinhas LinhasDoArquivo(i)
    Next
End Sub

Public Sub TratarLinhas(linha As String)
    'DIVIDIR LINHA EM COLUNAS
    Dim colunas() As String
    colunas = Split(linha, ";")
   
    'DEFINIÇÃO DAS COLUNAS
    Dim Codigo As String 'COLUNA 1
    Dim Material As String 'COLUNA 2
    Dim Recurso As String 'COLUNA 3
   
    'ATRIBUIR VALORES
    Codigo = colunas(0)
    Material = colunas(1)
    Recurso = colunas(2)
   
    'APLICAR AÇÃO...
   
End Sub

Bem, em resumo e de forma bem simples é isso!

terça-feira, 28 de dezembro de 2010

Nhibernate

Bem, estou escrevendo este post por que estou tendo problemas ao começar estudar o NHibernate. Até onde eu fui, seu uso é simples, as funções principais da bliblioteca já estão bem escritas, deixando o trabalho pesado para ela.


Ao começar a procurar no google referências sobre o assunto eu encontrei inúmeors sites com tutoriais, guias passo a passo, inclusive o site do NHibernate trás uma ótima documentação sobre o assunto. Mas foi um blog que eu encontrei algo simples, e prático e bem direto, mostrando um passo a passo de forma mais breve, sem muita teoria ou porque das coisas, ele esta dividido em duas partes, Parte 01 que nada mais é que uma pequena introdução, e Parte 02, os mapeamentos e sua primeira implementação, e configurações.


Bem, essa imagem acima foi a minha primeira dificuldade encontrada, que nada mais foi que Referências a Dlls. Como eu havia copiado as dlls para dentro do projeto e depois add nas referências isso causou um erro interno, e o projeto não estava encontrando as dlls (NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle). A resolução do problema foi bem simples, o que fiz foi criar uma nova pasta fora do projeto com todas as Dlls usadas no projeto, e ao fazer as referencias, fazia desta pasta.

Bem, em resumo percebi que o Nhibernate é bem simples e fácil de usar, é como seguir uma receita de bolo, seguindo os passos padrão, não há erro.

abraço.

quarta-feira, 30 de dezembro de 2009

O que é trabalhar em empresas de TI:

1 - Você trabalha em horários estranhos (que nem as putas).
2 - Te pagam para fazer o cliente feliz (que nem as putas).
3 - Seu trabalho vai sempre além do expediente (que nem as putas).
4 - Você é mais produtivo à noite (que nem as putas).
5 - Você é recompensado por realizar as idéias mais absurdas do cliente (que nem as putas).
6 - Seus amigos se distanciam de você, e você só anda com outros iguais a você (que nem as putas).
7 - Quando você vai ao encontro do cliente você precisa estar apresentável (que nem as putas), mas quando você volta parece que saiu do inferno (que nem as putas).
8 - O cliente sempre quer pagar menos e quer que você faça maravilhas (que nem as putas).
9 - Quando te perguntam em que você trabalha você tem dificuldade para explicar (que nem as putas).
10 - Se as coisas dão errado é sempre culpa sua (que nem as putas).
11 - Todo dia você acorda e diz: NÃO VOU PASSAR O RESTO DOS MEUS DIAS FAZENDO ISSO (que nem as putas).

segunda-feira, 21 de dezembro de 2009

Tabela de Funções ASP Clássico

Essa é uma simples tabela de funções, com as principais funções da ASP clássico ou VBScritp como preferirem. Eu resolvi postar essas informações pois de vez em quando precisamos rever algum sistema ou mesmo website que utilize ASP clássico, e sempre preciso de uma referencia.

Função Descrição


Abs() Devolve o valor absoluto de um número
Array() Define um conjunto de valores identicos. O 1º indice tem o valor 0(zero)
Asc() Devolve e valor ASCII de um caracter
Atn() Devolve o arco-tangente de um número
CBool() Devolve True ou False de uma expressão
CByte() Devolve o valor Byte de um número
CCur() Devolve o valor na moeda currente
CDate() Devolve o valor da data corrente
CDbl() Devolve um valor em tipo DOULBLE
Chr() Devolve o caracter de um valor ASCII
CInt() Devolve um valor INTEIRO
CLong() Devolve um valor LONGO
Cos() Devolve o coseno de um angulo
CreateObject() Cria uma referencia a um objeto externo
Csng() Devolve um valor tipo SINGLE
Date() Devolve a data do servidor
DateAdd() Devolve a data + N dias
DateDiff() Devolve a diferença entre duas datas
DatePart() Devolve, a partir de uma certa data, a altura do ano
DateSerial() Devolve uma data para determinado Dia, Mes, Ano
DateValue() Devolve uma data válida
Day() Devolve o dia de uma data
Exp() Devolve o exponencial de um valor
Filter() Devolve o valor de uma determinada pesquisa num Array
Fix() Devolve o inteiro de um numero
FormatCurrency() Devolve um valor na moeda corrente
FormatDateTime() Devolve um valor na data corrente
FormatNumber() Devolve um numero em determinado formato
FormatPercent() Devolve a percentagem de um quociente
GetObject() Devolve e referencia de um objeto
Hex() Devolve o valor hexadecimal
InStr() Devolve a posição de uma string dentro de outra a contar do inicio
InStrRev() Devolve a posição de uma string dentro de outra a contar do fim
IsArray() Devolve True ou False sobre uma variavel array (Tabela)
IsDate() Devolve True ou False sobre se uma variavel é uma data valida ou não
IsEmpty() Devolve True ou False se uma variavel está vazia ou não
IsNull() Devolve True ou False se uma variavel é nula ou não
IsNumeric() Devolve True ou False se uma variável é numérica ou não
IsObject() Devolve True ou False se é um objecto válido ou não
Join() Devolve uma variável concatenando uma variável array
LBound() Devolve o menor valor da dimensão de um array
LCase() Devolve uma strig em minusculas
Left() Devolve um certo numero de caracteres á esquerda de uma string
Len() Devolve o comprimento de uma string
Log() Devolve o logaritmo de um numero
LTrim() Devolve uma string eliminando os espaços á esquerda
Mid() Devolve um numero de caracteres a partir de uma dada posição
Minute() Devolve o minuto de uma dada hora
Month() Devolve o mes de uma data
Monthdate() Devolve o nome do mes correspondente a uma data
Now() Devolve o data e a hora corrente
Oct() Devolve o valor octal de um numero
Replace() Devolve uma string alterada por outra
RGB() Devolve o valor de uma cor (R)=Red/Vermelho (G)=Green/Verde (B)=Blue/Azul
Right() Devolve um numero de caracteres á direita de uma string
Round() Devolve valores numéricos arredondados
Second() Devolve os segundos da hora corrente
Sgn() Devolve o sinal de um valor (1=positivo) (0=zero) (-1=negativo)
Sin() Devolve o seno de um angulo
Space() Devolve / introduz um numero de espaços entre duas strings
Split() Devolve um array atraves de uma string
Sqr() Devolve a raiz quadrada de um numero
StrComp() Devolve 1 ou -1 conforme as strigns são iguais ou diferentes
StrReverse() Devolve uma string invertendo os caracteres
String() Devolve um caracter repetido N vezes
Tan() Devolve a tangente de um numero
Time() Devolve a hora do sistema
Timevalue() Devolve uma hora válida
TypeName() Devolve o tipo de variável
UBound() Devolve o maior valor da dimensão de um array
Ucase() Devolve uma string em maiusculas
VarType() Devolve um numero correspondente ao tipo de variável
0-Vazia ; 1-Nula ; 2-Integer ; 3-Long ; 4-Single ; 5-Double ; 6-Currency
7-Data ; 8-String ; 9-Object ; 10-Error ; 11-Booleano ; 12-Variant ; 13-DAO
17-Byte ; 8192-Array
Weekday() Devolve o dia da semana, um numero (1=Domingo), etc.
WeekDayName() Devolve por extenso o dia da semana
Year() Devolve o ano da data


segunda-feira, 24 de setembro de 2007

Palestra Sr. Dr. Pr. Guizzardi

Achei muito interessante esse método de abordagem e desenho dos Processos (procedimentos/ fluxo da informação/ resultado final). O que me chamou mais a atenção foi quando ele disse que ao realizar um comparativo com os Métodos de Analise tradicionais o método baseado em Ontologia, se mostrou mais eficiente, inclusive o nível de detalhamento foi muito superior.

Mais um ponto que me chamou a atenção foi a importância de se ter os processos bem definidos e documentados, que é o que muitas empresas estão tentando fazer mais não sabem, ou não tem competências gerenciais para faze-lo. E na área de software a importância de se ter um produto documentado, de acordo com os padrões de modelagem de dados.

quarta-feira, 19 de setembro de 2007

Gestão do Conhecimento


Conseguir mapear e detalhar todos os processos e procedimentos realizados dentro das organizações é praticamente impossível. Principalmente quando levamos em conta que as pessoas fazem, e são parte integrante desses processos.

Muitas empresas se viram de causas curtas, quando uma geração de profissionais se aposentou, levando consigo as informações pertinentes aos seus processos(processo produtivo, administrativo...) e quais os procedimentos a serem tomados em determinadas situações, mesmo que isso estivesse documentado por exemplo num manual.

Essa informação, ou conhecimento, que é de vital importância para vida da organização, hoje vem sendo colhida e cultivada através da gestão do conhecimento. Ela trás ferramentas que dão suporte a como adquirir as informações e como passá-las para frente.
Completando:

Hoje em dia, o mundo globalizado nos oferece milhares informações divulgadas e acessiveis através de diversos meios. Ter controle, facilidade de acesso e manter um gerenciamento integrado sobre essas informações passou a ser um diferencial para que se possa atingir objetivos desejados e atualmente, gerenciar as informações passou a não ser mais suficiente, e de uma maneira integrada e relacionada, passou-se a falar de gerenciamento ou Gestão do conhecimento. Entende-se por conhecimento a informação interpretada, ou seja, o que cada informação significa e que impactos no meio cada informação pode causar, de modo que a informação possa ser utilizada para importantes ações e tomadas de decisões. Sabendo como o meio reage às informações, pode-se antever as mudanças e se posicionar de forma a obter vantagens e ser bem sucedido nos objetivos a que se propõe.

Em uma definição resumida pode-se dizer que Gestão do Conhecimento é um processo sistemático, articulado e intencional, apoiado na geração, codificação, disseminação e apropriação de conhecimentos, com o propósito de atingir a excelência organizacional.

Sistemas de Apoio a Decisão


Bem como vimos na sala de aula em debate, a cada dia as empresas estão precisando tomar decisões com maior rapidez, e para isso precisam ter uma base de conhecimento sólida para dar suporte a suas decisões. Os sistemas de apoio a decisão vem servir como uma ferramenta, muitas das vezes de alto custo, que trás o “NORTE” para as organizações, analisando e tratando informações de forma bem criteriosa. Lembrando que esses tipos de sistemas não são baratos e por tanto o nível da Empresa deve ser alto(grande empresa).

Segue abaixo uma boa definição sobre assunto:
Sistemas de apoio à decisão é uma classe de Sistemas de Informação ou Sistemas baseados em Conhecimento. Refere-se simplesmente a um modelo genérico de tomada de decisão que analisa um grande número de variáveis para que seja possível o posicionamento a uma determinada questão.

Decisão é uma escolha entre as alternativas existentes através de estimativas dos pesos destas alternativas. Apoio à decisão significa auxiliar nesta escolha gerando estas estimativas, a evolução ou comparação e escolha. O termo sistema de apoio à decisão tem sido utilizado de diferentes formas (após a década de 80) e tem recebido diferentes definições de acordo com o ponto de vista de cada autor. Finlay (1994) e outros autores definem o SAD de um modo geral como “um sistema computacional que auxilia o processo de tomada de decisão”. Turban (1995) define mais especificamente como “um interativo, flexível e adaptável sistema de informação, especialmente desenvolvido para apoiar a solução de um problema gerencial não estruturado para aperfeiçoar a tomada de decisão. Utiliza dados, provê uma interface amigável e permite ao tomador de decisão ter sua própria percepção”.

Existe uma outra definição que se encontra entre estes dois extremos. Para Keen e Scott Morton (1978), um SAD concilia os recursos intelectuais individuais com a capacidade do computador em melhorar a qualidade da decisão (“SAD são sistemas computacionais que apóiam os gerentes tomadores de decisão que são direcionados com problemas semi-estruturados”). Para Sprague e Carlson (1982), SAD são “sistemas computacionais interativos que auxiliam os tomadores de decisão utilizarem dados e modelos solucionados de problemas não-estruturados”.

Em contraste, Keen (1980) diz que é impossível dar uma definição precisa incluindo todas as facetas do SAD (“Não há definição de sistemas de apoio à decisão, somente de apoio à decisão”). No entanto, de acordo com Power (1997), o termo sistema de apoio à decisão é muito desgastado devido à sua utilização para definir muitos tipos de sistemas que dão apoio à tomada de decisão. Ele ironicamente diz que muitas vezes nem sempre um sistema computadorizado é um sistema transacional on-line (OLTP), algumas vezes você será tentado em chamá-lo de um SAD. Como podemos ver, não há uma definição universal aceita de SAD.