![]() |
|||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
|
MySQL ::: Dicas & Truques ::: Chaves, Índices e Restrições de Integridade Referencial |
Como adicionar uma chave primária a uma tabela MySQL usando o comando ALTER TABLE ADD PRIMARY KEYQuantidade de visualizações: 8161 vezes |
Em algumas situações poderá ocorrer a necessidade, talvez por motivos de manutenção na base de dados, de criar uma chave primária para uma tabela MySQL já existente. Isso pode ser feito com o auxílio do comando DDL ALTER TABLE ADD PRIMARY KEY. Comece criando uma tabela livros sem chave primária. Veja o comando CREATE TABLE: CREATE TABLE livros( id int(11) unsigned NOT NULL, titulo varchar(45) NOT NULL, paginas int(10) unsigned NOT NULL )ENGINE=InnoDB; Se dispararmos um comando DESCRIBE livros veremos a seguinte estrutura: Field Type Null Key Default Extra id int(11) unsigned NO - - - titulo varchar(45) NO - - - paginas int(10) unsigned NO - - - ALTER TABLE livros ADD PRIMARY KEY(id); Dispare o comando DESCRIBE livros novamente e veja o resultado. Agora o campo id está marcado como chave primária: Field Type Null Key Default Extra id int(11) unsigned NO PRI - - titulo varchar(45) NO - - - paginas int(10) unsigned NO - - - |
Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid |
Como obter o índice da linha da célula atual em um TDBGrid do DelphiQuantidade de visualizações: 9978 vezes |
Como obter o índice da linha da célula atual (com foco) em um TDBGrid do Delphi Em algumas situações precisamos obter o índice da linha da célula atual, ou seja, a célula que detém o foco no momento em um TDBGrid. Isso pode ser feito por meio da propriedade Row da classe TCustomGrid (e publicada na classe TStringGrid). Como esta propriedade não está publicada na classe TDBGrid (Delphi 2009), o que fazemos é um casting para a classe TStringGrid. Veja um trecho de código no qual usamos o evento Click de um botão para informar o índice da linha da célula atual: procedure TForm3.Button3Click(Sender: TObject); var indice: Integer; begin // vamos obter o índice da linha da célula atual indice := TStringGrid(DBGrid1).Row; ShowMessage('O índice da linha da célula atual é: ' + IntToStr(indice)); end; Execute o código e clique no botão. Você verá uma mensagem parecida com: "O índice da linha da célula atual é: 4". Lembre-se de que o índice da linha fixa do DBGrid é 0. Esta dica foi escrita e testada no Delphi 2009. |
JavaScript ::: Dicas & Truques ::: Data e Hora |
Como subtrair dias de uma data em JavaScript - Data e horas em JavaScriptQuantidade de visualizações: 16806 vezes |
Em algumas situações, principalmente quando estamos desenvolvendo aplicações que envolvem datas, horas e calendários em JavaScript, nós precisamos subtrair dias de uma data. Nesta dica eu mostro como isso pode ser feito. Veja o código completo abaixo: <html> <head> <title>Estudando JavaScript</title> </head> <body> <script type="text/javascript"> function subtrairDias(data, dias){ return new Date(data.getTime() - (dias * 24 * 60 * 60 * 1000)); } document.write('Hoje é: ' + (new Date()).toLocaleDateString() + '<br>'); document.write('5 dias atrás era: ' + subtrairDias(new Date(), 5).toLocaleDateString()); </script> </body> </html> Ao executarmos este código nós teremos o seguinte resultado: Hoje é: 25/03/2021 5 dias atrás era: 20/03/2021 |
PHP ::: Dicas & Truques ::: Arquivos e Diretórios |
Curso de PHP - Como obter a quantidade de linhas em um arquivoQuantidade de visualizações: 9913 vezes |
Neste exemplo veremos como abrir um arquivo texto usando a função file() da linguagem PHP e em seguida vamos obter a quantidade de linhas neste arquivo. Veja o código completo para o exemplo: <html> <head> <title>Estudando PHP</title> </head> <body> <?php // define o nome do arquivo a ser lido $arquivo = 'dados.txt'; // obtém todas as linhas do arquivo $linhas = file($arquivo); // usa a função count() para obter a quantidade de // linhas $quant = count($linhas); echo "Este arquivo contém " . $quant . " linhas"; ?> </body> </html> Ao executar este código PHP nós teremos o seguinte resultado: Este arquivo contém 4 linhas |
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: 11980 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 ::: Dicas & Truques ::: Formatação de datas, strings e números |
Como usar o método format() da classe NumberFormat do Java para formatar um valor float ou double de acordo com as configurações regionais - RevisadoQuantidade de visualizações: 11330 vezes |
Nesta dica mostrarei como usar o método format() da classe NumberFormat da linguagem Java. Esta classe está no pacote java.text e é usada para a formatação e análise de valores numéricos. Note como usei o método getInstance() sem argumentos. Isso nos permite retornar uma instância de NumberFormat de acordo com as configurações regionais da máquina na qual o código está sendo executado. Veja o código completo: package arquivodecodigos; import java.text.NumberFormat; public class Estudos{ public static void main(String[] args){ // vamos double a ser formatado double valor = 1234567.89; // vamos obter uma instância de acordo com as configurações // regionais NumberFormat nf = NumberFormat.getInstance(); // e agora usamos o método format() para formatar String numFormatado = nf.format(valor); // exibimos o valor original System.out.println("Sem formatação: " + valor); // com formatação System.out.println("Com formatação: " + numFormatado); } } Ao executar este código nós teremos o seguinte resultado: Sem formatação: 1234567.89 Com formatação: 1.234.567,89 Esta dica foi revisada e testada no Java 8. |
AutoCAD Civil 3D .NET C# ::: Dicas & Truques ::: Alinhamento - Alignment |
Como retornar a quantidade de perfis de um alinhamento do Civil 3D usando a função GetProfileIds() da API C# do AutoCAD Civil 3DQuantidade de visualizações: 570 vezes |
Em algumas situações nós precisamos obter a quantidade de perfis (profiles) de um determinado alinhamento do AutoCAD Civil 3D. Para isso nós podemos usar a função GetProfileIds(), que retorna uma coleção ObjectIdCollection contendo os ids de todos os perfis pertencentes a um determinado alinhamento. Para este exemplo eu usei um alinhamento chamado "EIXO DA RODOVIA" e criei para ele um profile chamado "TN - SUPERFÍCIE NATURAL" para representar a superfície natural e outro chamado "GREIDE - PERFIL VERTICAL DA RODOVIA" para representar o alinhamento vertical. Note que, após obtermos a coleção ObjectIdCollection por meio da função GetProfileIds(), tudo que temos a fazer é acessar a sua propriedade Count. Veja o código AutoCAD Civil 3D .NET C# completo para o exemplo: using System; using Autodesk.AutoCAD.Runtime; using Autodesk.Civil.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.Civil.DatabaseServices; namespace Estudos { public class Class1 : IExtensionApplication { [CommandMethod("Alinhamento")] public void Alinhamento() { // vamos obter uma referência ao documento atual do Civil 3D CivilDocument doc = CivilApplication.ActiveDocument; // obtemos o editor Editor editor = Application.DocumentManager.MdiActiveDocument.Editor; // vamos pesquisar o alinhamento chamado "EIXO DA RODOVIA" string nome = "EIXO DA RODOVIA"; // vamos iniciar um nova transação using (Transaction ts = Application.DocumentManager.MdiActiveDocument. Database.TransactionManager.StartTransaction()) { try { // efetuamos uma chamada ao método GetAlignmentByName() passando // o documento atual do AutoCAD Civil 3D e o nome do alinhamento // que queremos encontrar Alignment alinhamento = GetAlignmentByName(doc, nome); // ops, o alinhamento não foi encontrado if (alinhamento == null) { editor.WriteMessage("\nO alinhamento não foi encontrado."); } else { // encontramos o alinhamento. Vamos mostrar a quantidade de perfis // que ele possui ObjectIdCollection ids_perfis = alinhamento.GetProfileIds(); // e mostramos o resultado editor.WriteMessage("\nO alinhamento possui " + ids_perfis.Count + " perfis.\n"); } } catch (System.Exception e) { // vamos tratar o erro editor.WriteMessage("Erro: {0}", e.Message); } } } // função C# que retorna um alinhamento por nome, ou null em // caso de não encontrar o alinhamento desejado public Alignment GetAlignmentByName(CivilDocument doc, string nome) { // vamos declarar um objeto da classe Alignment Alignment alinhamento = null; // agora vamos obter os ids de todos os alinhamentos ObjectIdCollection alinhamentos = doc.GetAlignmentIds(); // vamos percorrer todos os ids de alinhamentos retornados foreach (ObjectId idAlinhamento in alinhamentos) { alinhamento = idAlinhamento.GetObject(OpenMode.ForRead) as Alignment; // encontramos o alinhamento if (alinhamento.Name.Equals(nome)) { return alinhamento; } } // retorna null se o alinhamento não for encontrado return null; } public void Initialize() { // pode deixar em branco } public void Terminate() { // pode deixar em branco } } } Ao executar este código AutoCAD Civil 3D .NET C# nós teremos o seguinte resultado: O alinhamento possui 2 perfis. |
C# ::: Dicas & Truques ::: Data e Hora |
Como retornar o dia do mês da data atual em C# usando a propriedade Day da classe DateTimeQuantidade de visualizações: 60 vezes |
Em algumas situações nós precisamos obter o dia do mês de uma determinada data em C#. Para isso nós podemos acessar a propriedade Day da estrutura DateTime. Veja em seguida um trecho de código no qual mostramos o dia do mês da data atual: using System; namespace Estudos { class Program { static void Main(string[] args) { // vamos obter a data e hora atual DateTime agora = DateTime.Now; // agora vamos obter o dia da data int dia = agora.Day; // e mostramos o resultado Console.WriteLine("O dia do mês é: {0:D}", dia); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Ao executar este código C# nós teremos o seguinte resultado: O dia do mês é: 16 |
Java ::: Pacote java.util ::: Iterator |
Como usar objetos da interface Iterator do Java em suas aplicaçõesQuantidade de visualizações: 2974 vezes |
Um objeto da interface Iterator<E>, no pacote java.util, é usado para percorrer os elementos de uma coleção. Um Iterator é usado com frequencia em substituição a um Enumeration. Há duas diferenças principais entre os dois: a) Um Iterator permite a remoção de elementos na coleção sendo percorrida no momento. b) Os métodos do Iterator são mais curtos e apresentam melhoria em relação aos métodos do Enumeration. As subinterfaces conhecidas de Iterator<E> são ListIterator<E> e XMLEventReader. As classes conhecidas que implementam esta interface são BeanContextSupport.BCSIterator, EventReaderDelegate e Scanner. Veja um trecho de código no qual usamos um Iterator para percorrer e exibir os valores dos elementos de uma ArrayList: package estudos; import java.util.ArrayList; import java.util.Iterator; public class Estudos{ public static void main(String[] args){ // vamos criar uma ArrayList ArrayList<String> pessoas = new ArrayList(); pessoas.add("Osmar"); pessoas.add("Carlos"); pessoas.add("Fernanda"); // vamos obter um Iterator para a lista e percorrer todos os elementos for(Iterator<String> pessoa = pessoas.iterator(); pessoa.hasNext();){ System.out.println(pessoa.next()); } } } Ao executar este exemplo nós teremos o seguinte resultado: Osmar Carlos Fernanda |
Java ::: Pacote java.lang ::: Character |
Como usar a classe Character da linguagem Java para tratar caracteres individuais em seus programasQuantidade de visualizações: 7259 vezes |
A classe Character, uma classe pública e final (ou seja, não é possível fazer subclasse desta classe) e presente no pacote java.lang é uma classe encapsuladora (wrapper class) para o tipo primitivo char. Objetos desta classe contém apenas um campo, cujo tipo é char. Veja a posição desta classe na hierarquia de classes da plataforma Java: java.lang.Object java.lang.Character Esta classe implementa as interfaces Serializable e Comparable<Character>. Uma das vantagens de se usar objetos da classe Character é que podemos chamar seus métodos estáticos para obter informações sobre o tipo char encapsulado. Veja: public class Main { public static void main(String[] args) { // uma variável do tipo char char letra = 'A'; // vamos verificar se o caractere anterior é uma letra maiúscula if(Character.isUpperCase(letra)){ System.out.println("A letra é maiúscula"); } else{ System.out.println("A letra não é maiúscula"); } } } Ao executarmos este código teremos o seguinte resultado: A letra é maiúscula Veja que neste trecho de código nós usamos o método estático isUpperCase() da classe Character para verificar se um determinado caractere está em letras maiúsculas. |
Nossas 20 dicas & truques de programação mais populares |
JavaScript - Cookies em JavaScript - Como escrever uma função para a criação de cookies em JavaScript Python - Como repetir os elementos de um vetor ou matriz usando a função repeat() da NumPy do Python Python - Como usar a biblioteca Pandas do Python em seus projetos de Data Science e Machine Learning AutoCAD Civil 3D - Como criar pontos COGO no AutoCAD Civil 3D |
Você também poderá gostar das dicas e truques de programação abaixo |
Python - Como criar arrays (vetores e matrizes) usando o objeto ndarray da biblioteca Numpy do Python Python - Como contar quantas vezes um elemento aparece em uma lista do Python usando a função count() |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |