Você está aqui: Cards de |
||
|
||
|
|
||
Java ::: Dicas & Truques ::: Data e Hora |
Como retornar a diferença de meses entre duas datas em Java - Datas e horas em JavaQuantidade de visualizações: 9801 vezes |
O trecho de código abaixo mostra como obter a diferença de meses entre dois objetos Date. Estude-o atentamente. Esta é uma técnica muito útil para programadores que lidam com cálculos de datas em suas aplicações:
package arquivodecodigos;
import java.util.*;
import java.text.*;
public class Estudos{
public static void main(String args[]){
try{
// constrói a primeira data
DateFormat fm = new SimpleDateFormat(
"dd/MM/yyyy");
Date data1 = (Date)fm.parse("20/10/2008");
// constrói a segunda data
fm = new SimpleDateFormat("dd/MM/yyyy");
Date data2 = (Date)fm.parse("30/12/2008");
// vamos obter a diferença de meses
long segundos = (data2.getTime() -
data1.getTime()) / 1000;
int meses = (int)Math.floor(segundos / 2592000);
segundos -= meses * 2592000;
int dias = (int)Math.floor(segundos / 86400);
// exibe o resultado
System.out.println("As duas datas tem " +
meses + " meses e " + dias +
" dias de diferença");
}
catch(ParseException e){
e.printStackTrace();
}
}
}
Ao executar este código Java nós teremos o seguinte resultado: As duas datas tem 2 meses e 11 dias de diferença |
Python ::: Tkinter GUI Toolkit ::: Entry |
Como setar o foco em uma caixa de texto Entry do Tkinter usando a função focus_set()Quantidade de visualizações: 1714 vezes |
|
Em várias situações durante o processo de programação em Tkinter nós precisamos, via programação, trocar o foco de uma caixa de texto para outra. Isso pode ser feito com o auxílio da função focus_set(). No código abaixo nós temos uma janela Tkinter com duas caixas de texto Entry e um botão Button. Experimente digitar conteúdo nas duas caixas de texto e depois clicar no botão. Você verá que o foco é colocado novamente na primeira caixa de texto. Veja o código Python completo:
# vamos importar o módulo Tkinter
from tkinter import *
from tkinter.ttk import *
# variáveis globais
caixa_texto_1 = None
# método principal
def main():
# acessamos a variável global
global caixa_texto_1
# vamos criar o frame principal da aplicação Tkinter
janela = Tk()
# agora definimos o tamanho da janela
janela.geometry("600x400")
# criamos uma caixa de texto Entry de linha única
caixa_texto_1 = Entry(janela, width=40)
caixa_texto_1.grid(column=0, row=0, sticky=W, padx=15, pady=10)
# criamos uma segunda caixa de texto Entry de linha única
caixa_texto_2 = Entry(janela, width=40)
caixa_texto_2.grid(column=0, row=1, sticky=W, padx=15, pady=0)
# vamos criar um botão Button
btn = Button(janela, text="Definir Foco", width=20, command=definir_foco)
btn.grid(column=0, row=2, sticky=W, padx=15, pady=10)
# entramos no loop da aplicação
janela.mainloop()
# função para definir o foco na primeira caixa de texto
def definir_foco():
# definimos o foco na primeira caixa de texto Entry
caixa_texto_1.focus_set()
if __name__== "__main__":
main()
|
Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet |
Como tornar o TClientDataSet do Delphi somente leitura usando a propriedade ReadOnlyQuantidade de visualizações: 12239 vezes |
|
Em algumas situações gostaríamos que um TClientDataSet fosse somente leitura, ou seja, não queremos permitir inserção, atualização ou exclusão dos dados do dataset. Para isso podemos usar a propriedade ReadOnly. Se seu valor for True, os dados do TClientDataSet serão apenas para leitura. Se o valor for False, os dados podem ser modificados e/ou novos dados podem ser inseridos no dataset. O valor padrão é False. Em tempo de design a propriedade ReadOnly do TClientDataSet pode ser ajustada selecionando-se o componente no formulário e acessando o Object Inspector. Em tempo de execução esta propriedade pode ser ajustada por meio do seguinte trecho de código: procedure TForm3.Button3Click(Sender: TObject); begin // vamos tornar o TClientDataSet somente leitura ClientDataSet1.ReadOnly := True; end; Se necessário, podemos obter o valor desta propriedade em tempo de execução da seguinte forma:
procedure TForm3.Button3Click(Sender: TObject);
begin
// vamos verificar se o TClientDataSet é somente leitura
if ClientDataSet1.ReadOnly then
ShowMessage('O ClientDataSet é somente leitura')
else
ShowMessage('O ClientDataSet NÃO é somente leitura')
end;
Ao executarmos este código e clicarmos no botão teremos uma mensagem parecida com: "O ClientDataSet NÃO é somente leitura". É importante observar que se tentarmos efetuar alguma operação que modifica o conteúdo de um TClientDataSet somente leitura nós teremos uma exceção do tipo: Project Project2.exe raised exception class EDatabaseError with message 'ClientDataSet1': Cannot modify a read-only dataset'. Quando ajustamos o valor da propriedade ReadOnly para True, automaticamente a propriedade CanModify do dataset é ajustada para False. Importante: Mesmo que o valor da propriedade ReadOnly seja False, os usuários ainda podem ser impedidos de modificar os dados de um client dataset se este obtém seus dados a partir de um provider (por exemplo: TDataSetProvider). A propriedade Options do provider pode limitar se os dados podem ser editados e, se puderem, os tipos de alterações permitidos. Esta dica foi escrita e testada no Delphi 2009. |
Java ::: Java + MySQL ::: Metadados da Base de Dados (Database Metadata) |
Java MySQL - Como obter os tipos de tabelas suportados pelo MySQL usando o método getTableTypes() da classe DatabaseMetaDataQuantidade de visualizações: 5700 vezes |
|
Em algumas situações precisamos obter os tipos de tabelas suportados por uma determinada versão do MySQL. Isso pode ser feito com uma chamada ao método getTableTypes() da classe com.mysql.jdbc.DatabaseMetaData. Um objeto desta classe é obtido a partir do método getMetaData() da interface Connection (para o driver com.mysql.jdbc.Driver, é claro). A assinatura do método getTableTypes() é: public ResultSet getTableTypes() throws SQLException Vamos ver um exemplo? Veja um trecho de código que usei para listar os tipos de tabelas disponíveis no MySQL 5.0:
package estudosbancodados;
import java.sql.*;
public class EstudosBancoDados{
public static void main(String[] args) {
// strings de conexão
String databaseURL = "jdbc:mysql://localhost/estudos";
String usuario = "root";
String senha = "osmar1234";
String driverName = "com.mysql.jdbc.Driver";
try {
Class.forName(driverName).newInstance();
Connection conn = DriverManager.getConnection(databaseURL, usuario, senha);
// vamos obter um objeto da classe com.mysql.jdbc.DatabaseMetaData
DatabaseMetaData dbmd = conn.getMetaData();
// vamos obter os tipos de tabelas suportadas por esta versão do MySQL
ResultSet tiposTabelas = dbmd.getTableTypes();
while(tiposTabelas.next()){
System.out.println(tiposTabelas.getString("TABLE_TYPE"));
}
// vamos fechar o ResultSet
tiposTabelas.close();
}
catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
catch (Exception e) {
System.out.println("Problemas ao tentar conectar com o banco de dados: " + e);
}
}
}
O resultado da execução deste código foi: TABLE VIEW LOCAL TEMPORARY |
JavaScript ::: Dicas & Truques ::: Miscelâneas |
JavaScript para iniciantes - Como usar o método escape() para codificar uma frase em JavaScriptQuantidade de visualizações: 12970 vezes |
|
A função escape() da linguagem JavaScript é usada quando precisamos codificar uma palavra, frase ou texto, ou seja, uma string. Em geral nós a usamos para codificar caracteres especiais em uma string, com a exceção dos caracteres e símbolos "* @ - _ + . /". Veja um exemplo completo:
<html>
<head>
<title>Estudando JavaScript</title>
</head>
<body>
<script type="text/javascript">
var frase = "Programar em JavaScript é muito bom";
document.write("Original: " + frase + "<br>");
document.write("Codificada: " + escape(frase));
</script>
</body>
</html>
Ao executarmos este código nós teremos o seguinte resultado: Original: Programar em JavaScript é muito bom Codificada: Programar%20em%20JavaScript %20%E9%20muito%20bom Lembre-se de que o objetivo da função escape() é tornar uma string portável, ou seja, que pode ser transmitida pela rede para qualquer computador que suportar os caracteres ASCII. Nota: A função escape() foi marcada como desatualizada (deprecated) a partir do JavaScript 1.5. Em vez dela nós devemos usar as funções encodeURI() ou encodeURIComponent(). |
Desafios, Exercícios e Algoritmos Resolvidos de JavaScript |
Veja mais Dicas e truques de JavaScript |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |




