HI,
Precisei num programa para Android, percorrer todos os registros que uma consulta.
Pesquisei como implementar um while e achei esse código
Cursor cur = db.query("tbl_countries", null, null, null, null, null, null);
cur.moveToFirst();
while (cur.isAfterLast() == false) {
view.append("n" + cur.getString(1));
cur.moveToNext();
}
cur.close();
o restante do código se encontra aqui
http://www.higherpass.com/Android/Tutorials/Accessing-Data-With-Android-Cursors/2/
Fiquem na Paz!!!!
terça-feira, dezembro 13, 2011
sexta-feira, dezembro 02, 2011
Problema com acentuação no Sqlite do Android
HI,
Estava com esse probleminha na rotina de importação do arquivo no formato csv. As palavras acentuadas eram gravadas no banco de dados com os caracteres acentuados com uma interrogação no seu lugar. A palavra Atenção por exemplo, era gravada com Aten??o.
Depois de muito procurar, acabei achando essa solução
Android - make sure the SQLite uses UTF-8 as charset
http://stackoverflow.com/questions/4276215/android-make-sure-the-sqlite-uses-utf-8-as-charset/6002118#6002118
Fiquem na Paz!!!!
Estava com esse probleminha na rotina de importação do arquivo no formato csv. As palavras acentuadas eram gravadas no banco de dados com os caracteres acentuados com uma interrogação no seu lugar. A palavra Atenção por exemplo, era gravada com Aten??o.
Depois de muito procurar, acabei achando essa solução
Android - make sure the SQLite uses UTF-8 as charset
http://stackoverflow.com/questions/4276215/android-make-sure-the-sqlite-uses-utf-8-as-charset/6002118#6002118
Fiquem na Paz!!!!
Mais um erro ao restaurar backup do Firebird
HI,
Precisei pegar um banco de dados de um cliente, e deixar a base vazia, excluir todos os registros, mas não de todas as tabelas.
Fiz o backup, e na hora de restaurar deu o seguinte erro: Invalid token. Malformed string.
Procurando no google, achei essa solução
[firebase-br] Problema ao restaurar backup na versão FB 2.5
http://firebase.com.br/pipermail/lista_firebase.com.br/2010-February/066318.html
aqui tem um help sobre backup/restore
http://www.destructor.de/firebird/gbak.htm
meu comando ficou assim
gbak -c -v -fix_fss_m win1252 -user SYSDBA -password masterkey C:\vazio_backup.fbk C:\vazio.gdb
Fiquem na Paz!!!
Precisei pegar um banco de dados de um cliente, e deixar a base vazia, excluir todos os registros, mas não de todas as tabelas.
Fiz o backup, e na hora de restaurar deu o seguinte erro: Invalid token. Malformed string.
Procurando no google, achei essa solução
[firebase-br] Problema ao restaurar backup na versão FB 2.5
http://firebase.com.br/pipermail/lista_firebase.com.br/2010-February/066318.html
aqui tem um help sobre backup/restore
http://www.destructor.de/firebird/gbak.htm
meu comando ficou assim
gbak -c -v -fix_fss_m win1252 -user SYSDBA -password masterkey C:\vazio_backup.fbk C:\vazio.gdb
Fiquem na Paz!!!
Tratando o evento voltar do android
HI,
Tive a necessidade de verificar se o usuário estava acionando o botão de voltar do android.
Fiz uma tela de cadastro de clientes, e seria complicado depois de digitar todos o campos, sem querer o usuário voltar para a tela anterior, perdendo tudo o que foi digitado.
Quando se está inserindo um novo registro, pergunto no evento se o usuário deseja mesmo voltar para a tela anterior, e informo que todos os dados digitados serão perdidos.
Achei aqui essa dica
Android: Prompt user to save changes when Back button is pressed
http://stackoverflow.com/questions/2459848/android-prompt-user-to-save-changes-when-back-button-is-pressed/2459967#2459967
Fiquem na Paz!!!!
Tive a necessidade de verificar se o usuário estava acionando o botão de voltar do android.
Fiz uma tela de cadastro de clientes, e seria complicado depois de digitar todos o campos, sem querer o usuário voltar para a tela anterior, perdendo tudo o que foi digitado.
Quando se está inserindo um novo registro, pergunto no evento se o usuário deseja mesmo voltar para a tela anterior, e informo que todos os dados digitados serão perdidos.
Achei aqui essa dica
Android: Prompt user to save changes when Back button is pressed
http://stackoverflow.com/questions/2459848/android-prompt-user-to-save-changes-when-back-button-is-pressed/2459967#2459967
Fiquem na Paz!!!!
sábado, novembro 05, 2011
Enviando email no Android
HI,
Estava precisando de uma rotina para enviar email dos erros que acontecem na tela de comunicação de um programa que fiz. Essa tela recebe um arquivo zipado com arquivos de atualização e também envia arquivos para a empresa. Além de implementar um tratamento de erro para mostrar na tela do usuário, também queria que esse registro fosse enviado para mim.
Achei duas maneiras de se enviar email, por intent e de forma automática. Por intent precisa da intervenção do usuário.
Estou usando essa rotina
Sending Emails without User Intervention (no Intents) in Android
http://www.jondev.net/articles/Sending_Emails_without_User_Intervention_%28no_Intents%29_in_Android
achei essa rotina aqui
Sending Email in Android using JavaMail API without using the default android app(Builtin Email application)
http://stackoverflow.com/questions/2020088/sending-email-in-android-using-javamail-api-without-using-the-default-android-ap
e por intent
How to send email from your application
http://www.helloandroid.com/tutorials/how-send-email-your-application
Fiquem na Paz!!!!
Estava precisando de uma rotina para enviar email dos erros que acontecem na tela de comunicação de um programa que fiz. Essa tela recebe um arquivo zipado com arquivos de atualização e também envia arquivos para a empresa. Além de implementar um tratamento de erro para mostrar na tela do usuário, também queria que esse registro fosse enviado para mim.
Achei duas maneiras de se enviar email, por intent e de forma automática. Por intent precisa da intervenção do usuário.
Estou usando essa rotina
Sending Emails without User Intervention (no Intents) in Android
http://www.jondev.net/articles/Sending_Emails_without_User_Intervention_%28no_Intents%29_in_Android
achei essa rotina aqui
Sending Email in Android using JavaMail API without using the default android app(Builtin Email application)
http://stackoverflow.com/questions/2020088/sending-email-in-android-using-javamail-api-without-using-the-default-android-ap
e por intent
How to send email from your application
http://www.helloandroid.com/tutorials/how-send-email-your-application
Fiquem na Paz!!!!
sexta-feira, novembro 04, 2011
Erro ao restaurar backup do Firebird
HI,
Mais uma aventura com o Firebird.
Recebi o backup de um cliente e acredito que a versão do banco dele seja menos atualizada que a minha. Estou usando o Firebird 2.5
Ao restaurar recebi essa mensagem quando tava em uma tabela:
IBE: Invalid token.
Malformed string.
Pesquisando, achei a solução, graças a Deus e aqueles que disponibilizam seus conhecimentos e... valeu google.
Esse foi o comando que usei para conseguir restaurar o banco
gbak -r -p 8192 -create -v -user SYSDBA -password masterkey -FIX_FSS_METADATA WIN1252 -REP banco.fbk banco.gdb
links que achei
http://tech.groups.yahoo.com/group/firebird-support/message/110416
http://firebirdpt.wordpress.com/2008/06/28/backup-e-restore-com-gbak-em-linha-de-comando/
http://firebase.com.br/pipermail/lista_firebase.com.br/2010-February/066318.html
Fiquem na Paz!!!!
Mais uma aventura com o Firebird.
Recebi o backup de um cliente e acredito que a versão do banco dele seja menos atualizada que a minha. Estou usando o Firebird 2.5
Ao restaurar recebi essa mensagem quando tava em uma tabela:
IBE: Invalid token.
Malformed string.
Pesquisando, achei a solução, graças a Deus e aqueles que disponibilizam seus conhecimentos e... valeu google.
Esse foi o comando que usei para conseguir restaurar o banco
gbak -r -p 8192 -create -v -user SYSDBA -password masterkey -FIX_FSS_METADATA WIN1252 -REP banco.fbk banco.gdb
links que achei
http://tech.groups.yahoo.com/group/firebird-support/message/110416
http://firebirdpt.wordpress.com/2008/06/28/backup-e-restore-com-gbak-em-linha-de-comando/
http://firebase.com.br/pipermail/lista_firebase.com.br/2010-February/066318.html
Fiquem na Paz!!!!
quinta-feira, outubro 20, 2011
Alterando a quebra de linha de um campo no Sqlite
HI,
Precisei trocar a quebra de linha de um campo aonde é armazenada uma observação. O problema é que o usuário pode digitar com quebra de linha e quando exporta o arquivo txt, o registro fica em mais de uma linha no arquivo.
Para solucionar, tive que dá um replace no select para trocar a quebra de linha por um espaço.
Achei a dica aqui
How to remove carriage returns in a text field in sqlite?
http://stackoverflow.com/questions/4642535/how-to-remove-carriage-returns-in-a-text-field-in-sqlite
Fiquem na paz!!!
Precisei trocar a quebra de linha de um campo aonde é armazenada uma observação. O problema é que o usuário pode digitar com quebra de linha e quando exporta o arquivo txt, o registro fica em mais de uma linha no arquivo.
Para solucionar, tive que dá um replace no select para trocar a quebra de linha por um espaço.
Achei a dica aqui
How to remove carriage returns in a text field in sqlite?
http://stackoverflow.com/questions/4642535/how-to-remove-carriage-returns-in-a-text-field-in-sqlite
Fiquem na paz!!!
Marcadores:
android,
quebra de linha,
sqlite,
trocar
Programa incompatível com Motorola Xoom no Android Market
HI,
Foi detectando um problema com o motorola xoom ao baixar um aplicativo que está no Android Market. Disse que era incompatível. Como instalando pelo dropbox não tinha problema nenhum, então fui a caça da solução.
Consegui resolver o problema com essas dicas
Application does not show up in Android Market for Motorola XOOM tablet
http://stackoverflow.com/questions/5116768/application-does-not-show-up-in-android-market-for-motorola-xoom-tablet
Fiquem Na Paz!!!!
Foi detectando um problema com o motorola xoom ao baixar um aplicativo que está no Android Market. Disse que era incompatível. Como instalando pelo dropbox não tinha problema nenhum, então fui a caça da solução.
Consegui resolver o problema com essas dicas
Application does not show up in Android Market for Motorola XOOM tablet
http://stackoverflow.com/questions/5116768/application-does-not-show-up-in-android-market-for-motorola-xoom-tablet
Fiquem Na Paz!!!!
Marcadores:
android,
incompatibilidade,
market,
xoom
quinta-feira, outubro 13, 2011
Detectando a mudança de orientação da tela no android
HI,
Precisei dessa rotina para saber quando a visualização está na horizontal, para aplicar um outro layout. É que nesse não dava para usar scroll.
Tou usando esse exemplo
How to detect orientation change in layout in Android?
http://stackoverflow.com/questions/5726657/how-to-detect-orientation-change-in-layout-in-android
Também achei esse
http://android-er.blogspot.com/2010/08/orientationeventlistener-detect.html
Fiquem na Paz!!!
Precisei dessa rotina para saber quando a visualização está na horizontal, para aplicar um outro layout. É que nesse não dava para usar scroll.
Tou usando esse exemplo
How to detect orientation change in layout in Android?
http://stackoverflow.com/questions/5726657/how-to-detect-orientation-change-in-layout-in-android
Também achei esse
http://android-er.blogspot.com/2010/08/orientationeventlistener-detect.html
Fiquem na Paz!!!
Marcadores:
android,
mudança,
orientação,
tela
segunda-feira, setembro 05, 2011
TextView com mais de uma linha no Android
HI,
Precisei fazer uma tela para o usuário informar uma observação e queria que tivesse mais de uma linha.
Consegui fazer usando partes desse código no layout do meu TextView
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:lines="5" android:gravity="top|left" android:inputType="textMultiLine"
android:scrollHorizontally="false"
android:minWidth="10.0dip"
android:maxWidth="5.0dip"/>
que achei aqui
Android multi line editText (Text area)
http://stackoverflow.com/questions/2446544/android-multi-line-edittext-text-area
Fiquem na Paz!!!
Marcadores:
android,
número de linha,
textview
quinta-feira, setembro 01, 2011
Manipulando arquivos com o Java
HI,
Precisei testar no android se um arquivo existia, e depois de ler o seu conteúdo, deletá-lo.
Usei as rotinas que achei aqui
Basic File Manipulation With Java
http://www.higherpass.com/java/Tutorials/Basic-File-Manipulation-With-Java/
Fiquem na Paz!!!
Precisei testar no android se um arquivo existia, e depois de ler o seu conteúdo, deletá-lo.
Usei as rotinas que achei aqui
Basic File Manipulation With Java
http://www.higherpass.com/java/Tutorials/Basic-File-Manipulation-With-Java/
Fiquem na Paz!!!
segunda-feira, agosto 29, 2011
Otimizando o processo de insert de muitos registros no Android
HI,
A rotina de importação que implementei usando o ContentValues... put... insert... ficou uma carroça puxada por lesmas. Vou ter que refazer tudo. Procurei por dicas no google e achei bons materiais. Ainda vou implementar.
Aconselho uma lida nesse testo
Database Speed Comparison
http://www.sqlite.org/speed.html
Achei dua maneiras, e as duas tem que ter controle de transação.
How to speed up multiple inserts in SQLite
http://www.tanguay.info/web2008/codeExample.php?id=728
Android: Using DatabaseUtils.InsertHelper for faster insertions into SQLite database
http://www.outofwhatbox.com/blog/2010/12/android-using-databaseutils-inserthelper-for-faster-insertions-into-sqlite-database/
Tem esse outro texto também sobre como otimizar
SQLite Optimization FAQ
http://web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.html
Acredito que eu passe a utilizar esse código
editando
Achei esse código e estou utilizando ele. Passou de uns 15 minutos para menos de 1, hehehe.
Notes on Android SQLite bulk insert
http://sagistech.blogspot.com/2010/07/notes-on-android-sqlite-bukl-insert.html
Fiquem na Paz!!!
A rotina de importação que implementei usando o ContentValues... put... insert... ficou uma carroça puxada por lesmas. Vou ter que refazer tudo. Procurei por dicas no google e achei bons materiais. Ainda vou implementar.
Aconselho uma lida nesse testo
Database Speed Comparison
http://www.sqlite.org/speed.html
Achei dua maneiras, e as duas tem que ter controle de transação.
How to speed up multiple inserts in SQLite
http://www.tanguay.info/web2008/codeExample.php?id=728
Android: Using DatabaseUtils.InsertHelper for faster insertions into SQLite database
http://www.outofwhatbox.com/blog/2010/12/android-using-databaseutils-inserthelper-for-faster-insertions-into-sqlite-database/
Tem esse outro texto também sobre como otimizar
SQLite Optimization FAQ
http://web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.html
Acredito que eu passe a utilizar esse código
try {
mDb.beginTransaction();
for (Value value : values) {
ih.prepareForInsert();
ih.bind(colIdx, value.getSomeValue());
// ...
ih.execute();
}
mDb.setTransactionSuccessful();
} finally {
mDb.endTransaction();
}
editando
Achei esse código e estou utilizando ele. Passou de uns 15 minutos para menos de 1, hehehe.
Notes on Android SQLite bulk insert
http://sagistech.blogspot.com/2010/07/notes-on-android-sqlite-bukl-insert.html
Fiquem na Paz!!!
domingo, agosto 28, 2011
Função Split no Delphi
HI,
Estou utilizando essa função numa rotina para importar um arquivo texto delimitado.
Splitting a string in a string list
http://www.delphi3000.com/articles/article_2618.asp?SK=
Fiquem na Paz!!!
Estou utilizando essa função numa rotina para importar um arquivo texto delimitado.
Splitting a string in a string list
http://www.delphi3000.com/articles/article_2618.asp?SK=
Fiquem na Paz!!!
quarta-feira, agosto 24, 2011
Controle de transação no SQLite
HI,
Precisei colocar um controle de transação em uma rotina do sistema para Android que estou desenvolvendo.
db.beginTransaction();
try {
db.execSQL(...);
db.execSQL(...);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
achei aqui essa dica
http://groups.google.com/group/android-developers/browse_thread/thread/ebe11a0fada35754
outro exemplo
http://www.helloandroid.com/tutorials/database-transactions
Fiquem na Paz!!!
Precisei colocar um controle de transação em uma rotina do sistema para Android que estou desenvolvendo.
db.beginTransaction();
try {
db.execSQL(...);
db.execSQL(...);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
achei aqui essa dica
http://groups.google.com/group/android-developers/browse_thread/thread/ebe11a0fada35754
outro exemplo
http://www.helloandroid.com/tutorials/database-transactions
Fiquem na Paz!!!
Utilizando um dialogo de confirmação no Android
HI,
Aprendi uma maneira simples de criar um dialogo para solicitar a confirmação do usuário sobre alguma ação que será executada ou não no sistema. Um dialogo com as opções de SIM e NÃO por exemplo.
Achei a dica aqui
How to display a Yes/No dialog box in Android?
http://stackoverflow.com/questions/2478517/how-to-display-a-yes-no-dialog-box-in-android/2478662#2478662
Fiquem na Paz!!!
Aprendi uma maneira simples de criar um dialogo para solicitar a confirmação do usuário sobre alguma ação que será executada ou não no sistema. Um dialogo com as opções de SIM e NÃO por exemplo.
Achei a dica aqui
How to display a Yes/No dialog box in Android?
http://stackoverflow.com/questions/2478517/how-to-display-a-yes-no-dialog-box-in-android/2478662#2478662
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
//botão SIM clicado
break;
case DialogInterface.BUTTON_NEGATIVE:
//botão NÃO clicado
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Deseja excluir o registro?").setPositiveButton("SIM", dialogClickListener)
.setNegativeButton("NÃO", dialogClickListener).show();
Fiquem na Paz!!!
Marcadores:
android,
confirmação,
dialogo,
NÃO,
SIM
Criando um dialogo personalizado no Android
HI,
Estava usando um AlertDialog para o usuário manipular o registro de uma tabela. O problema começou quando fui colocar um teste para saber se o usuário informou um campo obrigatório. Com o AlertDialog não consegui impedir que a tela se fechasse ao clicar no botão confirmar.
A solução que encontrei foi usar um dialogo personalizado. Dessa maneira se estiver tudo ok, executo o comando de fechar o dialogo.
How to display a custom dialog in your Android application
http://www.helloandroid.com/tutorials/how-display-custom-dialog-your-android-application
Fiquem na Paz
Estava usando um AlertDialog para o usuário manipular o registro de uma tabela. O problema começou quando fui colocar um teste para saber se o usuário informou um campo obrigatório. Com o AlertDialog não consegui impedir que a tela se fechasse ao clicar no botão confirmar.
A solução que encontrei foi usar um dialogo personalizado. Dessa maneira se estiver tudo ok, executo o comando de fechar o dialogo.
How to display a custom dialog in your Android application
http://www.helloandroid.com/tutorials/how-display-custom-dialog-your-android-application
Fiquem na Paz
Marcadores:
android,
dialogo,
personalizado
domingo, agosto 21, 2011
Formatando casas decimais no android
HI,
Uma dica que usei para exibir um valor decimal formatado
import java.util.*;
DecimalFormat dec = new DecimalFormat("###.##");
System.out.println(dec.format(value));
peguei aqui
http://www.daniweb.com/software-development/java/threads/32513/161716#post161716
Fiquem na Paz!!!
Uma dica que usei para exibir um valor decimal formatado
import java.util.*;
DecimalFormat dec = new DecimalFormat("###.##");
System.out.println(dec.format(value));
peguei aqui
http://www.daniweb.com/software-development/java/threads/32513/161716#post161716
Fiquem na Paz!!!
Marcadores:
android,
decimal,
float,
formatação
sábado, agosto 20, 2011
Passagem de parâmetro por referência no Android
HI,
Precisei receber o valor de uma função através do parâmetro, já que estava usando a função para retorna um outro valor. No Delphi e C# é moleza. Para conseguir fazer no android, só com essa dica que achei.
Can I pass parameters by reference in Java?
http://stackoverflow.com/questions/1068760/can-i-pass-parameters-by-reference-in-java
AtomicReference
Precisei receber o valor de uma função através do parâmetro, já que estava usando a função para retorna um outro valor. No Delphi e C# é moleza. Para conseguir fazer no android, só com essa dica que achei.
Can I pass parameters by reference in Java?
http://stackoverflow.com/questions/1068760/can-i-pass-parameters-by-reference-in-java
AtomicReference
Marcadores:
android,
java,
parâmetro,
referência
terça-feira, agosto 16, 2011
Criando arquivo texto com quebra de linha ( arquivo CSV )
HI,
Vou ter que criar um arquivo txt no sistema que estou desenvolvendo.
Criei o arquivo usando essa dica
How to export data to CSV file – Java
http://www.mkyong.com/java/how-to-export-data-to-csv-file-java/
A bronca que surgiu, foi que no notepad não mostrava cada registro em uma linha, só no wordpad.
Achei a solução aqui para resolver isso
http://stackoverflow.com/questions/4794428/android-java-newline-not-working
só usar: \r\n
no exemplo tem somento \n
Fiquem na Paz!!!!
Vou ter que criar um arquivo txt no sistema que estou desenvolvendo.
Criei o arquivo usando essa dica
How to export data to CSV file – Java
http://www.mkyong.com/java/how-to-export-data-to-csv-file-java/
A bronca que surgiu, foi que no notepad não mostrava cada registro em uma linha, só no wordpad.
Achei a solução aqui para resolver isso
http://stackoverflow.com/questions/4794428/android-java-newline-not-working
só usar: \r\n
no exemplo tem somento \n
Fiquem na Paz!!!!
quarta-feira, agosto 10, 2011
Exibir texto com quebra de linha no android
HI,
Pretendo montar uma mensagem com quebra de linha usando o AlertDialog. Procurei por um exemplo usando o \n e acabei achando um bem melhor.
Nesse exemplo usa-se a tag BR do html para criar o efeito de quebra de linha
articleTextView.setText(Html.fromHtml(textForTextView));
achei aqui
http://stackoverflow.com/questions/2840608/how-do-i-add-a-newline-to-a-textview-in-android
Fiquem na Paz!!!!
Pretendo montar uma mensagem com quebra de linha usando o AlertDialog. Procurei por um exemplo usando o \n e acabei achando um bem melhor.
Nesse exemplo usa-se a tag BR do html para criar o efeito de quebra de linha
articleTextView.setText(Html.fromHtml(textForTextView));
achei aqui
http://stackoverflow.com/questions/2840608/how-do-i-add-a-newline-to-a-textview-in-android
Fiquem na Paz!!!!
Marcadores:
android,
br,
quebra de linha
terça-feira, agosto 09, 2011
Android SQLite Database - Tutorial
HI,
Um exemplo para se trabalhar com banco de dados no android
Android SQLite Database - Tutorial
http://www.vogella.de/articles/AndroidSQLite/article.html
Fiquem na Paz!!!
Um exemplo para se trabalhar com banco de dados no android
Android SQLite Database - Tutorial
http://www.vogella.de/articles/AndroidSQLite/article.html
Fiquem na Paz!!!
Manipular evento do spinner ao mudar item
HI,
Essa dica é para executar algum código ao selecionar um item do spinner.
Nesse exemplo vi que tem um evento ao não escolher nada ou ao escolher o mesmo item, não sei ao certo. Na verdade estou enfrentando esse problema, ao clicar no item que já está selecionado.
Android Spinner: Get the selected item change event
http://stackoverflow.com/questions/1337424/android-spinner-get-the-selected-item-change-event
Fiquem na Paz!!!
Essa dica é para executar algum código ao selecionar um item do spinner.
Nesse exemplo vi que tem um evento ao não escolher nada ou ao escolher o mesmo item, não sei ao certo. Na verdade estou enfrentando esse problema, ao clicar no item que já está selecionado.
Android Spinner: Get the selected item change event
http://stackoverflow.com/questions/1337424/android-spinner-get-the-selected-item-change-event
Fiquem na Paz!!!
Marcadores:
change event,
selected item,
spinner
quinta-feira, agosto 04, 2011
Erro ao usar Spinner e Cursor
HI,
Ontem me deparei com um erro ao entrar pela segunda vez numa tela que tem uns quatro spinners. No log dizia que a tabela já tava aberta, algo assim.
Os erros que peguei e procurei no google são esses
ERROR/Cursor(296): Finalizing a Cursor that has not been deactivated or closed. database = /data/data/, table = null, query = select _id, Codigo, Descricao from tabela
08-04 03:38:15.472: ERROR/Cursor(298): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
Ontem me deparei com um erro ao entrar pela segunda vez numa tela que tem uns quatro spinners. No log dizia que a tabela já tava aberta, algo assim.
Os erros que peguei e procurei no google são esses
ERROR/Cursor(296): Finalizing a Cursor that has not been deactivated or closed. database = /data/data/, table = null, query = select _id, Codigo, Descricao from tabela
08-04 03:38:15.472: ERROR/Cursor(298): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
O erro foi solucionado usando o comando: startManagingCursor(cursor);
Que achei aqui
Fiquem na Paz!!!!
quarta-feira, agosto 03, 2011
Obter o valor de um campo da tabela associada ao Spinner
HI,
Dessa vez precisei pegar o valor código da tabela associada ao Spinner, que não é o _id. O exemplo que achei permite pegar o valor de qualquer campo. Então dá para pegar o valor do campo descrição ou código.
Exemplo:
Tabela sexo com os seguintes campos: _id, codsexo e descsexo
codsexo seria F | M
e descsexo FEMININO | MASCULINO
Para pegar o _id é só usar esse esquema:
int cod_id = spinnersexoIndex.getSelectedItemPosition();
E para pegar o valor dos demais campos:
String spinnerString = null;
Cursor cc = (Cursor)(spinnersexoIndex.getSelectedItem());
if (cc != null) {
spinnerString = cc.getString(
cc.getColumnIndex("codsexo") );
}
peguei esse exemplo aqui
http://stackoverflow.com/questions/1776552/android-how-to-get-selected-item-from-data-driven-spinner
Fiquem na Paz!!!!
Dessa vez precisei pegar o valor código da tabela associada ao Spinner, que não é o _id. O exemplo que achei permite pegar o valor de qualquer campo. Então dá para pegar o valor do campo descrição ou código.
Exemplo:
Tabela sexo com os seguintes campos: _id, codsexo e descsexo
codsexo seria F | M
e descsexo FEMININO | MASCULINO
Para pegar o _id é só usar esse esquema:
int cod_id = spinnersexoIndex.getSelectedItemPosition();
E para pegar o valor dos demais campos:
String spinnerString = null;
Cursor cc = (Cursor)(spinnersexoIndex.getSelectedItem());
if (cc != null) {
spinnerString = cc.getString(
cc.getColumnIndex("codsexo") );
}
peguei esse exemplo aqui
http://stackoverflow.com/questions/1776552/android-how-to-get-selected-item-from-data-driven-spinner
Fiquem na Paz!!!!
segunda-feira, agosto 01, 2011
Evitando que a tela do android desligue
HI,
Existe um processo executado no meu aplicativo que demora um certo tempo e tava querendo que a tela não desligasse, para não pará-lo.
Na dica que achei existem duas maneiras para se fazer isso. Uma é via código e outra é um parâmetro do layout.
Keep the screen on
http://www.androidsnippets.com/keep-the-screen-on
Na pesquisar eu achei esse código para executar algum código quando a tela é ligada ou desligada
Handling Screen OFF and Screen ON Intents
http://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/
Existe um processo executado no meu aplicativo que demora um certo tempo e tava querendo que a tela não desligasse, para não pará-lo.
Na dica que achei existem duas maneiras para se fazer isso. Uma é via código e outra é um parâmetro do layout.
Keep the screen on
http://www.androidsnippets.com/keep-the-screen-on
Na pesquisar eu achei esse código para executar algum código quando a tela é ligada ou desligada
Handling Screen OFF and Screen ON Intents
http://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/
Marcadores:
android,
screen off,
screen on,
setKeepScreenOn
domingo, julho 31, 2011
Executando um arquivo de áudio no android
HI,
Estou querendo avisar quando termina um determinado processo aqui no meu programa utilizando um arquivo de áudio. Tipo um beep para avisar que terminou.
Encontrei duas dicas e numa delas um site com arquivos de áudio.
Creating Sound Effects in Android: Part 1
http://www.droidnova.com/creating-sound-effects-in-android-part-1,570.html
Estou usando esse Sound Effects no meu aplicativo
também achei esse outro, mas não consegui utilizá-lo
beep by Intent
http://www.androidsnippets.com/beep-by-intent
e o site com áudios para download
http://www.soundjay.com/beep-sounds-1.html
é isso aí, espero que posso ser útil
fiquem na Paz!!!!
Estou querendo avisar quando termina um determinado processo aqui no meu programa utilizando um arquivo de áudio. Tipo um beep para avisar que terminou.
Encontrei duas dicas e numa delas um site com arquivos de áudio.
Creating Sound Effects in Android: Part 1
http://www.droidnova.com/creating-sound-effects-in-android-part-1,570.html
Estou usando esse Sound Effects no meu aplicativo
também achei esse outro, mas não consegui utilizá-lo
beep by Intent
http://www.androidsnippets.com/beep-by-intent
e o site com áudios para download
http://www.soundjay.com/beep-sounds-1.html
é isso aí, espero que posso ser útil
fiquem na Paz!!!!
terça-feira, julho 26, 2011
Passando valores entre Activities no Android
HI,
Estou usando essa técnica para passar valores entre Activities. Exemplo: Passar o row_id do cliente escolhido para a próxima tela.
Passing Data Between Activities via Bundles
http://droidweb.com/2010/02/developer-tip-10-passing-data-between-activities-via-bundles/
outro link
http://thedevelopersinfo.wordpress.com/2009/10/15/passing-data-between-activities-in-android/
Qualquer dúvida, podem dizer.
Fiquem na Paz!!!!
Estou usando essa técnica para passar valores entre Activities. Exemplo: Passar o row_id do cliente escolhido para a próxima tela.
Passing Data Between Activities via Bundles
http://droidweb.com/2010/02/developer-tip-10-passing-data-between-activities-via-bundles/
outro link
http://thedevelopersinfo.wordpress.com/2009/10/15/passing-data-between-activities-in-android/
Qualquer dúvida, podem dizer.
Fiquem na Paz!!!!
segunda-feira, julho 11, 2011
Abreviando nome no Oracle
HI,
Para melhorar a comparação entre um nome digitando com um armazenado no banco, resolvi utilizar uma função para auxiliar. Dei preferência por essa que retorna apenas o primeiro e último nome. Assim se tiver armazenado abreviado, não tem problema. Não se trata de uma comparação crítica, é para validar a abertura de uma conta aonde o usuário precisa acertar um documento de identificação, a data de nascimento e o nome da mãe.
Código da função
CREATE OR REPLACE FUNCTION abrevia_nome (pValue IN VARCHAR2)
RETURN VARCHAR2 IS
nome VARCHAR2(100);
Saida VARCHAR2(2000);
BEGIN
nome := pValue;
SELECT SubStr(nome, 1, INSTR(UPPER(NOME), ' ')) ||
REVERSE(Trim(SubStr(REVERSE(nome), 1, INSTR(UPPER(REVERSE(NOME)), ' ')))) INTO saida FROM dual;
RETURN Nvl(Saida, pValue);
END; -- Funcao abrevia_nome
Para melhorar a comparação entre um nome digitando com um armazenado no banco, resolvi utilizar uma função para auxiliar. Dei preferência por essa que retorna apenas o primeiro e último nome. Assim se tiver armazenado abreviado, não tem problema. Não se trata de uma comparação crítica, é para validar a abertura de uma conta aonde o usuário precisa acertar um documento de identificação, a data de nascimento e o nome da mãe.
Código da função
CREATE OR REPLACE FUNCTION abrevia_nome (pValue IN VARCHAR2)
RETURN VARCHAR2 IS
nome VARCHAR2(100);
Saida VARCHAR2(2000);
BEGIN
nome := pValue;
SELECT SubStr(nome, 1, INSTR(UPPER(NOME), ' ')) ||
REVERSE(Trim(SubStr(REVERSE(nome), 1, INSTR(UPPER(REVERSE(NOME)), ' ')))) INTO saida FROM dual;
RETURN Nvl(Saida, pValue);
END; -- Funcao abrevia_nome
achei ela aqui
Fiquem na Paz!!!!
sábado, julho 09, 2011
Remover acentos de strings (C#)
HI,
Passei a usar essa rotina em meus códigos.
Remover acentos de strings (C#)
http://www.e-bee.com.br/site/index.php/2009/04/08/remover-acentos-de-strings-c/
Fiquem na Paz
Passei a usar essa rotina em meus códigos.
Remover acentos de strings (C#)
http://www.e-bee.com.br/site/index.php/2009/04/08/remover-acentos-de-strings-c/
Fiquem na Paz
quinta-feira, julho 07, 2011
Abrir o modalpopup ao entrar na página
HI,
Precisei desse código para mostrar ao usuário as instruções de utilização de um site. Quase ninguém vai na página de ajuda, hehehe. Ligam logo para o call center.
How To Open ModalPopup on page Load in ASP.NET
http://aspdotnetcodebook.blogspot.com/2008/01/how-to-open-modalpopup-on-page-load-in.html
fiquem na Paz!!!
Precisei desse código para mostrar ao usuário as instruções de utilização de um site. Quase ninguém vai na página de ajuda, hehehe. Ligam logo para o call center.
How To Open ModalPopup on page Load in ASP.NET
http://aspdotnetcodebook.blogspot.com/2008/01/how-to-open-modalpopup-on-page-load-in.html
fiquem na Paz!!!
Marcadores:
asp.net,
modalpopup,
onload
quinta-feira, junho 30, 2011
Lendo e Escrevendo arquivos no Android
HI,
Mais um recurso que vou usar em um sistema para android que tou desenvolvendo.
Vou precisar ler arquivos recebidos via ftp para popular as tabelas do sistema.
Android writing and reading files
http://huuah.com/android-writing-and-reading-files/
Fiquem na Paz!!!
Mais um recurso que vou usar em um sistema para android que tou desenvolvendo.
Vou precisar ler arquivos recebidos via ftp para popular as tabelas do sistema.
Android writing and reading files
http://huuah.com/android-writing-and-reading-files/
Fiquem na Paz!!!
Compactando e Descompactando no Android
HI,
Vou deixar uma solução que achei para compactar e descompactar via programação no Android.
Estou usando no sistema que estou desenvolvendo. Ficou uma beleza.
Unzipping Files with Android (Programmatically)
http://www.jondev.net/articles/Unzipping_Files_with_Android_(Programmatically)
Zipping Files with Android (Programmatically)
http://jondev.net/articles/Zipping_Files_with_Android_(Programmatically)
Fiquem na Paz!!!
Vou deixar uma solução que achei para compactar e descompactar via programação no Android.
Estou usando no sistema que estou desenvolvendo. Ficou uma beleza.
Unzipping Files with Android (Programmatically)
http://www.jondev.net/articles/Unzipping_Files_with_Android_(Programmatically)
Zipping Files with Android (Programmatically)
http://jondev.net/articles/Zipping_Files_with_Android_(Programmatically)
Fiquem na Paz!!!
Marcadores:
android,
compactar,
descompactar,
unzip,
zip
sexta-feira, junho 17, 2011
Erro estranho ao implementar captura dos erros no ASP.Net
HI,
Decidi colocar um tratamento de erro em um site que estou criando, e deu erro ao acessar o site, depois de colocar usuário e senha. O estranho, é que antes não dava nenhum erro, não acontecia nada no modo debug.
Coloquei o código no Application_Error do Global.asax
Essa foi a mensagem de erro que começou a aparecer:
System.Web.HttpException: Arquivo inexistente.
em System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response)
em System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context)
em System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state)
em System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
em System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Pesquisando no google, achei um problema desses, e provavelmente poderia ser um acesso a um arquivo no CSS. Analisando o CSS, encontrei o problema, tinha uma linha que não usava mais, que jogava no backgroud de uma div uma imagem que não existia.
Achei a solução aqui
http://forums.infragistics.com/forums/p/19543/70812.aspx#70812
Para implementar um log de erros, vocês podem tomar como base esse tutorial
http://www.macoratti.net/07/08/aspn_lge.htm
Solução de como pegar a mensagem de erro, Server.GetLastError()
http://pt.w3support.net/index.php?db=so&id=343014
Caso queiram enviar o erro por email
http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/9c152de9-2984-4854-9c48-0354df27225c
Espero que possa ser útil.
Fiquem na Paz!!!!
Decidi colocar um tratamento de erro em um site que estou criando, e deu erro ao acessar o site, depois de colocar usuário e senha. O estranho, é que antes não dava nenhum erro, não acontecia nada no modo debug.
Coloquei o código no Application_Error do Global.asax
Essa foi a mensagem de erro que começou a aparecer:
System.Web.HttpException: Arquivo inexistente.
em System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response)
em System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context)
em System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state)
em System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
em System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Pesquisando no google, achei um problema desses, e provavelmente poderia ser um acesso a um arquivo no CSS. Analisando o CSS, encontrei o problema, tinha uma linha que não usava mais, que jogava no backgroud de uma div uma imagem que não existia.
Achei a solução aqui
http://forums.infragistics.com/forums/p/19543/70812.aspx#70812
Para implementar um log de erros, vocês podem tomar como base esse tutorial
http://www.macoratti.net/07/08/aspn_lge.htm
Solução de como pegar a mensagem de erro, Server.GetLastError()
http://pt.w3support.net/index.php?db=so&id=343014
Caso queiram enviar o erro por email
http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/9c152de9-2984-4854-9c48-0354df27225c
Espero que possa ser útil.
Fiquem na Paz!!!!
Marcadores:
Application_Error,
erro,
evento,
global,
log,
tratamento
Fazendo um IFrame ocupar todo o espaço do browser
HI,
Colocaram uma TV aqui na sala para exibir a página de um sistema de monitoramento ( para acompanhar o status de servidores, processos, sistemas, etc. ). Aí eu tive a idéia de criar um sistema para trocar o conteúdo para ser exibido, para não ficar com a TV apenas com um conteúdo. Pensei em fazer em Delphi, mas achei melhor fazer em ASP.Net.
Sabia que ia precisar deixar a página dando refresh a cada x tempo e que precisaria exibir a url do site na mesma página. Consegui fazer isso usando um IFrame. O desafio foi fazê-lo ficar sem as bordas e ocupar toda a área de exibição do browser, mesmo que ele estivesse em fullscreen.
Comecei usando uns javascripts que achei, mas não gostei do resultado. Depois de algum tempo pesquisando, achei uma solução que resolveu o problema da borda e do redimensionamento.
dessa maneira o width e o height ficam de acordo com a área client
Achei aqui
http://stackoverflow.com/questions/247128/how-to-auto-size-an-iframe
Para concluir a página de exibição de páginas, usei essas idéias
Carregando uma página no Iframe no codebehind do Asp.net
http://geekswithblogs.net/ranganh/archive/2005/04/25/37635.aspx
Autorefresh
http://webdesign.about.com/od/metataglibraries/a/aa080300a.htm
Também achei um javascript para a função de refresh
http://www.javascriptkit.com/script/script2/autofresh.shtml
Espero que possa ser útil
Fiquem na Paz!!!
Colocaram uma TV aqui na sala para exibir a página de um sistema de monitoramento ( para acompanhar o status de servidores, processos, sistemas, etc. ). Aí eu tive a idéia de criar um sistema para trocar o conteúdo para ser exibido, para não ficar com a TV apenas com um conteúdo. Pensei em fazer em Delphi, mas achei melhor fazer em ASP.Net.
Sabia que ia precisar deixar a página dando refresh a cada x tempo e que precisaria exibir a url do site na mesma página. Consegui fazer isso usando um IFrame. O desafio foi fazê-lo ficar sem as bordas e ocupar toda a área de exibição do browser, mesmo que ele estivesse em fullscreen.
Comecei usando uns javascripts que achei, mas não gostei do resultado. Depois de algum tempo pesquisando, achei uma solução que resolveu o problema da borda e do redimensionamento.
dessa maneira o width e o height ficam de acordo com a área client
Achei aqui
http://stackoverflow.com/questions/247128/how-to-auto-size-an-iframe
Para concluir a página de exibição de páginas, usei essas idéias
Carregando uma página no Iframe no codebehind do Asp.net
http://geekswithblogs.net/ranganh/archive/2005/04/25/37635.aspx
Autorefresh
http://webdesign.about.com/od/metataglibraries/a/aa080300a.htm
Também achei um javascript para a função de refresh
http://www.javascriptkit.com/script/script2/autofresh.shtml
Espero que possa ser útil
Fiquem na Paz!!!
sábado, junho 11, 2011
Migrando um banco Sql Server Compact para SQLite
HI,
Mas uma bronca que consegui resolver, graças a Deus.
Vou iniciar o desenvolvimento de um sistema de forças de venda para android. Fiz um para windows mobile. Como não tava querendo criar todas as tabelas no SQLite, resolvi buscar uma ferramenta para realizar esse trabalho.
O mais perto que cheguei, foi de um programa para migrar um banco de dados SQL Server para SQLite. Antes disso eu tinha encontrado um programa para exportar a estrutura e os dados do SQL Server Compact.
Então eu decidi recriar o banco de dados no SQL Server, e do SQL Server, migrar para o SQLite. Pura gambiarra? hehehe. O importante é que consegui criar o banco de dados completo para SQLite.
Receita do que precisei:
Utilitário para exportar a estrutura e os dados do sql server compact usando o SQL Server Management Studio.
SQL Compact data and schema script utility
Programa para criar um banco SQLite a partir de um banco de dados SQL Server
Convert SQL Server DB to SQLite DB
Tem um porém nesse programa. Ao utilizar o executável, deu um erro, disse que não encontrava o System.Data.SQLite.dll. Fui atrás desse arquivo no google e instalei no meu notebook.
System.Data.SQLite
Outro porém. Mesmo instalando, continuou dando erro. Vi que poderia ser problema de diferença de versão. Resolvi baixar o código fonte, adicionar em Reference a dll System.Data.SQLite e executar. Repeti o processo e deu certo
Agora tá tudo blz.
Fica a dica de ferramentas para se trabalhar com o SQLite
Espero que posso ajudar.
Fiquem na Paz!!!
Marcadores:
android,
compact,
converter,
migrar,
sql lite,
sql server,
sql server mobile,
windows mobile
sexta-feira, junho 10, 2011
Trabalhando com o ModalPopup do Ajax Asp.Net
HI,
Não pretendo nesse post ensinar a implementar um dialogo modal no asp.net. Vou colocar aqui todo o material que me ajudou a deixar o meu dialogo funcional, do jeito que eu queria.
Minha necessidade: Uma tela de pequisa, que jogasse a descrição do item desejado em um textbox da página. Usei o ModalPopupExtender e no panel coloquei um textbox para o usuário digitar o termo, um botão para acionar a pesquisa, um gridview para listar o resultado e um botão para fechar o dialogo.
Problemas que encontrei: Ao clicar no botão de Pesquisar, a dialogo fechava. Na paginação, dava erro ao tentar ir para outra página no gridview. Ao entrar novamente no dialogo, os resultados da pesquisa ainda estavam no gridview.
Sites que usei para elaborar meu dialogo modal de pesquisa.
Para implementar o dialogo:
ModalPopup Demonstration
Working with ModalPopup Ajax Control
Using the ASP.NET AJAX ModalPopup in an ASP.NET 3.5 application
Evitando que a tela se feche:
Por exemplo, no botão de Pesquisar, coloquei esse código para evitar que a tela desaparecesse
MyModalPopoupExtender.Show()
Para resolver o problema do pageindexchanging:
analisem esse código
protected void StudentLookupGridView_PageIndexChanging(object sender,GridViewPageEventArgs e)
{
// Recapture the current StudentCollection.
StudentLookupGridView.DataSource =
(StudentCollection)Session["LookupStudentCollection"];
// Set to the “new page”.
StudentLookupGridView.PageIndex = e.NewPageIndex;
// Rebind the data.
StudentLookupGridView.DataBind();
}
outro link, ModalPopupExtender and GridView paging problem
Para limpar o resultado da pesquisa:
GridView1.DataSource = null;
GridView1.DataBind();
Para resetar o SelectedIndex e o PageIndex:
GridView1.SelectedIndex = -1;
GridView1.PageIndex = 0;
Usei a opção AutoGenerateSelectButton do gridview para o usuário clicar e indicar o item que ele deseja escolher. Caso não se faça isso, em uma nova busca vai mostrar selecionado no gridview um item qualquer da mesma posiçao do item seleiconado anteriomente. E também vai indicar no contador de paginação a última página clicada.
Coloquei esses códigos no botão de pesquisar, depois de setar o datasource com o resultado da pesquisa.
Definindo o focus de um componente ao abrir o modal dialog
Usei essa solução. Funcionou perfeitamente.
ASP.NET: Setting Focus in Modal Dialogs
Executando a pesquisa ao pressionar ENTER
Definindo a propriedade DefaultButton do panel, funciona. Mas eu quis utilizar o ENTER também para confirmar a linha selecionada, caso o usuário quisesse usar o TAB para navegar pelas linhas do gridview.
Usei uma função no TextBox da pesquisa, para acionar um cliquei no portão de Pesquisa
Achei aqui
Pronto!!!! Foi tudo que achei em dois dias de trabalho para criar a minha tela de pesquisa. Graças a Deus, tá tudo blz. Agora vou trabalhar no layout.
Ficou assim:
Espero que possa ajudar
Fiquem na Paz!!!!
sexta-feira, junho 03, 2011
Instalando aplicativos no android facilmente
HI,
Sei que tem como instalar através do emulador, mas eu achei uma maneira mais fácil, assim considero. Tou sempre conectado mesmo, hehehe.
É usando o serviço do Dropbox.
Faço o upload do apk e baixo usando o celular, molezinha, hehehe.
Acessem esse link:
Nele tem um passo-a-passo para fazer essa manobra.
Outra opção é pelo QRCode
Fiquem na Paz!!!!
Marcadores:
android,
apk.,
aplicativo,
instalar
Column does not exist
HI,
Mais uma surra no Android. Levei algumas horas para descobrir o erro. Não tinha procurado no google, por que eu achava que eu tava informando errado o nome do campo, ou que estava pegando a variável da tabela expenses.
Resolvi criar uma tabela no exemplo de estudo para armazenar as categorias das despesas. Criei com os campos idcat e desccat. Criei as classes para manipular a tabela, tudo indo ok, tava inserindo. Mas quando chegou na hora de listar as categorias na tela, deu o seguinte erro: java.lang.IllegalArgumentException: column '_id' does not exist.
O que me confundiu, é que na tabela de expenses, existe esse campo. Pensei que tava misturando os código, etc. Depois de um monte de tentativas, de alterações no código, de criar os log para saber o que estava acontecendo ( no log mostrava o nome certo da variável idcat ). Resolvi pesquisar no google pela mensagem de erro: java.lang.IllegalArgumentException column does not exist . No resultado vi um monte de _id. Achei estranho. Um monte de gente faltando esse campo.
Foi aí que descobrir entrando nas páginas, que usando o SimpleCursorAdapter, é obrigatório ter uma campo único com o nome _id, hehehe. Pensei que ia ter que mudar o nome do campo, de idcat para _id, mas eu vi uma dica de mudar o nome do campo no select, ficando assim: select idcat as _id, desccat from categories.
Mas para executar essa query é preciso usar o rawQuery no lugar do query.
Ficou assim o código:
public Cursor allCategories(){return mDb.rawQuery("select idcat as _id, namecategory from " + DB_TABLE_CATEGORIES, null);}
e criei mais uma variável para representar esse campo:
public static final String KEY_CAT_ID = "idcat";
public static final String KEY_CAT_ROWID = "_id";
public static final String KEY_CAT_DESCRIPTION = "namecategory";
é isso aí, espero que possa ser útil.
links que achei
Fiquem na Paz!!!!
Marcadores:
_id,
android,
column,
listview,
SimpleCursorAdapter
quinta-feira, junho 02, 2011
Colocando o title dentro do textbox
HI,
Como não achei logo a solução no google, passei quase o dia todo para fazer isso. Eu já tinha tentando fazer usar isso, até consegui usando um código do jQuery, mas o problema é que no campo senha ao invés de mostrar o tittle, mostrava um monte de asteriscos, hehehe. Tinha desistido de usar, mas aí o setor de marketing aqui da empresa que trabalho disse que eu precisa fazer a tela de login no mesmo estilo da tenha do twitter, sem usar o label do lado do textbox e sim colocar a descrição dentro.
Testei várias soluções, algumas usavam dois textbox para a senha, etc. Por que o lance é ao entrar no text box, mudar o type dele para password.
A solução que tou usando é o ZTINPUTHINT, que é um plugin para o jQuery.
Dica: Controle o tamanho do textbox através do CSS, pq senão ele mostra um textbox de tamanho diferente quando abre a página, e quando você entra no componente é que ele mostra do tamanho que você definiu dentro do html.
É possível ter um CSS para a dica e outra para o texto que vai ser digitado.
Página de demonstração: http://ztinputhint.googlecode.com/svn/other/demo.html
Imagens da opção de login que fiz.
Fiquem na PAZ!!!!
Como não achei logo a solução no google, passei quase o dia todo para fazer isso. Eu já tinha tentando fazer usar isso, até consegui usando um código do jQuery, mas o problema é que no campo senha ao invés de mostrar o tittle, mostrava um monte de asteriscos, hehehe. Tinha desistido de usar, mas aí o setor de marketing aqui da empresa que trabalho disse que eu precisa fazer a tela de login no mesmo estilo da tenha do twitter, sem usar o label do lado do textbox e sim colocar a descrição dentro.
Testei várias soluções, algumas usavam dois textbox para a senha, etc. Por que o lance é ao entrar no text box, mudar o type dele para password.
A solução que tou usando é o ZTINPUTHINT, que é um plugin para o jQuery.
Dica: Controle o tamanho do textbox através do CSS, pq senão ele mostra um textbox de tamanho diferente quando abre a página, e quando você entra no componente é que ele mostra do tamanho que você definiu dentro do html.
É possível ter um CSS para a dica e outra para o texto que vai ser digitado.
Página de demonstração: http://ztinputhint.googlecode.com/svn/other/demo.html
Imagens da opção de login que fiz.
Fiquem na PAZ!!!!
terça-feira, maio 31, 2011
Motorola Atrix
HI,
Como tou aprendendo a programa para o Android e sempre tive a vontade de comprar um celular com esse sistema operacional. Estava esperando o momento certo e ele tinha chegado. Estava com muita vontade de testar o programa no celular. No emulador num é a mesma coisa, hehehe. No windows mobile até dava, já que se usa uma canetinha. Mas passar o dedo na tela do computador, sem condições, hehehe.
Estava esperando para comprar um com android 2.2. E recentemente foi lançado o Motorola Atrix. Pense no desejo de comprar um, mesmo custando quase o preço de um tablet. Mas eu considero essa compra como um investimento, já que tou aprendendo para migrar um sistema de força de vendas que temos para windows mobile.
Mas não estou escrevendo apenas para falar dessa aquisição :-)
Ele tem um probleminha com SMS, hehehe. Pense, quase me causa um problemão. Enviaram SMS para mim e eu nada de receber, e era importante.
Pesquisando no google, encontrei essas soluções. Agora tá tudo blz.
Fiquem na Paz!!!
Marcadores:
android,
bug,
motorola atrix,
sms
sexta-feira, maio 27, 2011
Erro 404 no IIS
HI,
Depois de um servidor windows 2003 ser formatado e o IIS instalado novamente, tive que configurar um site em aspx que estou criando.
Não funcionou, deu erro 404, de página não encontrada.
Fui almoçar e nosso gerente de T.I fez um teste colocando uma página teste.html dentro da pasta e ela foi exibida no browser. Então a configuração do endereço do site tava ok.
Pesquisando mais um pouco no google, quando voltei, por "erro 404 ASPX iis" encontrei a solução para o problema. Estava desabilitada a permissão para exibir paginas Asp.Net 2.0.
Links
é isso aí
Fiquem na Paz!!!
domingo, maio 22, 2011
Obtendo o Banco de Dados do emulador Android
HI,
Essa dica é para obter o banco de dados que está no emulador.
Acessem esse site
Precisei manipular o banco de dados para saber como excluir um campo da tabela, criar uma trigger, etc.
Não dá para usar o comando alter table drop column no android. É preciso renomear a tabela, criar uma nova com o mesmo nome, depois dá um select insert para pupular a nova tabela e depois excluir a tabela que foi renomeada.
Fica assim o comando
db.execSQL("ALTER TABLE \"main\".\"expenses\" RENAME TO \"oXHFcGcd04oXHFcGcd04_expenses\"");
db.execSQL("CREATE TABLE \"main\".\"expenses\" (\"_id\" integer PRIMARY KEY ,\"description\" text NOT NULL ,\"value\" number(9,2) NOT NULL );");
db.execSQL("INSERT INTO \"main\".\"expenses\" SELECT \"_id\",\"description\",\"value\" FROM \"main\".\"oXHFcGcd04oXHFcGcd04_expenses\";");
db.execSQL("DROP TABLE \"main\".\"oXHFcGcd04oXHFcGcd04_expenses\";");
Fiquem na Paz!!!
Definindo a data inicial do DatePickerDialog
HI,
Tinha ido dormir umas quatro da manhã tentando definir a data do Date Picker Dialog com a data que tá gravada na tabela quando se está editando o registro. Achei um exemplo, mas não consegui fazer, devia ser o sono, pois, analisando o mesmo exemplo agora de manhã depois de ter acordado ( a hora? meio dia, hehehe ), consegui botar para funcionar.
Agora quando se está editando, é exibida a data que está gravada.
Fiz com base nesse exemplo
Código que estou utilizando
@Overrideprotected Dialog onCreateDialog(int id) {switch (id) {case DATE_DIALOG_ID:if (definirdata){String _date[] = mPickDateExpense.getText().toString().split("/");mYear = Integer.parseInt(_date[2]);mMonth = Integer.parseInt(_date[1]) - 1; // mes vai de 0 a 11mDay = Integer.parseInt(_date[0]);definirdata = false;}return new DatePickerDialog(this,mDateSetListener,mYear, mMonth, mDay);}return null;}
Fiquem na Paz!!!
Gravando datas no SQLite do Android
HI,
Continuo avançando aqui no exemplo expenses. Hoje consegui gravar a data no banco de dados, graças a Deus.
Depois de muita tentativa e erro e muitas pesquisas no Google, fui achando as soluções.
Primeiro erro que me deparei foi esse: java.text.ParseException: Unparseable date
Tava tentando converter a data da despesa ( uma string ) que tava no formato dd-MM-yyyy para jogar dentro de uma variável do tipo data. Só depois que percebi que tinha esquecido de trocar o traço pela barra deixando o formato assim: dd/MM/yyyy.
Código para converter uma string em data
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date datepayment = formatter.parse(datepaymentText.getText().toString());
datepaymentText é um Button.
O segundo erro que me deparei foi: java.lang.ClassCastException: java.util.Date
Pensei que o problema era na hora de gravar no campo data da tabela. Desabilitei a linha que dá um insert no banco e mesmo assim tava dando esse erro. Então deduzi que o problema era na passagem de parametro. Fiquei pensando, como é que pode passar um campo data para um metódo que tem uma variavel do tipo data e dá erro?
Pesquisando no google descobrir que ao invés de usar a biblioteca java.sql.Date, eu deveria usar java.util.Date. Depois que fiz isso, não deu mais erro.
E nessa mesma busca vi que eu deveria converter essa variável data que tá no formato dd/MM/yyyy para yyyy-MM-dd, que é o formaro do banco de dados.
O código para gravar a data no banco de dados ficou assim:
public long createExpense(Date datepayment){
ContentValues initialValues = new ContentValues();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
dateFormat.applyPattern("yyyy-MM-dd");
initialValues.put(KEY_DATEPAYMENT, dateFormat.format(datepayment));
return mDb.insert(DB_TABLE, null, initialValues);
}
Deixei só o campo data para exemplificar.
Agora tá beleza, tá gravando e recuperando o campo data
Ficou assim a tela do programa
Espero que possa ser útil.
Páginas que me ajudaram
http://www.guj.com.br/java/76586-converter-um-campo-de-um-text-field-em-date#403825
http://www.guj.com.br/java/36076-converter-string-para-uma-data
http://stackoverflow.com/questions/754684/how-to-insert-a-sqlite-record-with-a-datetime-set-to-now-in-android-application
http://stackoverflow.com/questions/3842509/android-java-datetime-values-from-string-to-long-to-string-issue
Fiquem na Paz!!!
Continuo avançando aqui no exemplo expenses. Hoje consegui gravar a data no banco de dados, graças a Deus.
Depois de muita tentativa e erro e muitas pesquisas no Google, fui achando as soluções.
Primeiro erro que me deparei foi esse: java.text.ParseException: Unparseable date
Tava tentando converter a data da despesa ( uma string ) que tava no formato dd-MM-yyyy para jogar dentro de uma variável do tipo data. Só depois que percebi que tinha esquecido de trocar o traço pela barra deixando o formato assim: dd/MM/yyyy.
Código para converter uma string em data
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date datepayment = formatter.parse(datepaymentText.getText().toString());
datepaymentText é um Button.
O segundo erro que me deparei foi: java.lang.ClassCastException: java.util.Date
Pensei que o problema era na hora de gravar no campo data da tabela. Desabilitei a linha que dá um insert no banco e mesmo assim tava dando esse erro. Então deduzi que o problema era na passagem de parametro. Fiquei pensando, como é que pode passar um campo data para um metódo que tem uma variavel do tipo data e dá erro?
Pesquisando no google descobrir que ao invés de usar a biblioteca java.sql.Date, eu deveria usar java.util.Date. Depois que fiz isso, não deu mais erro.
E nessa mesma busca vi que eu deveria converter essa variável data que tá no formato dd/MM/yyyy para yyyy-MM-dd, que é o formaro do banco de dados.
O código para gravar a data no banco de dados ficou assim:
public long createExpense(Date datepayment){
ContentValues initialValues = new ContentValues();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
dateFormat.applyPattern("yyyy-MM-dd");
initialValues.put(KEY_DATEPAYMENT, dateFormat.format(datepayment));
return mDb.insert(DB_TABLE, null, initialValues);
}
Deixei só o campo data para exemplificar.
Agora tá beleza, tá gravando e recuperando o campo data
Ficou assim a tela do programa
Espero que possa ser útil.
Páginas que me ajudaram
http://www.guj.com.br/java/76586-converter-um-campo-de-um-text-field-em-date#403825
http://www.guj.com.br/java/36076-converter-string-para-uma-data
http://stackoverflow.com/questions/754684/how-to-insert-a-sqlite-record-with-a-datetime-set-to-now-in-android-application
http://stackoverflow.com/questions/3842509/android-java-datetime-values-from-string-to-long-to-string-issue
Fiquem na Paz!!!
Escolhendo uma data com o date picker no android
HI,
Um outro componente que adicionei no formulário foi o Date Picker. O exemplo que achei coloca a data escolhida em um textview e o dialog para a escolha da data é a partir de um button.
Eu modifiquei o código para jogar a data escolhida no próprio button.
Usei o exemplo do site do android
http://developer.android.com/resources/tutorials/views/hello-datepicker.html
Que achei nesse site
http://blog.professorcoruja.com/2010/11/componente-date-picker-no-android-form.html
Fiquem na Paz.
Um outro componente que adicionei no formulário foi o Date Picker. O exemplo que achei coloca a data escolhida em um textview e o dialog para a escolha da data é a partir de um button.
Eu modifiquei o código para jogar a data escolhida no próprio button.
Usei o exemplo do site do android
http://developer.android.com/resources/tutorials/views/hello-datepicker.html
Que achei nesse site
http://blog.professorcoruja.com/2010/11/componente-date-picker-no-android-form.html
Fiquem na Paz.
Marcadores:
android,
button,
date picker,
dialogo,
escolher data
Populando um spinner a partir de um array
HI,
Usei a dica desse site para exibir os valores em um spinner que não estão em uma tabela do banco de dados. Nesse caso, os valores são provenientes de um array.
Para obter a posição do valor selecionado basta usar: Spinner.getSelectedItemPosition()
Fontes:
How to populate a Spinner widget from an Array
http://androidforbeginners.blogspot.com/2010/01/how-to-populate-spinner-widget-from.html
Obtendo a posição do item selecionado
http://stackoverflow.com/questions/2903961/how-to-get-an-items-position-from-items-id-in-android-spinner
Criando widget Spinner
http://www.portalandroid.org/comunidade/viewtopic.php?f=7&t=5670
Fiquem na Paz
Usei a dica desse site para exibir os valores em um spinner que não estão em uma tabela do banco de dados. Nesse caso, os valores são provenientes de um array.
Para obter a posição do valor selecionado basta usar: Spinner.getSelectedItemPosition()
Fontes:
How to populate a Spinner widget from an Array
http://androidforbeginners.blogspot.com/2010/01/how-to-populate-spinner-widget-from.html
Obtendo a posição do item selecionado
http://stackoverflow.com/questions/2903961/how-to-get-an-items-position-from-items-id-in-android-spinner
Criando widget Spinner
http://www.portalandroid.org/comunidade/viewtopic.php?f=7&t=5670
Fiquem na Paz
sexta-feira, maio 20, 2011
Campo data com valor padrão no SQLite
HI,
Ainda tou engatinhando no Android, levando uns tombos, mas graças a Deus eu tou conseguindo avançar.
No exemplo de controle de despesas já coloquei um spinner para indicar o tipo de pagamento da despesa.
Agora a minha batalha é colocar o campo data dessa despesa. Estava incluindo no SQLite Manager, extensão do firefox, um campo do tipo data e selecionei para não ter valor null, e quando se faz isso, temos obrigação de informar um valor padrão. Tinha colocado SYSDATE, mas não deu certo.
Pesquisando no google, encontrei uma solução usando uma trigger para atualizar a data antes de inserir.
CREATE TABLE foo (
id NUMBER NOT NULL,
created DATE);
CREATE TRIGGER insert_date AFTER INSERT ON foo
BEGIN
UPDATE foo SET created = DATETIME('NOW') WHERE rowid = new.rowid;
END;
Só que dessa maneira aí, o campo vai ser atualizado, mesmo que eu informe a data na tela.
Modifiquei a trigger para testar se o campo está vazio, se tiver, atualiza a data atual do banco.
CREATE TRIGGER insert_date AFTER INSERT ON foo
BEGIN
UPDATE foo SET created = DATETIME('NOW') WHERE rowid = new.rowid and new.created is null;
END;
Agora vou tentar colocar o campo data no formulário.
Espero que possar ser úitl, fiquem na Paz
quarta-feira, maio 18, 2011
Android, primeiro programa com banco de dados.
HI,
Hoje consegui terminar um exemplo de uma aula sobre android da devmedia. Deu um trabalhão danado. O vídeo é do tempo que nem tinha celular com android. Mas graças a Deus e com a ajuda das pessoas que alimentam o google com conteúdo, consegui botar para funcionar. Também tive esse trabalho todo porque não manjo quase nada de Java.
Consegui avançar depois que descobrir como contornar o erro "Source not found". Achei a dica nesse blog para usar controle de exceção e ter no debug a mensagem correta do erro.
E alguns dos erros é que algumas coisas deixaram de existir no sdk atual, e tive que pesquisar como fazer da forma atual.
Alguns sites que me ajudaram:
sobre menu
tive que usar equals para passar uma long para string e testar se era igual a zero, para saber se era vazia.
Esse foi por causa de um erro ao recuperar os dados do item selecionado, tinha que mover para o primeiro, mesmo retornando apenas um resultado
Tela do Programa
Agora vou incrementá-lo. Usar pesquisa, outras tabelas, etc.
Fiquem na Paz.
Marcadores:
android,
banco de dados,
exemplo,
programadores
terça-feira, maio 10, 2011
Exibir dados a partir de uma procedure
HI,
Hoje tive uns probleminhas para exibir o resultado de uma procedure. Um cliente criou uma procedure para retornar os dados dos clientes. Nunca tinha usado isso no Delphi. Criei rapidinho uma tela para exibir esse resultado em um componente grid.
O primeiro problema que tive, e que recorri ao google, foi quando tentei setar o componente TStoredProc para true. Deu o seguinte erro: error creating cursor handle. Pesquisando no google, descobrir que só posso dá um StoredProc1.ExecProc;. Pois bem, associei um datasource ao componente StoredProc1 e em runtime, executei o ExecProc e não mostrou nada no grid. Aí pensei, deve ser por que esse troço só serve para executar comandos que não retornam dados. Foi aí que tive a idéia de dar um select na procedure e usar o componente query.
Ficou assim: Select * from Nome_Procedure. Dei um open e mostrou os resultados no Grid. Mas aí surgiu o segundo problema. Em algumas colunas tava mostrando (BYTES) ao invés do valor do campo.
Coloquei um Label para receber o conteúdo de campo, mas não mostrou nada. Label.caption := Query.FieldByName('codigo').AsString;
Fui a procura de uma rotina para converter de bytes para integer e achei esse código.
Fiz uma adaptação e criei essa função:
function BytesToInteger(Campo: TField): integer;
var MyBuffer : ^integer;
begin
with Campo do
begin
GetMem(MyBuffer, DataSize);
try
if not GetData(MyBuffer) then
result := 0
else
result := MyBuffer^;{ Do something with the data };
finally
{ Free the space }
FreeMem(MyBuffer, DataSize);
end;
end;
end;
Testei na tela e exibiu em um label o código correto, fiquei animado. Depois eu modifiquei a consulta para converter para float, com o resultado, desanimei. Mostrou o resultado em notação científica. Se eu fosse tentar resolver isso ia ficar muito complicado o código, cheio de conversões.
Foi aí que eu tive a idéia de tratar isso na query, fazendo um type cast.
A query tava assim
select codigo, nome, limite from EXPCLIENTES
Modificando a query
select cast(codigo as integer) codigo, nome, cast(limite as double precision) limite from EXPCLIENTES
Passou a apresentar corretamente os campos no Grid.
Espero que possa ser útil.
Fiquem na Paz
Marcadores:
bde,
bytes,
delphi,
query,
storedprocedure
segunda-feira, abril 18, 2011
Formatando seu código no blog
HI,
Tou indo domir, mas antes deixo essa dica que precisei utilizar agora para formatar o código de uma rotina em c#. Para ficar um pouco mais elegante.
Primeiro: Edite o HTML do blogspot e coloquei a formatação CSS. Pegue aqui.
Segundo: Utilize este site para formatar seu código http://www.manoli.net/csharpformat/
Terceiro: Cole o código HTML no post ( na opção Editar Html ) e pronto.
Na Visualização o código não aparece formatado. Deve ter um outro lugar para colocar o CSS, depois vejo isso.
Tou indo domir, mas antes deixo essa dica que precisei utilizar agora para formatar o código de uma rotina em c#. Para ficar um pouco mais elegante.
Primeiro: Edite o HTML do blogspot e coloquei a formatação CSS. Pegue aqui.
Segundo: Utilize este site para formatar seu código http://www.manoli.net/csharpformat/
Terceiro: Cole o código HTML no post ( na opção Editar Html ) e pronto.
public static string GetRandomPasswordUsingGUID(int length)
{
// Get the GUID
string guidResult = System.Guid.NewGuid().ToString();
// Remove the hyphens
guidResult = guidResult.Replace("-", string.Empty);
// Make sure length is valid
if (length >= 0 || length > guidResult.Length)
throw new ArgumentException("Length must be between 1 and " + guidResult.Length);
// Return the first length bytes
return guidResult.Substring(0, length);
}
Na Visualização o código não aparece formatado. Deve ter um outro lugar para colocar o CSS, depois vejo isso.
Intel +, fiquem na Paz!!!
Retornar apenas números e letras
HI,
Estou usando Asp.net com C#
Precisei retornar apenas os números do CPF informado no TextBox, que está com mascara.
Não estava a fim de usar replace. Então pesquisei no google uma rotina que utilizasse Expressão Regularar.
Montei essa função com o que achei.
Intel +, fiquem na Paz!!!
Estou usando Asp.net com C#
Precisei retornar apenas os números do CPF informado no TextBox, que está com mascara.
Não estava a fim de usar replace. Então pesquisei no google uma rotina que utilizasse Expressão Regularar.
Montei essa função com o que achei.
/// <summary>
/// Retornar apenas as letras e os números da variável passada como parametro
/// </summary>
/// <param name="valor">Valor com caracteres</param>
/// <returns>Apenas número e letras</returns>
public static string RetornaNumeroLetra(string valor)
{
try
{
Regex regexObj = new Regex(@"[^0-9]");
return regexObj.Replace(valor, "");
}
catch (ArgumentException ex)
{
// Syntax error in the regular expression
throw new Exception(ex.Message);
}
}
Intel +, fiquem na Paz!!!
Marcadores:
asp.net,
csharp,
Expressão Regular,
RegExp,
remover
O Último Retorno
HI,
Quase que não consigo me logar no meu blog, hehehe. Tempão que não apareço por aqui.
Tou voltando para ficar.
Conteúdo para manter esse blog atualizado, tem um montão.
Acabei de fazer um curso de Asp.Net e tou com boas práticas para compartilhar com vocês. Espero que voltem todos, hehehe. E que apareçam mais visitantes.
Também tou estudando Android, mas por conta própria.
Intel +, fiquem na Paz!!!
Quase que não consigo me logar no meu blog, hehehe. Tempão que não apareço por aqui.
Tou voltando para ficar.
Conteúdo para manter esse blog atualizado, tem um montão.
Acabei de fazer um curso de Asp.Net e tou com boas práticas para compartilhar com vocês. Espero que voltem todos, hehehe. E que apareçam mais visitantes.
Também tou estudando Android, mas por conta própria.
Intel +, fiquem na Paz!!!
Assinar:
Postagens (Atom)