UpdatePanel é um componente da palheta de componentes AJAX CONTROL TOOLKIT (Tenho um artigo no Blog a respeito) ele é responsável por atualizar apenas um pedaço da página ".aspx" em questão. Isto é interessante pois não precisamos dar o postBack na página por completa.
Fica aí a dica.
Gostou do artigo e quer me ajudar? então clique em uma das propagandas ao lado!!
sexta-feira, 22 de junho de 2012
quarta-feira, 20 de junho de 2012
Android – Uma abordagem sobre persistência de dados no SQLite - Parte 2
Implementando o método para Gravar os Dados
A rotina GravarDados nos permite persistir os dados no SQLite. Sempre quando trabalhamos com Banco de Dados é recomendável utilizar o try/Catch. Segue a seguir a instrução.
public void GravarDados()
{
try
{
String strPro = "";
switch (rgCursos.getCheckedRadioButtonId())
{
case R.id.rbLiteDelphi : strPro = "The Club Lite (Delphi) - R$59,90";
break;
case R.id.rbLiteC : strPro = "The Club Lite (Delphi) - R$59,90";
break;
case R.id.rbProfessional : strPro = "The Club Lite (Delphi) - R$59,90";
break;
case R.id.rbStudent : strPro = "The Club Lite (Delphi) - R$59,90";
break;
}
String sql = "INSERT INTO TB_THECLUB (NOM_CLI, CID_CLI, EST_CLI, PRO_CLI) VALUES ('"
+ txtCliente.getText().toString() +"','"
+ txtCidade.getText().toString()+"','"
+ spEstado.getSelectedItem().toString()+"','"
+ strPro+"')";
BancoDados.execSQL(sql);
MensagemAlerta("Mensagem", "Dados salvos com Sucesso!");
}
catch (Exception e)
{
MensagemAlerta("Mensagem", "Erro ao gravar dados no Banco de Dados!"+e.toString());
}
finally
{
BancoDados.close();
}
}
O método “BancoDados.execSQL()” é responsável por montar a instrução de Insert no BD. O que fazemos de diferente aqui é que recuperamos os dados das respectivas variáveis (nome,cidade,estado e produto) e finalizando a instrução com uma mensagem informativa ao usuário. O método “BancoDados.close()” limpa o objeto da memória não permitindo recriá-lo desnecessariamente.
Implementando os métodos RegistroAnterior e RegistroPosterior
Estes métodos são reponsáveis por realizar a navegação entre os registros de nosso Banco de Dados. Novamente implementamos o Try/Catch, só que neste caso informaremos ao usuário caso não exista mais registros para navegação que ele está no primeiro ou último registro de nossa tabela.
public void RegistroAnterior()
{
try
{
cursor.moveToPrevious();
MostrarDados();
}
catch (Exception e)
{
MensagemAlerta("Mensagem", "Você está no primeiro registro!");
}
}
public void RegistroPosterior()
{
try
{
cursor.moveToNext();
MostrarDados();
}
catch (Exception e)
{
MensagemAlerta("Mensagem", "Você está no último registro!");
}
}
O método que faz este trabalho de navegação é o “cursor.moveToPrevious()” e o “cursor.moveToNext()”, sendo que o primeiro se movimenta para o registro anterior e o segundo para o posterior. Logo em seguida invocaremos o método MostrarDados() para preencher nossos respectivos objetos.
Métodos ChamaMenuPrincipal(), ChamaCadastro() e ChamaConsulta()
Estas rotinas já foram abordadas em artigos anteriores. Neste artigo foram implementadas novas funcionalidades para as mesmas.
public void ChamaMenuPrincipal()
{
setContentView(R.layout.main);
ChamaCadastro();
ChamaConsulta()
}
public void ChamaCadastro()
{
Button btCadastrar = (Button) findViewById(R.id.btCadastrar);
btCadastrar.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
setContentView(R.layout.cadastro);
btEfetuar = (Button) findViewById(R.id.btnEfetuar);
btEfetuar.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0)
{
AbreouCriaBancoDados();
InicializaObjetos();
GravarDados();
}
});
Button btVoltarCadastro = (Button) findViewById(R.id.btVoltarCadastro);
btVoltarCadastro.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
ChamaMenuPrincipal();
}
}
);
}
});
}
O botão “Efetuar” é encarregado de persistir os dados, então é nele que chamamos o método AbreouCriaBancoDados() – para abrir ou criar a estrutura, logo em seguida Inicializamos os objetos com o método InicializaObjetos() e finalizamos com o GravarDados(). Ver Imagem 04.
Figura 04: Tela de Cadastro Finalizada.
public void ChamaConsulta()
{
Button btConsultar = (Button) findViewById(R.id.btConsultar);
btConsultar.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
setContentView(R.layout.consulta);
AbreouCriaBancoDados();
InicializaObjetos();
BuscarDados();
MostrarDados();
Button btAnterior = (Button) findViewById(R.id.btAnterior);
btAnterior.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0)
{
RegistroAnterior();
}
}
);
Button btPosterior = (Button) findViewById(R.id.btPosterior);
btPosterior.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0)
{
RegistroPosterior();
}
}
);
Button btVoltarConsulta = (Button) findViewById(R.id.btVoltarConsulta);
btVoltarConsulta.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
ChamaMenuPrincipal();
}
}
);
}
}
);
}
No ChamaConsulta() também inicializamos o método AbreouCriaBancoDados(), logo em seguida o InicializaObjetos(). O próximo passo utilizamos o BuscarDados() e por final o MostrarDados(). Como nesta tela utilizamos mais outros dois controles para navegação entre os registros, então é aqui o local de chamar o RegistroAnterior() e o RegistroPosterior(), ambos para navegação entre os dados. Ver Imagem 05.
Figura 05: Tela de Consulta Finalizada.
Conclusão
Procurei neste artigo abordar de uma forma simples a persistencia de dados utilizando o sistema Android. Dividi em pequenas rotinas cada estrutura para podermos dar uma maior abordagem sobre o assunto. Finalizamos duas telas principais, uma de Cadastro e outra de Consulta.
Abraço e até o mês que vem!
terça-feira, 19 de junho de 2012
Android - Uma abordagem sobre persistência de dados no SQLite - Parte 1
Olá
amigos do The Club, tivemos outros artigos relacionados a persistência de dados
em banco no Sistema Android. Neste artigo vou procurar detalhar um pouco mais
dos recursos utilizados nos artigos anteriores e conhecer outros para se
trabalhar com Banco de Dados. Estas informações se tornam primordiais para quem
está começando a aprender este tipo de linguagem de programação. Continuaremos
trabalhando com o SQLite, lembrando que o mesmo é responsável por persistir os
dados no Banco. O foco deste artigo é permitir que os senhores montem uma tela
simples de cadastro e outra de consulta persistindo e trabalhando com os dados.
Criando um novo
Projeto
Seguindo
os mesmos passos dos artigos anteriores para criar um novo projeto é bem
simples, clique em File/New/Project Android e configure as propriedades da
seguinte maneira:
Nome do
Projeto: Android_BancoDados
Versão: Android 2.2
Aplicação: Android_BancoDados
Nome Pacote: pct. Android_BancoDados
Atividade: Android_BancoDadosActivity
Versão SDK: 8
Versão: Android 2.2
Aplicação: Android_BancoDados
Nome Pacote: pct. Android_BancoDados
Atividade: Android_BancoDadosActivity
Versão SDK: 8
A
configuração deverá ficar idêntica a Imagem 01.
Figura 01: Configurações Iniciais.
Para
finalizar esta etapa clique em “Finish”.
Importando as
telas
O passo
seguinte seria aproveitarmos as telas e boa parte da codificação do artigo
“Navegando entre Telas” do Mês de Março de 2012. A diferença é que estaremos
persistindo os dados no Banco de Dados, ao invés de salvar na memória em uma
classe. Ver Imagem 02.
Figura 02: Telas importadas do artigo do mês de Março.
A Tela de
Consulta possuirá mais dois botões para navegação entre os registros. Ver
Imagem 03 e em seguida o código XML correspondente.
Figura 03: Tela de Consulta.
<LinearLayout
android:layout_width="match_parent" android:id="@+id/linearLayout5"
android:layout_height="67dp">
<Button android:text=" Anterior" android:id="@+id/btAnterior"
android:layout_height="wrap_content" android:layout_width="160dp"></Button>
<Button android:text="Posterior " android:id="@+id/btPosterior"
android:layout_width="160dp" android:layout_height="wrap_content"></Button>
</LinearLayout>
Implementando o método para inicializar os componentes
Implementando o método para inicializar os componentes
Achei
interessante e prático criar um método para iniciar os objetos utilizados ao longo
no desenvolvimento. São as mesmas variáveis utilizadas anteriormente, por isto
não entrarei em detalhes.
public void InicializaObjetos()
public void InicializaObjetos()
{
//Variáveis utilizadas no Cadastro
rgCursos = (RadioGroup)
findViewById(R.id.rgCursos);
rbLiteDelphi =
(RadioButton) findViewById(R.id.rbLiteDelphi);
rbLiteC = (RadioButton)
findViewById(R.id.rbLiteC);
rbProfessional =
(RadioButton) findViewById(R.id.rbProfessional);
rbStudent = (RadioButton)
findViewById(R.id.rbStudent);
txtCliente = (EditText)
findViewById(R.id.edtCliente);
txtCidade = (EditText)
findViewById(R.id.edtCidade);
spEstado = (Spinner) findViewById(R.id.spnEstado);
//Variáveis utilizadas na Consulta
txtCli = (TextView) findViewById(R.id.lbCliente);
txtCid = (TextView)
findViewById(R.id.lbCidade);
txtEst = (TextView)
findViewById(R.id.lbEstado);
txtCur = (TextView)
findViewById(R.id.lbProduto);
txtCod = (TextView)
findViewById(R.id.lbCodigo);
}
Implementando o método para Abrir ou Criar o Banco de Dados
Para
darmos continuidade ao artigo abra nossa “Activity” em
“Android_BancoDados\src\pct.Android_BancoDados\Android_BancoDadosActivity.java”.
Importaremos
duas classes responsáveis pela manipulação de dados, sendo:
Import
android.database.sqlite.SQLiteDatabase: Seria o Banco de Dados propriamente dito, ou
seja, responsável por armazenar as informações.
Import
android.database.Cursor: Esta classe é responsável por manipular, navegar entre os
registros do Banco de Dados.
Logo em
seguida criaremos os objetos dentro da Activity.
SQLiteDatabase BancoDados = null;
Cursor cursor;
Devemos também criar um método responsável por abrir ou criar o Banco de Dados.
public void AbreouCriaBancoDados()
{
try
{
BancoDados =
openOrCreateDatabase("DBTHECLUB",
MODE_WORLD_READABLE,
null);
String sql = "CREATE
TABLE IF NOT EXISTS TB_THECLUB"
+"(COD_CLI INTEGER
PRIMARY KEY, " +
"NOM_CLI TEXT, END_CLI
TEXT, TEL_CLI TEXT, PRO_CLI TEXT)";
BancoDados.execSQL(sql);
Mensagem("Mensagem", "Banco Criado com Sucesso!");
}
catch (Exception e)
{
Mensagem("Mensagem", "Erro ao criar ou abrir o Banco de
Dados!");
}
}
public void
Mensagem(String Titulo, String Mensagem)
{
AlertDialog.Builder infoResultado = new
AlertDialog.Builder(Android_BancoDadosActivity.this);
infoResultado.setTitle(Titulo);
infoResultado.setMessage(Mensagem);
infoResultado.setNeutralButton("Ok",null);
infoResultado.show();
}
Iniciamos o método com um try/catch para validar a criação ou abertura do BD. Usaremos o método “OpenOrCreateDatabase” para criar o Banco de Dados contendo os seguintes parâmetros:
Iniciamos o método com um try/catch para validar a criação ou abertura do BD. Usaremos o método “OpenOrCreateDatabase” para criar o Banco de Dados contendo os seguintes parâmetros:
Tipo
|
Parâmetro
|
Descrição
|
Name
|
“DBTHECLUB”
|
Nome para o
Banco de Dados.
|
Mode
|
MODE_WORD_READABLE
|
Significa que
todas as aplicações poderão ler e acessar o arquivo.
|
Factory
|
null
|
Recurso não
utilizado no momento.
|
A próxima
etapa nós escrevemos a instrução SQL para criar a tabela de TB_THECLUB caso já
não exista em nosso Banco de Dados. O comando BancoDados.execSql(sql) é
responsável por esta tarefa. Utilizamos um método já abordado em outros artigos
para podermos exibir uma mensagem informativa ao usuário, obtendo ou não
sucesso na criação ou abertura de nosso Banco de Dados SQLite.
Implementando o método para Buscar os
dados
Este método irá
realizar a consulta SQL no SQLite retornando os dados para o Cursor.
public void BuscarDados()
{
try
{
cursor =
BancoDados.query("TB_THECLUB",
new string[] {"NOM_CLI","CID_CLI","EST_CLI","PRO_CLI"},
null,
null,
null,
null,
null);
if (cursor.getCount()!= 0 )
{
cursor.moveToFirst();
}
}
catch (Exception e)
{
MensagemAlerta("Mensagem",
"Erro ao buscar dados no Banco de Dados!");
}
}
Iniciamos
o método com um try/catch para validar a obtenção dos dados usando o método
“Query”. Neste caso atribuímos nossa consulta ao “Cursor” instanciado no início
do artigo. Explicarei todos
os argumentos na tabela a seguir.
Argumentos do
Método BancoDados.query()
Tipo
|
Parâmetro
|
Descrição
|
Table
|
“TB_THECLUB”
|
Nome da tabela
utilizada.
|
Columns
|
new String
[]{"NOM_CLI","CID_CLI","EST_CLI","PRO_CLI"}
|
Um vetor
contendo todos os campos utilizados.
|
Selection
|
Null
|
Cláusula Where
|
SelectionArgs
|
Null
|
Argumento da
cláusula Where.
|
GroupBy
|
Null
|
Argumento para
agrupar os registros.
|
Having
|
Null
|
Argumento para restringir
a quantidade de registros.
|
OrderBy
|
Null
|
Argumento para
Ordenação dos registros.
|
O método “cursor.GetCount()”
nos permite descobrir se possuímos ou não registros, Já o “cursor.MoveToFirst()”
nos desloca para o primeiro Registro da tabela.
Implementando o Método para Mostrar os
Dados
Quando executamos
uma consulta com o BD armazenamos os dados no cursor, portanto agora precisamos
recuperar os registros para poder mostrar em um textbox por exemplo, veja a
seguir o método que faz exatamente esta tarefa.
public void
MostrarDados()
{
txtCod.setText(cursor.getString(cursor.getColumnIndex("COD_CLI")));
txtCli.setText(cursor.getString(cursor.getColumnIndex("NOM_CLI"))); txtCid.setText(cursor.getString(cursor.getColumnIndex("CID_CLI")));
txtEst.setText(cursor.getString(cursor.getColumnIndex("EST_CLI")));
txtCur.setText(cursor.getString(cursor.getColumnIndex("PRO_CLI")));
}
O método “GetString()” retorna uma string a partir de um index. Portanto
utilizamos o “GetColumnIndex()” passando como parâmetro o nome do campo para
obter o registro correspondente.
Asp.Net - Como colocar título usando o iTextSharp
string attachment = "attachment; filename=Article.pdf";
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "teste/pdf";
StringWriter stw = new StringWriter();
HtmlTextWriter htextw = new HtmlTextWriter(stw);
Panel3.RenderControl(htextw);
Document document = new Document();
PdfWriter.GetInstance(document, Response.OutputStream);
document.Open();
Font fonteTitulo = FontFactory.GetFont("Verdana", 12, iTextSharp.text.Font.BOLD);
fonteTitulo.SetColor(0, 0, 0);
Chunk titulo = new Chunk("Relatório de Clientes", fonteTitulo);
Phrase frase = new Phrase(titulo);
Paragraph p = new Paragraph();
p.Add(frase);
document.Add(p);
StringReader str = new StringReader(stw.ToString());
HTMLWorker htmlworker = new HTMLWorker(document);
htmlworker.Parse(str);
document.Close();
Response.Write(document);
Response.End();
sexta-feira, 15 de junho de 2012
Android - Artigo Android e SQLite
Olá amigos do Blog, estou finalizando um artigo sobre persistência de dados no Android com o SQLite, logo logo estarei postando aqui pra vcs.
Espero que seja de grande utilidade.
Abraços.
Espero que seja de grande utilidade.
Abraços.
terça-feira, 12 de junho de 2012
Delphi - Pesquisar dentro de uma String
procedure TForm1.Button1Click(Sender: TObject);
begin
if (pos('Teste','abcdTeste012345')) then
ShowMessage('Texto encontrado!');
end;
segunda-feira, 11 de junho de 2012
Asp.Net - Chamar uma função Javascript com o Asp.Net
<script type="text/javascript" language="javascript">
function FuncaoTestar()
{
alert('Teste');
}
</script>
Page.ClientScript.RegisterStartupScript(this.GetType(), "teste", "FuncaoTestar;", true);
sábado, 9 de junho de 2012
SQL Server - Transformar campos em minúsculo ou maiúsculo
SELECT LOWER(CAMPO) AS MINUSCULO FROM TABELA
SELECT UPPER(CAMPO) AS MAIUSCULO FROM TABELA
Android - Como importar um projeto pronto
Para isto clique em “File/Import” e escolha a opção
“Existing Projects into Workspace” localizada na aba “General”. Figura 01.
Figura 01: Selecionar Tipo.
O próximo passo
é selecionar onde o projeto foi criado e em seguida concluir clicando no botão
“Finish”. Ver Imagem 02.
Figura
02: Importação de um projeto.
Fica aí a dica.
Abraços.
Assinar:
Postagens (Atom)