Excel – Modelo de Controle Bancário em VBA


Mais uma jóia do nossa fórum, que tem dado muitos bons frutos de exemplos de código e planilhas! O autor da proeza é o nosso colega, já conhecido aqui no blog, Felipe Dasi.

Palavras do próprio:

Disponibilizo para o fórum, um controle bancário que fiz em excel com banco de dados externo (acess) – a dupla entrosada :). Acho que é uma ferramenta boa que pode ser aprimorada e serve como ponto de partida para esse tipo de controle financeiro. O banco de dados é criado automaticamente ao clique da imagem “pastinha”, tambem acompanha um pequeno tutorial, na propria planilha. Abraços.

Só um comentário. O pequeno tutorial mencionado é na verdade um mega tutorial, com um detalhamento voraz do que faz a planilha em termos de funcionamento e código. Vou economizar espaço aqui e deixar que a documentação fale por si. Abaixo segue o visual do aplicativo:

Excelente para auxiliar nas tarefas de controle bancário e também como um exemplo de código em VBA. O tópico do fórum que trata desta planilha é:

http://www.tomasvasquez.com.br/forum/viewtopic.php?f=6&t=422&start=0

Download planilha

http://www.tomasvasquez.com.br/downloads/controle_bancario_felipe_dasi.zip

Bom proveito a todos!


.NET – Evitando o InvalidOperationException em aplicações Multi Thread Windows Forms

Um problema um pouco comum para quem trabalha com aplicações Windows Forms e rotinas Multi Thread, principalmente quando as rotinas multi thread interagem com os controles. Vamos imaginar uma situação típica, um aplicativo de envio de emails.

Para oferecer uma interface amigável, você expõem campos com valores editáveis, enfim, e no final do formulário, um TextBox Multiline para mostrar o andamento das tarefas, como se fosse uma janela de Output do Visual Studio. Durante a sua rotina, você quer inserir informações do estado da execução do seu algoritmo. Bem, nada mais simples do que adicionar texto ao TextBox da forma mais tradicional possível.

Bom, se fizer isso sem aplicar Multi Thread, o que você verá é a tela parada até o término da execução da rotina, o que não serve para nós. O jeito é executar a mesma em outra thread, certo? Essa é a parte fácil, já que o .NET Framework dispõem de métodos e bibliotecas bem simples para isso. Você põem para executar o aplicativo já rodando sua rotina principal em outra thread e: InvalidOperationException.

A razão do erro é simples, mas nem tanto. Todos os controles Windows são por padrão Thread-Safe. Objetos Thread-Safe só podem ser manipulados por uma thread por vez. Isso evita que estes sejam colocados em estados inválidos ou inconsistentes. São vários os casos, mas se está tendo este problema, provavelmente sabe do que estou falando.

O que é preciso fazer então? Garantir que sua thread acessa o controle de forma que não interfira em outras threads que já o estejam manipulando. Para isso, precisaremos da propriedade InvokeRequired do controle, o método Invoke e o um delegate para criar um CallBack da nossa função. Bom, nada melhor que um exemplo para melhor entender. Vou economizar tempo e usar um da própria Microsoft, com todas as explicações nos comentários:

// Delegate para permitir a chamada assíncrona
// ao método setText
delegate void SetTextCallback(string text);
 
// A thread a ser executada
private Thread demoThread = null;
 
// O evento que segue cria um nova Thread
// para execução do método ThreadProcSafe
private void setTextSafeBtn_Click(object sender, EventArgs e)
{
	this.demoThread =
		new Thread(new ThreadStart(this.ThreadProcSafe));
 
	this.demoThread.Start();
}
 
// Método que faz uma chamada ao SetText
// que faz a verificação de Thread-Safe
private void ThreadProcSafe()
{
	this.SetText("Texto do textbox.");
}
 
// Método que tenta atribuir o texto ao controle textbox1
// de forma "segura"
private void SetText(string text)
{
	// a chamada ao InvokeRequired garante que a thread atual
	// é a mesma que está manipulando o controle no momento
	// Caso não seja a mesma thread,
	// retorna true e faz a chamada ao CallBack.
	// a chamada ao metódo Invoke faz com que a thread
	// que manipula o componente chame o CallBack quando
	// liberar o controle, passando os argumentos
	if (this.textBox1.InvokeRequired)
	{
		SetTextCallback d = new SetTextCallback(SetText);
		this.Invoke(d, new object[] { text });
	}
	else
	{
		this.textBox1.Text = text;
	}
}

Em miúdos, ao tentar alterar a propriedade de texto do controle este já estiver sendo manipulado por outra thread, cria-se um enfileiramento da sua chamada. Assim, quando a thread que ocupa o controle liberá-lo, sua rotina será automaticamente executada.

A parte chata é que isso deverá ser feito para toda e qualquer propriedade que precisar ser alterada no controle sob a execução de um thread que não a principal.

O mesmo exemplo pode ser visto em VB.NET neste link:

http://www.codigofonte.net/dicas/dotnet/222_trabalhando-com-threads-em-formularios-windows

Bom proveito!

Referências:

http://msdn.microsoft.com/en-us/library/ms171728.aspx

SQL Server – Importando arquivos do Excel 2007 (xlsx) no SSIS

Pode parecer ridículo pensar que isso não é possível de ser feito da forma tradicional, mas não é. Quando você tenta importar um arquivo do Excel para o SQL Server ou SSIS, após selecionar o Data Source Microsoft Excel, mesmo que você forçe o Excel file path para um arquivo xlsx, a mensagem que aparece é:

File path contais a invalid Excel file. Please provide file with .xls extension.

Sinistro, mas tem solução, caso você não tenha o Excel 2007 para dar um Save As no formato 2003, que geralmente não pois o mais comum é você estar executando essa operação no servidor, faça da seguinte forma:

  • Mude o Data Source para Microsoft Office 12.0 Access Database Engine OLE DB Provider
    Vá em Properties
  • Aponte para o arquivo xlsx desejado no campo Fonte de dados\Data source\Server os file name
  • Se nesse momento você clicar em Test Connection, ainda assim vai receber um erro de que o formato do bando de dados não é reconhecido. Sem pânico.
  • Vá até a aba Todas\All
  • Na linha Extended Properties. Clique duas vezes sobre o campo a defina o valor para “Excel 12.0”

  • Após isso, clique em Test Connection e veja que já é possível prosseguir com a instalação.

Bom proveito!

Referências

http://dataintegrity.wordpress.com/2009/10/16/xlsx/

Artigo – Educação à Distância e seus impactos na formação dos profissionais


O texto abaixo faz parte da Introdução ao Trabalho de Conclusão de Curso que estou construindo atualmente para finalizar a pós graduação.  É uma honra poder compartilhar tal conteúdo, até porque boa parte dele já pode ser encontrada em trabalhos acadêmicos do ramo. Na esperança de poder colaborar com os interessados no assunto, publico-o para apreciação.

Tomás

Apesar do conceito do EaD ir  além do uso de sistemas computacionais, este texto se atém somente aos que o utilizam, que compõem a  parcela significante nos dias atuais.

O uso do Ensino à Distância (EaD) tem crescido de forma considerável no cenário mercadológico nos últimos anos. Em alguns meios, tê-lo como opção é quase uma prática natural, como em cursos de especialização, onde parte deste ou até mesmo sua totalidade já é feita utilizando o modelo o EaD.

Isso evidencia a aceitação destes setores do mercado do modelo de ensino e também o amadurecimento dos sistemas de apoio (ferramentas LMS – Learning Management System), componente importante para a expansão deste modelo no mercado. As vantagens do EaD sobre o modelo tradicional já é um assuntos muito discorrido, conforme destaca NORONHA (2007):

A principal vantagem de um EaD sobre o Presencial está relacionada com a forma de o curso ser ministrado. Em um curso a distância, as regras não são tão rígidas, e o método de ensino não é tão sistemático, existindo uma maior flexibilidade no conteúdo a ser abordado. Em alguns momentos, pode-se parar o tema principal que está sendo abordado e voltar ao tema da aula anterior para fazer um esclarecimento mais detalhado; em uma sala de aula convencional, sendo conduzida pelo professor, talvez isso não aconteça. (NORONHA, 2007, p.14)

O fato é que mesmo com todo este crescimento e penetração, ainda há resistência por parte dos contratantes em aceitar profissionais formados no modelo à distância da mesma forma como é feita com modelo tradicional. Parte da culpa ainda pode ser compartilhada com próprios profissionais, uma vez que estes ainda preferem o ensino presencial.

Porém, conforme estudos realizados em universidades que experimentaram a implantação e testaram sua aceitação, mostram vantagens na formação baseado no ensino a distância. As vantagens, no entanto são significativas e até mesmo determinantes no momento da avaliação de um profissional.

Por exemplo, alguns aspectos que são identificados em profissionais formados em cursos baseados em EaD são que estes demonstraram um padrão de comportamento que o destacam dos que utilizam o ensino presencial, principalmente a autonomia e iniciativa. Entre outros, são o comprometimento com o estudo, uma vez que comprovadamente o professor não é o único responsável pelo seqüenciamento do estudo, tornando-o o discente mais responsável pela sua evolução no curso. O discente se torna mais independente, uma vez que materiais complementares tornam-se parte integrante e indispensável do modelo EaD, fazendo com que o professor não seja o único detentor do conhecimento. Ele passa a ter obrigatoriamente contato com diversos pontos de vista vindo destes materiais e também do apoio de tutores, comumente presentes nos cursos de EaD. Fica evidente que o aluno se torna explicitamente o maior responsável pelo seu sucesso no curso, pois este conta mais o seu esforço e não mais sua presença.

O fato é comprovado já que a sala de aula está disponível o tempo todo, e não somente durante o horário da aula. Sob este cenário, o professor torna-se praticamente um orientador ou motivador dos estudos.

É evidente que para acompanhar um curso neste modelo, é preciso um nível de dedicação superior ao que se investe para o sucesso em um curso presencial, conforme destaca OLIVEIRA (2009):

[…]  o  estudante  de Educação  a Distância  precisará  desenvolver  ou  aprimorar determinadas  habilidades  e  características  e  estabelecer  rotinas  para  aprender  a aprender,  sem  a  presença  e  a  cobrança  constantes  de  um  professor.  Entre  outras coisas deverá:  ser auto motivado, ou  seja, buscar em  si a motivação necessária para realização do curso; ser capaz de auto-organizar sugestões; ser capaz de trabalhar em grupo  de  forma  colaborativa  e  cooperativa;  ser  disciplinado,  a  fim  de  cumprir  os objetivos  que  estabeleceu  para  si  mesmo;  ser  responsável  por  seu  próprio aprendizado;  e,  estar  consciente  da  necessidade  de  aprendizagem  continuada  pelo resto da vida. (OLIVEIRA, 2009, p.72)

O que se espera disso é o nascimento de uma nova geração de profissionais que serão naturalmente auto suficientes em seu melhoramento e capacitação. Também é garantido um bom nível de conhecimento dos recursos de informática por parte do aluno, parte integrantes dos sistemas EaD baseados na internet, foco deste texto. “Verifica-se que os acadêmicos têm o bom conhecimento a respeito dos softwares empresariais, como pode ser visto em relação ao Word, Excel e PowerPoint” (ARIEIRA., 2009, p.326).

O resultados obtidos dos experimentos de cursos utilizando a aplicação plena de EaD são positivos tanto do ponto de vista da instituição como por parte dos discentes, conforme mostra o estudo de OLIVEIRA (2009).

Quanto  a  qualidade  do  curso  de  Licenciatura  em  Ciências  Biológicas  na modalidade  a  distância,  a  maioria  dos  alunos  do  pólo  Garanhuns  respondeu  que indicaria o curso a outras pessoas. […]. Ainda percebe-se que, grande parte acredita que o curso prepara  para  exercer  a  profissão,  outros  dizem  que  prepara  parcialmente  e  só  a minoria  não  considera  que  estarão  preparados  para  exercer  uma  profissão  de professor. (OLIVEIRA, 2009, p.76)

É claro que a qualidade do curso ter total  influência sobre a opinião dos alunos, da mesma forma que o curso presencial.

É importante evidenciar que esta não é uma defesa a completa substituição do ensino presencial pelo EaD, como muitos devem admitir. O EaD prioritariamente deve ser utilizado como um complemento ao ensino presencial, até por uma questão de adaptação. ARIEIRA cita:

[…] o papel principal da EaD não é o de substituir a educação tradicional, mas complementá-la na individualização dos conhecimentos de cada cidadão, de acordo com seus perfis, preferências e habilidades cognitivas. Outra função da EaD é permitir que pessoas excluídas do modelo tradicional de educação possam ser incluídas e ter seus direitos de acesso à educação e à informação garantidos. (ARIEIRA, 2009, p.322)

Após um primeiro momento, é esperada uma expansão deste movimento, tornando-o cada vez mais presente nas instituições de ensino, principalmente partindo da demanda dos próprios profissionais que reconhecerão o valor do método de EaD.

Em um segundo momento, espera-se que as empresas passem a dar o valor devido para os profissionais que passam por este tipo de formação ou até que dão preferência para este.

Mas é preciso atentar para o cenário atual do EaD nas instituições de ensino atuais. Algumas delas têm encarado sua aplicação apenas como uma forma de apresentar inovação em sua grade de cursos ou como economia de recursos ou “cadeiras” em sala de aula, uma vez que o custo por aluno em ensino presencial é significativamente superior ao EaD. Como conseqüência, os investimentos realizados tem gerado opções de cursos cujo EaD não passa de uma simples disponibilização de páginas ou materiais online e um portal com pouca interação, violando por completo o conceito deste modelo.

NORONHA (2007) coloca como requisitos para o software que aplique EaD funcionalidades que vão muito além da simples disponibilização de materiais online, priorizando principalmente recursos que promovam interação como Chat, Fórum, Grupos de discussão, vídeos interativos no modelo WebCast.

Torna-se então imprescindível um acompanhamento e feedback ativo por parte dos discentes em relação a instituições de ensino que praticam levianamente o aplicação de EaD, se é que pode-se admitir que o fazem, por parte das instituições de ensino no investimento correto e aplicável do método de EaD, baseado em casos de sucesso e várias outras instituições e também por parte das empresas na aceitação, valorização e incentivo aos profissionais no uso de EaD.

Referências

NORONHA, Maria do Carmo Garcia; ALCÂNTARA, André; REHEME, Michele. Ensino a Distância – Um Panorama de Mudanças;  Revista de Informática Aplicada, n. 01, 2007. p.14, vol. 3 Disponível em: <http://seer.uscs.edu.br/index.php/revista_informatica_aplicada/article/viewArticle/274> acesso em 12/06/2010.

OLIVEIRA LIMA, M., BARROS, D., MORAES, R.. A EDUCAÇÃO A DISTÂNCIA NA UNIVERSIDADE DE PERNAMBUCO – UPE. Educação a Distância e Práticas Educativas Comunicacionais e Interculturais, América do Norte, 2, dez. 2009. Disponível em: <http://www.edapeci-ufs.net/revista/ojs-2.2.3/index.php/edapeci/article/view/4>. Acesso em: 27 Jun. 2010.

ARIEIRA, Jailson de Oliveira et al . Avaliação do aprendizado via educação a distância: a visão dos discentes. Ensaio: aval.pol.públ.Educ.,  Rio de Janeiro,  v. 17,  n. 63, Junho  2009 .   Disponível em: <http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0104-40362009000200007&lng=en&nrm=iso>. Acessado em 27 Junho 2010.