Você está aqui: Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet

Como usar o componente TClientDataSet do Delphi em suas aplicações de banco de dados

Quantidade de visualizações: 15583 vezes
Um objeto da classe TClientDataSet implementa um conjunto de dados independente de banco de dados. Este controle representa um conjunto de dados em memória (in-memory).

Antes de prosseguirmos, veja a posição desta classe na hierarquia de classes do Delphi:

System.TObject
  Classes.TPersistent
    Classes.TComponent
      DB.TDataSet
        DBClient.TCustomClientDataSet
          DBClient.TClientDataSet
Por descendência, a classe TClientDataSet implementa as interfaces Classes.IInterfaceComponentReference, System.IInterface e DB.IProviderSupport.

Um controle TClientDataSet pode ser usado das seguintes formas:

a) Um conjunto de dados baseado em arquivo, único e totalmente funcional direcionado a aplicações compostas de apenas uma camada. Quando usado desta forma, o client dataset representa os dados armazenados em um arquivo dedicado na máquina do usuário.

b) Um buffer em memória local dos registros de um outro conjunto de dados. O outro conjunto de dados (a fonte dos dados) pode residir no mesmo formulário ou data module que o client dataset (por exemplo, quando o client dataset fornece navegação e edição para os dados de um conjunto de dados unidirecional). O conjunto de dados fonte pode também residir em um sistema separado quando o client dataset apoia a parte cliente de uma aplicação de bancos de dados de múltiplas camadas.

A forma mais comum de se usar um controle TClientDataSet é acessando a aba Data Acccess da Tool Palette (Paleta de Ferramentas) e arrastando-o para o seu formulário. Em seguida ajustamos algumas de suas propriedades em tempo de design e pronto. Veja o passo-a-passo para configurar um TClientDataSet para representar uma tabela no banco de dados MySQL (outras dicas minhas mostram como efetuar a conexão com outros bancos de dados):

1) Certifique-se de que o banco de dados MySQL está devidamente configurado e funcionando. Inicie-o, anote o nome de usuário e senha e vamos começar.

2) Vá até a aba de componentes dbExpress e arraste um componente TSQLConnection para o formulário. Este é o componente responsável pela conexão com o banco de dados. Selecione o componente no formulário de forma a acessar suas propriedades no Object Inspector. Em seguida siga atentamente as observações a seguir:

a) Vá na propriedade ConnectioName e selecione MySQLConnection. Automaticamente a propriedade Driver é definida como MySQL. A propriedade LibrayName será definida como dbxmys.dll. O mesmo acontece com a propriedade VendorLib, que é definida como libmysql.dll. dbxmys.dll é fornecida com o Delphi enquanto libmysql.dll vem com a instalação do MySQL e deverá estar em C:\Windows\System para que sua aplicação seja executada com sucesso.

b) O simples fato de definirmos o valor MySQL para a propriedade ConnectionName faz com que os parâmetros de conexão sejam criados com os valores padrões e guardados na propriedade Params. O próximo passo é alterar estes valores de forma a refletir a realidade do banco de dados que vamos usar. Vá em Params e acione o editor Value List Editor. Em HostName você deverá informar o nome ou IP do servidor MySQL. Se estiver rodando localmente use apenas "localhost". Em Database informe o nome da base de dados, por exemplo, "estoque". Em User_Name informe o usuário do banco de dados. Geralmente é "root". Em Password informe a senha do banco de dados. Pressione OK.

c) Vá na propriedade LoginPrompt e altere seu valor para False. Isso evita que a tela de login seja exibida quando tentarmos efetuar a conexão. Agora vá na propriedade Connected e altere seu valor para True. Se correr tudo bem você já estará conectado ao banco de dados MySQL.

3) Agora coloque um componente TSQLDataSet no formulário e defina sua propriedade SQLConnection para o componente TSQLConnection que representa a conexão com o banco de dados. Em seguida defina o valor "ctTable" para a propriedade CommandType. Na propriedade CommandText você deverá informar o nome da tabela que será representada por este TSQLDataSet. Finalmente ajuste a propriedade Active para True.

4) O próximo passo é colocar no formulário um componente TDataSetProvider (na aba Data Access). Este componente é responsável por fazer a conexão com o conjunto de dados (dataset), extrair os dados do SQLDataSet e gerar os comandos de atualização SQL adequados. Assim, informe o valor "SQLDataSet1" para a sua propriedade DataSet.

5) Finalmente chegamos ao componente TClientDataSet. Vá na aba Data Acccess e arraste um TClientDataSet para o formulário. Em seguida informe o valor "DataSetProvider1" para sua propriedade ProviderName. Ajuste sua propriedade Active para True.

6) Hora de exibir e manipular os dados. Vá na aba Data Access e arraste um controle TDataSource para o formulário. Aponte sua propriedade DataSet para "ClientDataSet1". Agora vá na aba Data Controls e arraste um TDBGrid para o formulário. Ajuste sua propriedade DataSource para "DataSource1". Se tudo correu bem, você já verá os registros da tabela serem exibidos no DBGrid.

7) Hora de executar a aplicação. Pressione F9 e vamos ao resultado. Experimente navegar e editar os registros no DBGrid. A aplicação permitirá que você faça isso. No entanto, ao fechar a aplicação e abrí-la novamente você perceberá que as alterações não foram refletidas no banco de dados. Para que isso aconteça, coloque o código abaixo no evento Click de um botão:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

procedure TForm3.Button1Click(Sender: TObject);
begin
  if (ClientDataSet1.ChangeCount > 0) then
    ClientDataSet1.ApplyUpdates(-1);
end;

Pronto. Execute a aplicação novamente e faça modificações nos dados exibidos no DBGrid (é preciso sair da linha de edição para que os dados sejam atualizados no DBGrid). Clique no botão para atualizar os dados na tabela do banco de dados. Feche a aplicação a abra-a novamente. Note que agora os dados foram atualizados com sucesso.

Esta dica foi escrita e testada no Delphi 2009.

Link para compartilhar na Internet ou com seus amigos:

Java ::: Estruturas de Dados ::: Árvore Binária e Árvore Binária de Busca

Estruturas de dados em Java - Como obter o nó com maior valor em uma árvore binária de busca usando Java

Quantidade de visualizações: 2229 vezes
Em exemplos dessa seção nós vimos como criar árvores binárias e árvores binárias de busca em Java e como pesquisar ou fazer a sua travessia, visitando cada um dos nós. Nesta dica mostrarei como obter o nó com o maior valor em uma árvore binária. O truque aqui é descer o lado direito da árvore até o último nó. Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

// método que permite retornar o maior nó de uma árvore
// binária de busca
public No retornarMaiorElemento(){
  // chama a versão recursiva do método
  return retornarMaiorElemento(raiz);
}
  
public No retornarMaiorElemento(No no){
  if((no == null) || (no.getDireito() == null)){
    return no; // ponto de parada
  }
  else{ // vamos continuar descendo do lado direito
    return retornarMaiorElemento(no.getDireito());
  }
}

Este método faz parte da classe ArvoreBinariaBusca.java. Veja agora como chamá-lo a partir da classe principal, ou seja, a classe de teste:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arvore_binaria;

import java.util.Scanner;

public class ArvoreBinariaTeste {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);  
       
    // vamos criar um novo objeto da classe ArvoreBinariaBusca
    ArvoreBinariaBusca arvore = new ArvoreBinariaBusca();
    
    // vamos inserir 5 valores na árvore
    for(int i = 0; i < 5; i++){
      System.out.print("Informe um valor inteiro: ");
      int valor = Integer.parseInt(entrada.nextLine());
       
      // vamos inserir o nó e verificar o sucesso da operação
      if(!arvore.inserir(valor)){
        System.out.println("Não foi possível inserir." +
          " Um elemento já contém este valor.");  
      }
    }
     
    // vamos obter o maior elemento na árvore binária de busca
    System.out.println("\nO maior nó é: " + 
      arvore.retornarMaiorElemento().getValor());
     
    System.out.println("\n");
  }
}

Ao executar este código teremos o seguinte resultado:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

Informe um valor inteiro: 6
Informe um valor inteiro: 13
Informe um valor inteiro: 64
Informe um valor inteiro: 21
Informe um valor inteiro: 3

O maior nó é: 64



Python ::: Dicas & Truques ::: Lista (List)

Como pesquisar um item em uma lista Python e retornar seu índice usando a função index()

Quantidade de visualizações: 10515 vezes
Em algumas situações nós precisamos pesquisar um item em uma List do Python e retornar o índice de sua primeira ocorrência. Para isso nós podemos usar o método index(), que aceita uma string, um number, um object, etc, e retorna o índice da primeira posição do item dentro da lista.

Veja um exemplo de seu uso:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

"""
  Este exemplo mostra como pesquisar um item em
  uma lista. Se o item for encontrado, seu índice é
  retornado. Do contrário uma exceção do tipo ValueError
  é levantada.
"""

def main():
  # cria uma lista de inteiros
  valores = [2, 5, 12, 2, 3, 32, 18]

  try:
    indice = valores.index(13)
  except ValueError:
    print("O valor pesquisado nao foi encontrado")
  else:
    print("O valor foi encontrado no índice", indice)
    
if __name__== "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

O valor pesquisado não foi encontrado.

Note que no exemplo nós usamos um bloco try..except para tratar a exceção ValueError, disparada quando o item pesquisado por meio da função index() não for encontrado na List. Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

Exception has occurred: ValueError
13 is not in list



C# ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como ordenar um array de strings em ordem alfabética em C# usando a classe StringComparer

Quantidade de visualizações: 17133 vezes
Nesta dica mostrarei como classificar um vetor de strings C# em ordem alfabética. Para isso nós vamos usar um objeto da classe StringComparer.

Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

using System;

namespace Estudos {
  class Program {
    static void Main(string[] args) {
      // cria e inicializa um array de strings
      string[] cidades = {"Goiânia", "São Paulo",
        "Rio de Janeiro", "Curitiba"};

      Console.WriteLine("Ordem original:");
      for (int i = 0; i < cidades.Length; i++) {
        Console.WriteLine(cidades[i]);
      }

      // vamos criar um objeto da classe StringComparer
      StringComparer ordenar = StringComparer.CurrentCultureIgnoreCase;

      // agora classificamos o vetor em ordem alfabética
      Array.Sort(cidades, ordenar);

      Console.WriteLine();
      Console.WriteLine("Ordem alfabética:");
      for (int i = 0; i < cidades.Length; i++) {
        Console.WriteLine(cidades[i]);
      }

      Console.WriteLine("\n\nPressione uma tecla para sair...");
      Console.ReadKey();
    }
  }
}

Ao executar este código C# nós teremos o seguinte resultado:

Ordem original:
Goiânia
São Paulo
Rio de Janeiro
Curitiba

Ordem alfabética:
Curitiba
Goiânia
Rio de Janeiro
São Paulo


Python ::: Pandas Python Library (Biblioteca Python Pandas) ::: Input e Output (Entrada e Saída)

Como usar o método read_csv() do Pandas da linguagem Python para carregar um dataset e retorná-lo como um DataFrame

Quantidade de visualizações: 4549 vezes
Quando estamos desenvolvendo soluções em Data Science ou Machine Learning, é comum precisarmos carregar dados contidos em arquivos .csv (nos quais os registros são separados por vírgulas ou ponto-e-vírgula). Para isso podemos usar o método read_csv() da biblioteca Pandas do Python.

Veja um exemplo no qual usamos o método read_csv() para carregar um dataset e depois exibir o DataFrame resultante. Para isso usaremos uma amostra de dados de empréstimos aprovados ou recusados. O arquivo .csv pode ser baixado aqui.

Eis o código:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# importamos a biblioteca Pandas
import pandas as pd

def main():
  # vamos carregar os dados do arquivo .csv
  dados = pd.read_csv("C:\\estudos_python\\emprestimos.csv",
   delimiter=";")

  # vamos mostrar o DataFrame resultante
  print(dados)

if __name__== "__main__":
  main()

Quando executarmos este código nós teremos um resultado parecido com:

    id nome       idade sexo renda valor parc pont ap
0    1 MIGUEL728   24    M   1800  12500  30   34   S
1    2 RAUL46      61    M   2300  10000  24   59   S
2    3 JONAS264    28    M    800  12500  36   59   N
3    4 LETICIA135  71    F   1800  10000  36   13   N
4    5 CARLOS931   60    F   4000   2000   6   10   N
.. ...   ...    ...  ...    ...    ...   ...   ... ..
9   96 ANGELA391   91    F   4000  12500  12   33   N
96  97 PEDRO764    50    M  10200   2500  12    1   N
97  98 ADRIANA175  41    F   4000   2000  36   77   S
98  99 ROSA666     42    F   1800  20000  24   74   N
99 100 SARA653     36    F    970  11000  12   42   N

[100 rows x 9 columns]


Note que aqui nós temos uma amostra de 100 registros e cada registro possui 9 colunas. Se você quiser ver todos os 100 registros, troque a linha:

print(dados)

por

print(dados.to_string())

Para finalizar, note que forneci ";" como delimitador para o método read_csv().


C ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o cateto adjascente dadas as medidas da hipotenusa e do cateto oposto em C

Quantidade de visualizações: 1825 vezes
Nesta dica mostrarei como podemos tirar proveito do Teorema de Pitágoras para obter a medida do cateto adjascente quando temos as medidas da hipotenusa e do cateto oposto. Este teorema diz que "o quadrado da hipotenusa é igual à soma dos quadrados dos catetos", o que torna a nossa tarefa, na linguagem C, muito fácil.

Comece observando a imagem a seguir:



Veja que, nessa imagem, eu já coloquei os comprimentos da hipotenusa, do cateto oposto e do cateto adjascente. Para facilitar a conferência dos cálculos, eu coloquei também os ângulos theta (que alguns livros chamam de alfa) e beta já devidamente calculados. A medida da hipotenusa é, sem arredondamentos, 36.056 metros.

Então, sabendo que o quadrado da hipotenusa é igual à soma dos quadrados dos catetos (Teorema de Pitógoras):

\[c^2 = a^2 + b^2\]

Tudo que temos que fazer é mudar a fórmula para:

\[b^2 = c^2 - a^2\]

Veja que agora o quadrado do cateto adjascente é igual ao quadrado da hipotenusa menos o quadrado do cateto oposto. Não se esqueça de que a hipotenusa é o maior lado do triângulo retângulo.

Veja agora como esse cálculo é feito em linguagem C:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(int argc, char *argv[]){
  float c = 36.056; // medida da hipotenusa
  float a = 20; // medida do cateto oposto
  
  // agora vamos calcular a medida da cateto adjascente
  float b = sqrt(pow(c, 2) - pow(a, 2));
 
  // e mostramos o resultado
  printf("A medida do cateto adjascente é: %f", b);
 
  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ao executar este código C nós teremos o seguinte resultado:

A medida do cateto adjascente é: 30.000586

Como podemos ver, o resultado retornado com o código C confere com os valores da imagem apresentada.


Desafios, Exercícios e Algoritmos Resolvidos de C

Veja mais Dicas e truques de C

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 68 usuários muito felizes estudando em nosso site.