Pular para o conteúdo principal

Postagens

Mostrando postagens de 2010

OSQL com Integrated Security

Um post “relâmpago” para os adeptos do prompt de comandos.
O SQL Server possui um utilitário para executar comandos SQL em servidores locais ou remotos que é instalado juntamente com o servidor chamado “OSQL”.
A sintaxe básica do comando é:
osql –S<servidor> –U<usuario> –P<senha>uma vez aberto, ele aceita os mesmos comandos que estão disponíveis no SQL Server Management Studio com um detalhe que ao final de cada instrução, deve se acrescentar “go” na linha seguinte seguida da tecla ENTER.
A dica aqui é como usar este utilitário usando o Integrated Security que consiste em usar o usuário que está cadastrado no Windows para autenticação, lembrando que o SQL Server deve estar configurado para aceitar este tipo de autenticação.
Simplesmente passe o nome do servidor sem os parâmetros “-U” e “-P” seguido do parâmetro "-E". As figuras a seguir demonstram uma utilização com o banco de dados “Northwind”.



Cancelando mudança de página em um "TabControl"

Olá, um micropost para mostrar como você pode cancelar a mudança de página em um controle TabControl do Visual Studio.



Imagine uma situação em que o seu usuário escolheu mudar de página, mas, por algum motivo você quer abortar esta mudança mantendo o foco na página atual.

Geralmente, tratamos o evento "OnSelectedIndexChanged" do componente "TabControl". Mas, neste caso, não é possível abortar a mudança de página.

Para isso poder ser feito, escreva código no evento "Validating" mas do controle "TabPage". Se quise cancelar a mudança de página, faça um código como o abaixo:


private void tabPage1_Validating(object sender, CancelEventArgs e) {    if (MessageBox.Show("Mudar de página mesmo?", "Atenção", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)    {           // cancela a mudança de página           e.Cancel = true;    } }

o código "e.Cancel = true" vai manter o foco na página atual.

Avaliando as visitas do seu Twitter

Uma das ferramentas mais populares que surgiu foi sem dúvida nenhuma o Twitter. Mas, para alguns, além de passatempo, é também um meio de divulgação de conhecimento e promoção de sua carreira.Por causa da sua limitação de 140 caracteres no post, surgiram utilitários que encurtam o tamanho dos links que são publicados. Muitos destes muito úteis.Hoje quero falar de um encurtador de links brasileiro, o “Migre.me” (http://migre.me). Este encurtador possui uma característica interessante, permite que você veja quantas pessoas clicaram no link que você encurtou com eele e publicou no Twitter.Para encurtar basta acessar o link acima e digitar o link que você quer encurtar:Após isto, copie e cole o link gerado no seu post:A avaliação de quantas visitas você teve é feita através da digitação do endereço do site seguido do seu ID do Twitter precedido pelo sinal “@”. A página de avaliação parece-se com a da figura:Esta ferramenta permite apenas que se verifique quantos clicaram no seu link, mas,…

Usando o LINQPAD para testar suas DLL

No post anterior eu mostrei como é possível criar um script em C# dentro da janela de consultas do programa LINQPAD para que você possa executar os códigos que estão em suas DLL´s do framework .NET.Hoje eu quero demonstrar que estas DLL´s podem conter formulários Windows e estes serem executados pelo LINQPAD.No seu projeto de “class library” adicione um Windows Form e inclua os controles configurando-os como na tabela abaixo:ControlePropriedadeValorFormTextCálculo da área de um quadriláteroSize366;171(Name)frmCalculoAreaLabelTextAlturaTextBox(Name)txtAlturaLabelTextLarguraTextBox(Name)txtLarguraButton(Name)btnCalcularTextCalcular…Alinhe os controles para que fiquem com uma aparência aproximada à da figura:Este formulário vai calcular a área de um quadrilátero multiplicando a altura pela largura. Dê um duplo clique no controle “button” e insira o código que é demonstrado abaixo:   12///<summary>   13/// Faz o cálculo a partir dos dados digitados   14///</summary>   15///<…

LINQPAD e DLL

Recentemente coloquei aqui alguns recursos do programa LINQPAD.Este, permite que se executem consultas SQL, LINQ Quueryes e trechos de código de C# ou VB.NET.Mas, hoje quero mostrar recursos mais avançados desta ferramenta.É possível que você a utilize para testar suas DLL’s e eu descobri há pouco tempo esta capacidade quando precisei fazer testes em uma biblioteca extensa na empresa em que trabalho.Comece criando um projeto do tipo “Class Library” no seu Visual Studio. Adicione uma classe chamada “Arquivo”. Esta classe terá um único método cuja funcionalidade é receber um texto, um nome de arquivo e gravar este arquivo. Veja o código na listagem abaixo:    5publicclassArquivo    6     {    7publicstaticbool GravarTexto(string Texto, string Arquivo)    8         {    9using (TextWriter f = File.CreateText(Arquivo))   10             {   11                 f.Write(Texto);   12                 f.Flush();   13                 f.Close();   14returntrue;   15             }   16         } Par…

Domando o controle “ComboBox” (Windows Forms)

Um dos controles mais úteis dentro das aplicações Windows Forms no framework .NET é o controle “ComboBox”. Entretanto, às  vezes ele parece não funcionar muito bem.Geralmente, quando você usa este controle e digita o texto para ser pesquisado dentro dos ítens, apenas a primeira letra dos itens é que é buscada.Vou demonstrar como controlar isto para o controle buscar o nome conforme for digitado.Este exemplo eu fiz usando o Visual Studio 2010 mas, funciona também com outras versões.Crie uma aplicação do tipo “Windows Forms” usando o menu “File >> New >> Project”. Na janela configure para “Windows Forms Application”. Arraste um componente “Label” e outro “ComboBox”. Configure-os conforme a tabela abaixo demonstra:ComponentePropriedadeValorComentáriosLabelTextNomesComboBoxDropDownStyleDropDownListUse este modo para restringir apenas aos itens que estão listados na propriedade Items.ItemsAna
Maria
Paula
Josiane
BeatrizExecute o pr…

Data Tables – Parte IV

Verificando se uma determinada coluna existe em um objeto DataTableÉ muito comum ao se trabalhar com projetos comerciais que fazem uso de banco de dados, termos várias versões de tabelas sendo usada ao mesmo tempo.Por exemplo, você possui uma aplicação que é usada por vários clientes. Eventualmente você altera a estrutura do seu banco de dados.Normalmente você vai enviar scripts para fazer update da estrutura das tabelas do banco de dados, entretanto, eventualmente, por vários motivos, estes scripts podem não ser executados, falhando em atualizar a estrutura da tabela.Considerando uma situação destas, se você tiver uma operação com a tabela e fizer referência para uma coluna que não exista, isto irá causar um erro.Por exemplo, a tabela do primeiro post. Vamos tentar acrescentar dados para uma coluna chamada “Preco” que ainda não existe:    1 DataTable TabelaDeExemplo = new DataTable("instrumentos");    2    3 TabelaDeExemplo.Columns.Add(    4new DataColumn     5     {    6  …

Data Tables – Parte III

Continuando com os posts sobre DataTables chegou a  hora de inspecionar quais os campos fazem parte da estrutura da tabela.Isto pode ser útil caso tenhamos a necessidade de mostrar os nomes dos campos e os tipos de dados ou ainda, verificar o tipo de dado do campo antes de incluir um valor.Uma tabela possui uma coleção de objetos do tipo DataColumn. Assim, para descobrirmos as informações sobre sua estrutura, basta inspecionarmos as principais propriedades de cada ítem da coleção.A tabela abaixo demonstra algumas das principais propriedades de DataColumn:PropriedadeDescriçãoAutoIncrementDefine se a coluna é um campo inteiro para numeração automática. Geralmente este tipo de campo é usado para definir chaves primárias de tabelas sendo o seu preenchimento feito automaticamente pelo banco.AutoIncrementSeedIndica qual é o número inicial para campos de numeração automática.AutoIncrementStepDefine qual o incremento numérico para o campo de auto numeração.CaptionUsado para armazenar o texto …

Data Tables – Parte II

No post anterior demonstrei como criar um objeto DataTable na memória com a estrutura de campos, seus tipos e tudo mais.Pode parecer um pouco estranho trabalhar com este tipo de objeto desvinculado de um banco de dados, mas, o que eu pretendo trazer para você é um pouco mais de conhecimento do funcionamento das classes do framework .Net.Quando estamos trabalhando com bancos de dados é muito comum nos concentrarmos em como ler e persistir os dados no servidor, entretanto, existem situações em que podemos precisar trabalhar com os dados já na memória, quer seja por impossibilidade de conexão tendo de fazer o trabalho off line, quer seja para fazer todo o trabalho antes de persistir no banco ou, ainda, trabalhar com os dados já carregados evitando conexões desnecessárias com o banco.No post de hoje vou dar um exemplo de como inserir registros na tabela que criamos na primeira parte.Inserindo registros na DataTablePrimeiramente crie um objeto do tipo DataRow declarando apenas, sem criar u…

Data Table – Parte I

Um dos recursos mais interessantes do Microsoft .Net é a possibilidade de trabalhar com tabelas de dados tipadas diretamente na memória.Você pode definir uma estrutura para os dados na memória como faria em um banco de dados convencional. Além disto, pode fazer as operações convencionais como:Inserir registros. Executar consultas. Editar os dados. Definir campos calculados. Excluir registro. Gravar os dados em um arquivo XML no disco. Uma aplicação sugerida para este recurso é para quando você precisar trabalhar com diversos registros na memória mas sem conectar-se ao banco de dados.Definindo a estrutura da tabelaA classe usada para criar está em “System.Data” então, acrescente esta biblioteca nos “usings” do seu código. Crie uma nova instância como no exemplo abaixo:
DataTable TabelaDeExemplo = new DataTable("instrumentos");O construtor desta classe permite várias opções, no entanto, é mais comum passarmos apenas um nome para a tabela que será criada ou nem isto.Use um nome …

ASP.NET em servidor Windows 64

Após um longo período estou de volta.Gostaria de colocar uma dica para quem está trabalhando com desenvolvimento ASP.NET.Recentemente, fazendo o deploy de um projeto em um servidor de 64 bits, ao rodar a aplicação, que usava uma tabela do MS Access para armazenamento temporário de dados, vi a mensagem “Erro preenchendo <nome da tabela>. O provedor ‘Microsoft.Jet.OLEDB.4.0’ não está registrado na máquina local”. A figura abaixo demonstra a mensagem na janela do browser.Esta mensagem só acontecia quando a aplicação precisava acessar a tabela.Inicialmente tentei fazer um upgrade o JET mas não deu certo.Também compilei a aplicação ASP deixando-a com a plataforma “target” como X86 e ainda assim não deu certo.O que resolveou foi inicialmente compilar a aplicação realmente como X86 e em seguida configurar o IIS para que pudesse executar aplicativos de 32 bits.Para isso, abra no servidor o gerenciador do IIS. Você precisará de permissão de usuário administrativo. Na janela “Conexões” se…

E esse erro: An overflow occurred while converting to datetime?

Recentemente, trabalhando em um projeto de mobilidade com C#/Visual Studio me deparei com a mensagem de erro:

"An overflow occurred while converting to datetime."

O problema acontecia quando eu fazia inserção de registro na tabela. O detalhe mais importante é que na tabela não havia nenhuma coluna com o tipo de dados "DateTime".

Após virar a Internet de cabeça para baixo (thank you BING), e do avesso (thank you too Google), achei uma indicação em neste link que me ajudou a resolver.

No meu caso, estava se tentando armazenar em um campo decimal o valor com um número de casas decimais maior do que o suportado.

Então, bastou eu limitar o tamanho das casas decimais na entrada dos parâmetros para a inclusão do registro e o problema foi resolvido.

Infelizmente, há um erro na mensagem do framework visto que não se trata de inclusão em campo DateTim.

Links da Semana - 14/06/2010

Yield
http://feeds.giggio.net/~r/DotNetUnplugged/~3/ccbXzJTnLpU/post.aspx

Vídeos sobre WCF
http://www.israelaece.com/?tag=/videos

Readability - Facilitador de leitura para sites
http://lab.arc90.com/experiments/readability/

DataGrid em wpf 3.5
http://www.linhadecodigo.com.br/Artigo.aspx?id=2163

Codeplex/WPF
http://wpf.codeplex.com/

LINQPad 4 – Funcionalidade quase escondida

O aplicativo Linq Pad está na versão 4. Além de permitir conectar-se ao SQL Server e realizar consultas usando SQL e LINQ existe uma funcionalidade bacana meio que escondida.Você pode usar o programa para também fazer seus testes com C#.Abra o programa e no campo “Language” (figura) mude para “C# Statement(s)”.Escreva um código do C# como por exemplo, o que se segue abaixo:    1string[] dias = { "segunda", "terça", "quarta", "quinta", "sexta", "sábado", "dominigo" };    2    3foreach(varsindias)    4Console.WriteLine(s); Para executar o código pressione F5, se tudo estiver correto, o resultado é apresentado logo abaixo:O download do programa na sua versão gratuita pode ser feita em: http://www.linqpad.net.Existe uma versão gratuita que inclui o recurso de auto completar o código, entre outras coiasas.

Links da semana (05/06/23010) - tá atrasado, eu sei...

.NET – Corrigindo o erro DataGridViewComboBoxCell Value is not Valid
http://www.tomasvasquez.com.br/blog/desenvolvimento/net-corrigindo-o-erro-datagridviewcomboboxcell-value-is-not-valid

Calendário da copa
http://www.marca.com/deporte/futbol/mundial/sudafrica-2010/calendario.html

Inciando com programação paralela
http://blogs.msdn.com/b/csharpfaq/archive/2010/06/01/parallel-programming-in-net-framework-4-getting-started.aspx

Windows Embeded Compact 7
http://meiobit.com/66610/windows-embedded-compact-7-oh-boy/

C# Programming Tips
http://www.codeguru.com/csharp/csharp/cs_misc/article.php/c17299?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%253A+codeguru%252Fcsharp+%2528Codeguru%253A+Csharp%2529


8 frases que você nunca deve dizer ao seu chefe
http://computerworld.uol.com.br/carreira/2010/06/02/oito-frases-que-voce-nunca-deve-dizer-ao-seu-chefe/

DOWNLOAD
LINQPAD4
http://www.linqpad.net

PC WIZARD
http://meiobit.com/66692/download-pc-wizard/

Links da semana (28/05/2010)

LINQ to Objects
http://msdn.microsoft.com/en-us/library/bb397919.aspx

Visual Studio 2010 Express
http://www.microsoft.com/express/Downloads/

Try stopping
http://theminimalistpath.com/2010/05/try-stopping/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+theminimalistpath+%28The+Minimalist+Path%29

Medidor de recursos do sistema para Windows 7
http://tweaks.com/articles/42403/system-performance-meters-on-the-windows-7-taskbar/

Dia do orgulho Nerd
http://tecnologia.terra.com.br/noticias/0,,OI4448847-EI12884,00-Dia+do+Orgulho+Nerd+e+celebrado+nesta+terca.html

Download do framework 4.0
http://www.microsoft.com/downloads/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992&displaylang=en

Links da Semana (16/05/2010 a 21/05/2010)

Errando e aprendendo
http://feeds.giggio.net/~r/DotNetUnplugged/~3/_LWN-0oWM70/post.aspx

Como delegar tarefas
http://computerworld.uol.com.br/carreira/2010/05/21/como-delegar-tarefas-e-liderar-com-eficiencia/

Como ter o notebook roubado
http://info.abril.com.br/noticias/blogs/geek-list/sem-categoria/5-maneiras-de-ter-seu-notebook-roubado/

Humor (humor???) nerd B-P
http://xkcd.com

Classes: cuidado com esse inicializador!

Com o lançamento da versão 3.x do Microsoft .NET Framework, algumas facilidades foram acrescentadas na inicialização de objetos.Você não precisa – embora deva– definir um construtor para a classe para que as propriedades sejam incializadas, logo, tornou-se possível ter um codigo semelhante ao seguinte:    8publicclassFuncionario    9 {   10publicstring Nome { get; set; }   11publicstring Funcao { get; set; }   12publicdecimal Salario { get; set; }   13   14publicvoid Imprime()   15    {   16Console.WriteLine("Nome: {0}, função: {1}, salário {2:n2}",   17          Nome, Funcao, Salario);   18    }   19 } Sendo que esta classe pode ser inicializada da seguinte forma:   20publicclassProgram   21 {   22publicstaticvoid Main(string[] args)   23    {   24       Funcionario meuFuncionario = new Funcionario   25       {   26          Nome = "Vladimir",   27          Funcao = "Programador"   28       };   29   30       meuFuncionario.Imprime();   31    }   32 } Mas,…