Você está aqui: Delphi ::: dbExpress ::: TSQLConnection |
Como criar uma classe de conexão a bancos de dados para suas aplicações Delphi usando dbExpressQuantidade de visualizações: 16437 vezes |
A forma mais comum de se criar uma conexão com um banco de dados usando dbExpress é colocar um componente TSQLConnection em um TDataModule (usado para centralizar os componentes não visuais) e acessá-lo a partir das outras partes que compõem o programa. Porém, haverá situações em que gostaríamos de ter uma classe que, não somente permita a conexão com o banco de dados, mas também efetue algumas operações adicionais. Nesta dica eu mostro como podemos criar uma classe chamada TConexao que encapsula um objeto da classe TSQLConnection. Para isso, siga atentamente os passos abaixo: [a]a) Vá em File -> New -> Unit - Delphi. Isso vai gerar uma nova unit parecida com: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- unit Unit1; interface implementation end. b) Salve esta unit com o nome de Conexao.pas e altere o seu código para: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- unit Conexao; interface uses Classes, Dialogs, SqlExpr, DBXCommon; type TConexao = class private conn: TSQLConnection; // uma referência a um TSQLConnection public // construtor da classe constructor Create; // uma função que retorna a conexão com o banco de dados function getConexao: TSQLConnection; end; implementation constructor TConexao.Create; begin // vamos criar a conexão com o banco de dados conn := TSQLConnection.Create(nil); // vamos definir os parâmetros da conexão...note que // aqui estou usando uma conexão com o MS SQL Server usando // Windows Authentication begin conn.ConnectionName := 'MSSQLConnection'; conn.DriverName := 'MSSQL'; conn.LibraryName := 'dbxmss.dll'; conn.VendorLib := 'oledb'; conn.GetDriverFunc := 'getSQLDriverMSSQL'; conn.LoginPrompt := False; // parâmetros adicionais da conexão conn.Params.Add('SchemaOverride=sa.dbo'); conn.Params.Add('HostName=NOTEBOOK'); conn.Params.Add('DataBase=estudos'); conn.Params.Add('OS Authentication=True'); // vamos abrir a conexão try begin conn.Open; end; except on e : TDBXError do // uses DBXCommon begin ShowMessage('Não foi possível efetuar a conexão. Erro: ' + e.Message); conn := nil; end; end; end; end; function TConexao.getConexao; begin // retorna a conexão criada Result := conn; end; end. Note que esta classe possui um método construtor que usamos para criar um novo objeto da classe TSQLConnection, informar os parâmetros da conexão e abrí-la usando seu método Open. A conexão obtida é retornada para o chamador usando o método getConexao. Veja agora como podemos, a partir do evento Click de um botão, criar um novo objeto da classe Conexao e verificar se a conexão foi retornada com sucesso: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm3.Button1Click(Sender: TObject); var conexao: TConexao; // uma referência à classe Conexao conn: TSQLConnection; // uses SqlExpr, DBXMsSQL, DBXCommon begin conexao := TConexao.Create; // vamos criar o objeto Conexao // vamos agora obter a conexão conn := conexao.getConexao; // vamos verificar se a conexão foi efetuada com sucesso if conn <> nil then ShowMessage('Conexão retornada com sucesso.'); end; Uma vez obtida a conexão, podemos fornecê-la à propriedade SQLConnection de um TSQLDataSet, por exemplo. A criação de uma classe de conexão é um dos primeiros passos para posicionar todo o código que interage com o banco de dados no seu devido lugar, ou seja, na camada de banco de dados, e não misturado aos componentes de negócio e interface com o usuário. |
Link para compartilhar na Internet ou com seus amigos: |
Delphi ::: Imagens, Gráficos e Cores ::: TBitmap (A classe TBitmap) |
Computação gráfica em Delphi - Como usar a classe TBitmap do DelphiQuantidade de visualizações: 16353 vezes |
A classe TBitmap encapsula um bitmap Windows (HBITMAP, um handle para um bitmap), incluindo sua paleta (HPALETTE, um handle para uma paleta de cores). Esta classe herda de TGraphic e é usada para criar, manipular (redimensionar, rolar, rotacionar, pintar, etc) e armazenar imagens na memória e como arquivos em disco. A classe TBitmap contém muitas propriedades e métodos úteis. Entre seus métodos podemos citar LoadFromFile(), usado para carregar uma imagem bitmap a partir do disco e guardá-la em memória como um objeto TBitmap. Veja o trecho de código abaixo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm2.Button1Click(Sender: TObject); var bmp: TBitmap; begin // vamos criar o bitmap bmp := TBitmap.Create; // vamos carregar a imagem e guardá-la no bitmap bmp.LoadFromFile('foto.bmp'); // vamos desenhar o bitmap no formulário // começando nas coordenadas x = 0; y = 0 a partir // do canto superior esquerdo da área cliente do formulário Form2.Canvas.Draw(0, 0, bmp); // vamos liberar o bitmap bmp.Free; end; Aqui nós carregamos o bitmap foto.bmp e o desenhamos na superfície do formulário usando o método Draw() do Canvas do formulário. É possível também redimensionar o bitmap ao desenhá-lo no formulário. Veja este novo trecho de código: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm2.Button1Click(Sender: TObject); var bmp: TBitmap; retang: TRect; // um objeto TRect begin // vamos criar o bitmap bmp := TBitmap.Create; // vamos carregar a imagem e guardá-la no bitmap bmp.LoadFromFile('foto.bmp'); // vamos redimensionar o bitmap na memória de // acordo com o retângulo abaixo retang.Top := 0; retang.Left := 0; retang.Right := 200; retang.Bottom := 150; // vamos desenhar o bitmap usando o método // StretchDraw da classe TCanvas Form2.Canvas.StretchDraw(retang, bmp); // vamos liberar o bitmap bmp.Free; end; Aqui nós usamos um objeto do registro (record) TRect para criar um retângulo especificando o tamanho do bitmap e fornecemos tal retângulo, juntamente com o bitmap, para o método StretchDraw() da classe TCanvas. Este método redimensiona a imagem antes de desenhá-la na superfície do formulário. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet |
Como usar a propriedade Bof para verificar se estamos no primeiro registro do TClientDataSet do DelphiQuantidade de visualizações: 10987 vezes |
Em algumas situações gostaríamos de verificar se já estamos no primeiro registro do TClientDataSet, ou seja, estamos percorrendo todos os registros do dataset de trás para frente e queremos saber se já estamos no primeiro. Para isso podemos usar a propriedade Bof da classe TClientDataSet. Esta propriedade retorna true se estivermos no primeiro registro e false em caso contrário. Veja um trecho de código no qual usamos um laço while para percorrer todos os registros de um TClientDataSet de trás para frente. Note o uso da propriedade Bof para finalizar as iterações do laço: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm3.Button4Click(Sender: TObject); begin // vamos percorrer todos os registros do TClientDataSet // de trás para frente ClientDataSet1.Last; // vamos para o último registro // e agora disparamos um laço While while not ClientDataSet1.Bof do begin // vamos mostrar em um TMemo os valores do primeiro // campo de cada registro Memo1.Lines.Add(ClientDataSet1.FieldByName('id').AsString); // vamos mover para o registro anterior ClientDataSet1.Prior; end; end; A propriedade Bof é verdadeira quando: a) Abrimos um dataset. b) Efetuamos uma chamada ao método First (primeiro) do dataset. c) Chamamos o método Prior (anterior) do dataset e a chamada falha porque o registro atual já é o primeiro registro no dataset. d) Efetuamos uma chamada ao método SetRange em uma faixa de dados ou dataset vazio. Esta dica foi escrita e testada no Delphi 2009. |
Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet |
Como obter a quantidade de registros em um TClientDataSet do Delphi usando a propriedade RecordCountQuantidade de visualizações: 11189 vezes |
Em algumas situações precisamos saber a quantidade de registros atualmente armazenados em um componente TClientDataSet. Para isso podemos usar a propriedade RecordCount, implementada originalmente na classe TDataSet e reimplementada na classe TClientDataSet. Veja um trecho de código no qual usamos o evento OnClick de um botão para exibir a quantidade de registros atualmento no TClientDataSet: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm3.Button3Click(Sender: TObject); var qRegistros: Integer; begin // obtém a quantidade de registros no TClientDataSet qRegistros := ClientDataSet1.RecordCount; // mostra o resultado ShowMessage('O ClientDataSet possui ' + IntToStr(qRegistros) + ' registros.'); end; Ao executar o código e clicar no botão você verá uma mensagem parecida com: "O ClientDataSet possui 20 registros.". Esta dica foi escrita e testada no Delphi 2009. |
Vamos testar seus conhecimentos em Fundações |
Sondagem à Percussão (SPT) e Rotativa (RQD) Qual a densidade relativa calculada pela formulação empírica de Skempton, considerando que o valor de N corrigido foi de 20 a uma profundidade de 2m em um solo cujo peso específico é de 20 kN/m3? A) 0,82. B) 0,78. C) 0,87. D) 0,72. E) 0,61. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira |
Ações em estruturas: apresentação dos principais carregamentos na análise de estruturas convencionais Uma das formas de produzir energia elétrica é por meio da energia nuclear. A energia nuclear frequentemente é contestada por apresentar dois grandes problemas: a geração de lixo nuclear, de difícil descarte; e a fragilidade estrutural dos reatores nucleares. Quanto ao segundo ponto, é necessário construir uma estrutura no entorno dos reatores que seja capaz de absorver, inclusive, o impacto de uma bomba (em caso de guerra). Uma bomba é um caso de que tipo de ação? A) Permanente direta. B) Excepcional. C) Acidental indireta. D) Acidental direta. E) Permanente indireta. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Ética e Legislação Profissional |
Noções de licitação pública O procedimento licitatório compreende duas fases: a fase interna, ocorrida dentro do órgão ou da entidade, e a fase externa. Sobre as fases da licitação pública, assinale "V" para as afirmativas verdadeiras e "F" para as falsas. ( ) Cabem à comissão de licitação a homologação e a adjudicação do certame. ( ) A fase de habilitação poderá ser invertida a critério da administração e mediante apresentação de justificativa da referida inversão. ( ) A publicação do instrumento convocatório é a última etapa da fase interna da licitação. A alternativa que apresente a sequência correta é: A) V, V, V. B) F, F, F. C) V, V, F. D) F, V, V. E) F, V, F. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Ética e Legislação Profissional |
Ética Empresarial e Profissional: Noções Gerais A partir dos anos 80, a questão da ética começou a ganhar mais destaque e importância nas rotinas das empresas brasileiras. Indique a alternativa que contém os fatores que contribuem para essa mudança. A) O enxugamento dos cargos de comando; a competição interna pelos cargos mais elevados; a conquista de maior autonomia pelos empregados. B) O enxugamento dos cargos de comando; a competição externa pelos cargos mais elevados; a conquista de maior autonomia pelos empregados. C) O enxugamento dos cargos operacionais; a competição interna pelos cargos mais elevados; a conquista de maior autonomia pelos empregados. D) O enxugamento dos cargos operacionais; a competição interna pelos cargos mais elevados; as parcerias com os fornecedores. E) Maior contratação para os cargos operacionais; a competição interna pelos cargos mais elevados; a conquista de maior autonomia pelos empregados. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Fundações |
Sondagem à Percussão (SPT) e Rotativa (RQD) O ensaio SPT pode ser recomendado de forma exclusiva nos seguintes casos: A) Um solo com presença de matacões, como são os solos coluvionares. B) Em solo residual de lamitos com ambiente bem drenado. C) Em solos transportados de leques aluviais. D) Em solos de cascalho de beira de rio. E) Em solos com presença de areias muito compactas. Verificar Resposta Estudar Cards Todas as Questões |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software 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 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 |