HI,
Hoje tava bricando um pouco com um exemplo que fiz em Asp.net acessando um arquivo .rpt do Crystal Report. Já tinha conseguido visualizar e passando um parâmetro.
Para gerar um pdf a partir desse relatório, usei essas dicas:
Generate a PDF File using CrystalReports
http://www.codeproject.com/Articles/16379/Generate-a-PDF-File-using-CrystalReports
How can I export the crystal report to PDF directly?
http://forums.asp.net/t/1585859.aspx/1
O primeiro exemplo salva um arquivo pdf no disco, o segundo exibe o relatório no browser.
No segundo link, o código que usei foi esse:
MemoryStream oStream; // using System.IO
oStream = (MemoryStream)
oRpt.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/pdf";
Response.BinaryWrite(oStream.ToArray());
Response.End();
No primeiro link não usei a funçao toda, só a parte que me interessava, a que salva no disco.
Fiquem na Paz!!!!
quarta-feira, outubro 03, 2012
Erro NullPointerException ao usar notifyDataSetChanged no Android
HI,
Vou contar um pouco da história primeiro.
Resolvi colocar uma opção de busca em uma ListActivity. Coisa simples, apenas um like no whera da query de pesquisa. Fazia um busca e não atualizava a tela e quando eu pressionava algum item dava erro. É que a query não retornava nada e dava erro, só percebi que a query não tava retornando nada depois de um bom tempo. Para atualizar eu precisava usar o comando notifyDataSetChanged() (detalhe: se a query retorna algum registro, a tela era atualizada, a bronca era só quando não retornava registros)
Esse é o bloco de comandos que atualiza a tela, a list ou uma mensagem indicando que não retornou nada.
private final Handler handler = new Handler() {
@Override
public void handleMessage(final Message msg) {
progressDialog.dismiss();
if ((dias == null) || (dias.size() == 0)) {
empty.setText("Listagem Vazia");
} else {
mAdapter = new MyCustomAdapter();
setListAdapter(mAdapter);
}
}
};
Coloquei o comando notifyDataSetChanged() após o empty.setText("Listagem Vazia"); e ficou funcionando blz. Mas... quando fui testar num tablet e não tinha registro ainda, quando fui acessar a tela, deu erro de java.lang.NullPointerException. Fiquei sem entender um pouco por que fui testar no smartphone excluíndo todos os registro e mostrou a mensagem Listagem Vazia, mas quando sair e voltei pra tela, deu o mesmo erro. Pesquisando mais uma vez no google, encontrei a solução, graças a Deus e a quem colocou.
o bloco de comando ficou assim:
private final Handler handler = new Handler() {
@Override
public void handleMessage(final Message msg) {
progressDialog.dismiss();
if ((dias == null) || (dias.size() == 0)) {
empty.setText("Listagem Vazia");
if (mAdapter != null){
mAdapter.notifyDataSetChanged();
}
} else {
mAdapter = new MyCustomAdapter();
setListAdapter(mAdapter);
}
}
};
Achei aqui
Android java.lang.RuntimeException: Unable to resume activity
http://stackoverflow.com/questions/10897551/android-java-lang-runtimeexception-unable-to-resume-activity
foi preciso colocar um teste para saber se o adapter era null.
Agora tá 100% o lance da pesquisa
Fiquem na Paz!!!
Vou contar um pouco da história primeiro.
Resolvi colocar uma opção de busca em uma ListActivity. Coisa simples, apenas um like no whera da query de pesquisa. Fazia um busca e não atualizava a tela e quando eu pressionava algum item dava erro. É que a query não retornava nada e dava erro, só percebi que a query não tava retornando nada depois de um bom tempo. Para atualizar eu precisava usar o comando notifyDataSetChanged() (detalhe: se a query retorna algum registro, a tela era atualizada, a bronca era só quando não retornava registros)
Esse é o bloco de comandos que atualiza a tela, a list ou uma mensagem indicando que não retornou nada.
private final Handler handler = new Handler() {
@Override
public void handleMessage(final Message msg) {
progressDialog.dismiss();
if ((dias == null) || (dias.size() == 0)) {
empty.setText("Listagem Vazia");
} else {
mAdapter = new MyCustomAdapter();
setListAdapter(mAdapter);
}
}
};
Coloquei o comando notifyDataSetChanged() após o empty.setText("Listagem Vazia"); e ficou funcionando blz. Mas... quando fui testar num tablet e não tinha registro ainda, quando fui acessar a tela, deu erro de java.lang.NullPointerException. Fiquei sem entender um pouco por que fui testar no smartphone excluíndo todos os registro e mostrou a mensagem Listagem Vazia, mas quando sair e voltei pra tela, deu o mesmo erro. Pesquisando mais uma vez no google, encontrei a solução, graças a Deus e a quem colocou.
o bloco de comando ficou assim:
private final Handler handler = new Handler() {
@Override
public void handleMessage(final Message msg) {
progressDialog.dismiss();
if ((dias == null) || (dias.size() == 0)) {
empty.setText("Listagem Vazia");
if (mAdapter != null){
mAdapter.notifyDataSetChanged();
}
} else {
mAdapter = new MyCustomAdapter();
setListAdapter(mAdapter);
}
}
};
Achei aqui
Android java.lang.RuntimeException: Unable to resume activity
http://stackoverflow.com/questions/10897551/android-java-lang-runtimeexception-unable-to-resume-activity
foi preciso colocar um teste para saber se o adapter era null.
Agora tá 100% o lance da pesquisa
Fiquem na Paz!!!
Marcadores:
android,
erro,
list,
listactivity,
null
terça-feira, outubro 02, 2012
Saber se uma string é um número válido
HI,
Precisei de uma função para saber se o texto de uma busca era formado apenas por números. Achei uma rotina que inda até se o número é valido. Estou usando em um aplicativo android.
Se o usuário digitar apenas um número, aí eu também pesquiso pelo _id do registro, além de pesquisar por outros dois campos varchar.
Achei aqui
How to check if String() value is numeric
http://www.coderanch.com/t/401142/java/java/check-if-String-value-numeric
Essa é a rotina
if ("-2324.00".matches("((-|\\+)?[0-9]+(\\.[0-9]+)?)+")) {
System.out.println("Is a number");
} else {
System.out.println("Is not a number");
}
Fiquem na Paz!!!
Precisei de uma função para saber se o texto de uma busca era formado apenas por números. Achei uma rotina que inda até se o número é valido. Estou usando em um aplicativo android.
Se o usuário digitar apenas um número, aí eu também pesquiso pelo _id do registro, além de pesquisar por outros dois campos varchar.
Achei aqui
How to check if String() value is numeric
http://www.coderanch.com/t/401142/java/java/check-if-String-value-numeric
Essa é a rotina
if ("-2324.00".matches("((-|\\+)?[0-9]+(\\.[0-9]+)?)+")) {
System.out.println("Is a number");
} else {
System.out.println("Is not a number");
}
Fiquem na Paz!!!
sexta-feira, setembro 28, 2012
Centralizar o menu na horizontal usando CSS
HI,
Não precisei mais usar esse código, mas deixo aqui caso alguém precise.
When Is a Float Not a Float?
http://www.search-this.com/2007/09/19/when-is-a-float-not-a-float/
Fiquem na Paz!!!
Não precisei mais usar esse código, mas deixo aqui caso alguém precise.
When Is a Float Not a Float?
http://www.search-this.com/2007/09/19/when-is-a-float-not-a-float/
Fiquem na Paz!!!
Marcadores:
centralizar,
css,
div,
menu
Commit em uma procedure no firebird
HI,
Vou explicar primeiro a situação.
Em uma procedure para retornar o resultado de uma query, precisei primeiro popular a tabela com um select/insert. A procedure executou sem problemas, mostrou o resultado no grid do ibexpert, mas quando fui olhar na tabela, não tinha registro. Deduzi que era a falta do commit, mas aí não foi possível executar a procedure, dizia que o comando não era entendido. Pesquisando no google encontrei a solução.
How do I use transactions in Firebird?
http://stackoverflow.com/questions/6256678/how-do-i-use-transactions-in-firebird
Tive que colocar esse comando no começo da procedure
IN AUTONOMOUS TRANSACTION
DO
Fiquem na Paz!!!
Vou explicar primeiro a situação.
Em uma procedure para retornar o resultado de uma query, precisei primeiro popular a tabela com um select/insert. A procedure executou sem problemas, mostrou o resultado no grid do ibexpert, mas quando fui olhar na tabela, não tinha registro. Deduzi que era a falta do commit, mas aí não foi possível executar a procedure, dizia que o comando não era entendido. Pesquisando no google encontrei a solução.
How do I use transactions in Firebird?
http://stackoverflow.com/questions/6256678/how-do-i-use-transactions-in-firebird
Tive que colocar esse comando no começo da procedure
IN AUTONOMOUS TRANSACTION
DO
Fiquem na Paz!!!
Marcadores:
commit,
controle,
firebird,
transação,
transaction
sexta-feira, setembro 21, 2012
Vídeo do exemplo Asp.Net com MySQL
HI,
Gravei esse vídeo ontem para mostrar como tá ficando um site que estou fazendo utilizando Asp.Net com MySQL. Apenas treinando.
Usei esse programa para gravar esse vídeo
http://www.baixaki.com.br/download/autoscreenrecorder.htm
Fiquem na Paz!!!
Gravei esse vídeo ontem para mostrar como tá ficando um site que estou fazendo utilizando Asp.Net com MySQL. Apenas treinando.
Link do vídeo: http://www.youtube.com/watch?v=WrG7ePFkBjs
Tem dois posts aqui no blog sobre esse assunto
Começando com Asp.Net e MySQL
Selecionar a linha do GridView ao clicar no Asp.Net
Usei esse programa para gravar esse vídeo
http://www.baixaki.com.br/download/autoscreenrecorder.htm
Fiquem na Paz!!!
quinta-feira, setembro 20, 2012
Selecionar a linha do GridView ao clicar no Asp.Net
HI,
Antes eu usava o recurso padrão do GridView, o de habilitá-lo para ser selecionável. Com essa opção ativa é exibido um comando para selecionar a linha. Mas dessa vez eu queria selecionar a linha do grid ao clicar nela, sem precisar desse recurso ativo.
Achei essa solução
Select a row in an asp:GridView without using a Select Command
http://www.geekzilla.co.uk/View9FC28EE6-ACB0-4F51-BFE4-38B0B10134D5.htm
Tranquilo. Estava indo tudo muito bem até eu resolver adicionar duas colunas, uma para editar e outra para excluir o registro. Ao tentar selecionar uma linha pela segunda vez dava um erro de _doPostBack não definido.
Pois bem, depois de um certo tempo procurando, madrugada, já tava pensando em voltar ao modo tradicional de selecionar a linha. Mas graças a Deus consegui achar uma solução.
Select GridView Row Without Postback OnClick Of Cell JavaScript
http://csharpdotnetfreak.blogspot.com/2012/08/select-gridview-row-onclick-of-cell-javascript.html
Agora tá tudo beleza. Esse é o meu grid.
Antes eu usava o recurso padrão do GridView, o de habilitá-lo para ser selecionável. Com essa opção ativa é exibido um comando para selecionar a linha. Mas dessa vez eu queria selecionar a linha do grid ao clicar nela, sem precisar desse recurso ativo.
Achei essa solução
Select a row in an asp:GridView without using a Select Command
http://www.geekzilla.co.uk/View9FC28EE6-ACB0-4F51-BFE4-38B0B10134D5.htm
Tranquilo. Estava indo tudo muito bem até eu resolver adicionar duas colunas, uma para editar e outra para excluir o registro. Ao tentar selecionar uma linha pela segunda vez dava um erro de _doPostBack não definido.
Pois bem, depois de um certo tempo procurando, madrugada, já tava pensando em voltar ao modo tradicional de selecionar a linha. Mas graças a Deus consegui achar uma solução.
Select GridView Row Without Postback OnClick Of Cell JavaScript
http://csharpdotnetfreak.blogspot.com/2012/08/select-gridview-row-onclick-of-cell-javascript.html
Agora tá tudo beleza. Esse é o meu grid.
Lembrem-se: O segredo é a palavra chave.
Fiquem na Paz!!!
Marcadores:
asp.net,
click,
dopostback,
erro,
gridview,
onclick,
problema,
selecionar
quarta-feira, setembro 19, 2012
Começando com Asp.Net e MySQL
HI,
Sempre os sites aqui da empresa Asp.Net com Oracle.
Mas agora surgiu uma necessidade pessoal de aprender a usar com MySQL.
Já aprendi a fazer uns exemplos básicos e estou procurando só usar procedures. Já fiz a de obter os registros e a de inserir, mais tarde continuo o aprendizado.
Vou colocar aqui os sites que achei.
Utilizando o MySQL em C# e Asp.Net
Com esse site aprendi a instalar a dll pra acessar o MySQL
http://www.mundoasp.net/utilizando-o-mysql-em-c-sharp-e-asp-dot-net/
Criando Stored Procedures no MySQL
Com essa dica criei a procedure para obter os registros da tabela
http://www.oficinadanet.com.br/artigo/2088/criando_stored_procedures_no_mysql
MySQL 5 C# sample code using ObjectDataSources
Esse estou usando para acessar as procedure no site
http://dotnetnuke.adefwebserver.com/Default.aspx?tabid=289
Fiquem na Paz!!!
Sempre os sites aqui da empresa Asp.Net com Oracle.
Mas agora surgiu uma necessidade pessoal de aprender a usar com MySQL.
Já aprendi a fazer uns exemplos básicos e estou procurando só usar procedures. Já fiz a de obter os registros e a de inserir, mais tarde continuo o aprendizado.
Vou colocar aqui os sites que achei.
Utilizando o MySQL em C# e Asp.Net
Com esse site aprendi a instalar a dll pra acessar o MySQL
http://www.mundoasp.net/utilizando-o-mysql-em-c-sharp-e-asp-dot-net/
Criando Stored Procedures no MySQL
Com essa dica criei a procedure para obter os registros da tabela
http://www.oficinadanet.com.br/artigo/2088/criando_stored_procedures_no_mysql
MySQL 5 C# sample code using ObjectDataSources
Esse estou usando para acessar as procedure no site
http://dotnetnuke.adefwebserver.com/Default.aspx?tabid=289
Fiquem na Paz!!!
Marcadores:
asp.net,
c#,
MySQL,
visual studio
Um pouco de PHP
HI,
Surgiu a necessidade de criar um site e como a hospedagem Asp.Net o valor é um pouco maior por conta do Sql Server, resolvi que ia fazer em Php para usar o My Sql.
Fui ver um framework para usar e optei pelo cake php.
Não foi muito complicado fazer o exemplo do blog. Fiquei apanhando foi para fazer o exemplo da autenticação, estava acompanhando pelo tutorial da verão 1.3, hehehe.
Mesmo achando o cake php legalzinho, ainda tava com a idéia de usar o visual studio, hehehe.
Ontem um amigo mostrou o site da empresa dele e vi que foi feito em aso.net. Fui verificar as características da hospedagem e vi que oferecia 100MB do Sql Server por R$25,00, fora a hospedagem do site. Vi também que oferecia Access, My SQL, Firebird. Aí pensei, por que não usar Asp.net com My SQL.
Então ontem mesmo comecei a aprender.
Vou por aqui os links que achei sobre o cake php, em outro post falo sobre o my sql com asp.net.
Aprendendo a fazer o primeiro bolo
http://www.slideshare.net/adorepump/cakephp-aprendendo-a-fazer-o-primeiro-bolo-presentation
10 Awesome CakePHP Tutorials
http://devmoose.com/coding/10-awesome-cakephp-tutorials
Vários exemplos
http://www.jamesfairhurst.co.uk/tags/view/cakephp
PS: ficar trabalhando com Delphi, Visual Studio e Android já tá bom demais, hehehe.
Fiquem na Paz!!!
Surgiu a necessidade de criar um site e como a hospedagem Asp.Net o valor é um pouco maior por conta do Sql Server, resolvi que ia fazer em Php para usar o My Sql.
Fui ver um framework para usar e optei pelo cake php.
Não foi muito complicado fazer o exemplo do blog. Fiquei apanhando foi para fazer o exemplo da autenticação, estava acompanhando pelo tutorial da verão 1.3, hehehe.
Mesmo achando o cake php legalzinho, ainda tava com a idéia de usar o visual studio, hehehe.
Ontem um amigo mostrou o site da empresa dele e vi que foi feito em aso.net. Fui verificar as características da hospedagem e vi que oferecia 100MB do Sql Server por R$25,00, fora a hospedagem do site. Vi também que oferecia Access, My SQL, Firebird. Aí pensei, por que não usar Asp.net com My SQL.
Então ontem mesmo comecei a aprender.
Vou por aqui os links que achei sobre o cake php, em outro post falo sobre o my sql com asp.net.
Aprendendo a fazer o primeiro bolo
http://www.slideshare.net/adorepump/cakephp-aprendendo-a-fazer-o-primeiro-bolo-presentation
10 Awesome CakePHP Tutorials
http://devmoose.com/coding/10-awesome-cakephp-tutorials
Vários exemplos
http://www.jamesfairhurst.co.uk/tags/view/cakephp
PS: ficar trabalhando com Delphi, Visual Studio e Android já tá bom demais, hehehe.
Fiquem na Paz!!!
sexta-feira, setembro 14, 2012
Quebrar texto ao montar impressão modo texto no Delphi
HI,
Precisei fazer com que um recibo de pagamento para impressora não fiscal fosse impresso em um modelo térmico, uma daruma dr700.
Para o modelo matricial tava usando a dll, mas não consegui usar a desse modelo. Como tava com o tempo curto, resolvi montar da maneira antiga, mandando pra impressora.
Antes tentei usar o forte reports, mas não ficou muito legal, ficou faltando imprimir alguns caracteres na margem direita.
Pesquisando uma alternativa encontrei um monte de exemplos usando a unit TPrinters.
Quando tava implementando, me deparei com um problema, ao fazer o texto continuar na próxima linha, não estava separando de forma correta. Ex: Colégio, fica o "C" numa linha e "olégio" na seguinte.
Consegui resolver esse problema usando os exemplos desses dois sites
WrapText
http://www.delphibasics.co.uk/RTL.asp?Name=WrapText&ExpandCode2=Yes
Delphi: Write multi-line text on a TCanvas
http://shrimpworks.za.net/2006/05/24/delphi-write-multi-line-text-on-a-tcanvas/
Ficou assim para imprimir um texto:
lines.Text := WrapText('Texto a ser impresso em mais de uma linha. Fazendo isso a separação das palavras acontece de forma correta. Espero ter ajudado.', 47);
for I := 0 to lines.Count - 1 do begin
Canvas.TextOut(Coluna, Linha, lines[I]);
Linha := Linha + PuloLinha;
end;
Fiquem na Paz!!!
Precisei fazer com que um recibo de pagamento para impressora não fiscal fosse impresso em um modelo térmico, uma daruma dr700.
Para o modelo matricial tava usando a dll, mas não consegui usar a desse modelo. Como tava com o tempo curto, resolvi montar da maneira antiga, mandando pra impressora.
Antes tentei usar o forte reports, mas não ficou muito legal, ficou faltando imprimir alguns caracteres na margem direita.
Pesquisando uma alternativa encontrei um monte de exemplos usando a unit TPrinters.
Quando tava implementando, me deparei com um problema, ao fazer o texto continuar na próxima linha, não estava separando de forma correta. Ex: Colégio, fica o "C" numa linha e "olégio" na seguinte.
Consegui resolver esse problema usando os exemplos desses dois sites
WrapText
http://www.delphibasics.co.uk/RTL.asp?Name=WrapText&ExpandCode2=Yes
Delphi: Write multi-line text on a TCanvas
http://shrimpworks.za.net/2006/05/24/delphi-write-multi-line-text-on-a-tcanvas/
Ficou assim para imprimir um texto:
lines.Text := WrapText('Texto a ser impresso em mais de uma linha. Fazendo isso a separação das palavras acontece de forma correta. Espero ter ajudado.', 47);
for I := 0 to lines.Count - 1 do begin
Canvas.TextOut(Coluna, Linha, lines[I]);
Linha := Linha + PuloLinha;
end;
Fiquem na Paz!!!
Assinar:
Postagens (Atom)