MySQL/PHP/Delphi: Resgatando o ID da última entrada

Postado por Plinio Cruz em 24 de julho de 2010 na categoria Banco de Dados, Delphi, PHP, Programação | Seja o primeiro a comentar

Quando desenvolvemos um sistema que tem operação com base de dados é inevitável que exista relação entre as tabelas e por vezes somos obrigados a inserir dados em uma tabela e em seguida inserir novos dados em uma segunda tabela que tenha um registro de ligação entre elas.

Um caso clássico seria uma tabela de cadastro de dados onde armazenamos os dados pessoais dos envolvidos no sistema e em uma segunda tabela inserimos, por exemplo, dados referentes ao desempenho dessa pessoa, na segunda tabela, normalmente, usamos como referência um código de registro da primeira tabela para fazer a ligação.

É muito apropriado criar formulários únicos com dados que estão nas duas tabelas, para economizar processo e para agilizar o colhimento das informações, mas temos que ao gravar os dados saber se é de um envolvido já cadastrado ou um novo cadastro. Quando temos um cadastrado existente fica fácil, pois ele é reconhecido e já sabemos o número de registro dele.

No caso de um novo envolvido temos que criar um registro na tabela de cadastro e ao mesmo tempo fazer a inserção nas tabelas ligadas com o mesmo registro já criado, para isso temos comandos específicos para recuperar essa entrada sem ter que fazer várias telas de formulário e sem fazer novas consultas para resgatar o número dá última entrada, seguem os exemplos:

PHP: Basta criar uma vaiável com o comando mysql_insert_id().

$id=mysql_insert_id();

Delphi: É útil em sistemas envolvendo bilbioteca de acesso direto, sem a utilização do BDE, por exemplo o Zeos.

DM.SQLApoio.SQL.Clear;
DM.SQLApoio.SQL.Add(‘select LAST_INSERT_ID() AS “id”‘);
DM.SQLApoio.ExecSQL;
DBText1.DataField:=’id’;
DM.SQLApoio.Active:=True;
DBText1.Refresh;

Lembrando que no exemplo acima, não podemos interromper a conexão com banco, pois ele recupera o último ID da conexão que está sendo trabalhada, no exemplo acima eu coloco o valor em um DataField. Esses comandos devem ser lançados imediatamente as linhas de inserção dos dados.

Instalando o QuickReport no Delphi 7

Postado por Plinio Cruz em 15 de julho de 2010 na categoria Delphi, Programação | Seja o primeiro a comentar

O QuickReport é nativo do Delphi 7 assim como em outras versões anteriores, mas como nessa versão o foco dos relatórios foi projetado para a paleta “Rave”, o pacote está disponível, mas não está instalado. Para ativá-lo é muito fácil, siga os passos a seguir:

  1. Abra o Delphi;
  2. Menu: Component > Install Packages;
  3. Clique no botão Add ou teclas ALT+A;
  4. Localize a pasta bin dentro da pasta de instalação do Delphi, o caminho se não foi alterado, geralmente é: C:\Arquivos de
    programas\Borland\Delphi7\Bin;
  5. Localize um pacote com o nome: “dclqrt70.bpl”, selecione e clique no botão abrir;
  6. Pressione o botão ok

A paleta aparecéra por último no Delphi e sua utilização é a mesma das versões anteriores, nenhuma novidade.

Abraço e até a próxima.

Locação de Fitas de Vídeo com Delphi

Postado por Plinio Cruz em 27 de outubro de 2009 na categoria Banco de Dados, Delphi, Downloads, Programação | Leia o primeiro comentário

Jackson Pires, o colaborador dos tutoriais mais completos de Delphi do Clube da Informática, volta a presentear nossos visitantes com um curso completo para desenvolvimento de um projeto de Locação de Fitas de Vídeo.

O arquivo PDF é ricamente recheado de imagens e  muito bem detalhado. Serve de guia não só para a sua aplicação primária, mas como consulta para qualquer sistema de gerenciamento de banco de dados, pois trata das principais ferramentas necessárias para um sistema de gestão de dados.

O nível de detalhamento que leva o leitor do momento de criação das pastas, passando pela criação de menus e tabelas até chegar ao ponto de finalização do projeto e os relatórios.

Obrigado Jackson pela colaboração!

Delphi + MySql: Fazendo Funcionar

Postado por Plinio Cruz em 19 de junho de 2009 na categoria Banco de Dados, Delphi, Programação | Seja o primeiro a comentar

Introdução

Duas ferramentas. Duas tecnologias que podem ser combinadas, usadas e aperfeiçoadas.

Delphi, linguagem visual utilizando a linguagem Pascal.

MySql, sistema de gerenciamento de banco de dados versátil que utiliza a linguagem padrão SQL.

Os programadores que utilizam o Delphi o conhecem, pois o utilizam freqüentemente, mas o MySql que é tem uma excelente rapidez em sua base de dados, é algo, hoje em dia, casualmente utilizado. Veremos mais adiante como fazer essa dependência entre as duas poderosas tecnologias.

Início

Para começarmos a trabalhar, baixe o MySql em sua mais nova versão em http://dev.mysql.com/downloads/.

Depois de instalado, em versão zip ou simplesmente instalado como um programa qualquer, acesse o diretório bin que está localizado onde você instalou o MySql. Abra o Prompt de comando juntamente com o Prompt do MySql para criarmos nosso banco de dados. Veja a Figura 1.

Digite na tela do MySql, o contexto que segue abaixo.

mysql> create database mydelphi;

Se aparecer a mensagem abaixo, está tudo certo, e assim poderemos prosseguir.

Query OK, 1 row affected (0.02 sec)

Agora, criaremos nossa tabela. Lembrando, que o MySql é igual a qualquer outro banco, em sua sintaxe SQL. Após cada linha aperte a tecla Enter em seu teclado.

mysql>  use mydelphi;

Database changed

mysql> create table usuarios(

->     id int(5) not null auto_increment primary key,

->     nome varchar(20) not null,

->     email varchar(30) not null,

->     comentario text not null

->     );

Query OK, 0 rows affected (0.11 sec)

Até aqui, está tudo certo, iremos inserir agora o conteúdo na tabela, também pelo Prompt de comando.

Novamente, veja abaixo como prosseguir para inserir informações na tabela. Após cada linha aperte a tecla Enter em seu teclado. 

mysql>  insert into usuarios (nome,email,comentario) values (‘Orlando Junior’,’kurt1022@gmail.com’,’Delphi+MySql é realmente muito bom’);

mysql>  insert into usuarios (nome,email,comentario) values (‘Zé’,’ze_zinho@zemail.com.br’,’Eita sô! Num é que esse sistema pega mesmo.’);

mysql>  insert into usuarios (nome,email,comentario) values (‘’ABC,’abc@def.com.br’,’abcdefghijlmnopqrstuvxyz’);

mysql>quit

Saia do prompt.

Base de Dados

Antes de continuarmos, baixe o componente ODBC para utilizarmos juntamente com o Delphi; em http://www.mysql.com/products/connector/odbc/. Instale-o normalmente.

Acesse o BDE Administrator e crie uma nova coluna com o nome de mydelphi, selecionando o Driver ODBC do MySql; em seguida, salve.

Veja abaixo como deve ficar a configuração da nossa nova coluna.

No menu do administrador de bancos acesse o ODBC Administrator. Adicione o driver do MySql que baixamos. Após criá-lo, irá abrir uma nova janela de configuração.

Na aba Login, digite mydelphi em Data Source Name; em Server, digite localhost; em user digite  root e em Database selecione nosso banco de dados, em seguida teste a conexão. Se exibir uma mensagem dizendo que a conexão foi realizada com êxito, poderemos prosseguir.

Salve todas as suas operações no BDE Administrator e saia dele.

Já no Delphi, personalize sua aplicação ao seu modo.

Adicione o componente ADOConnection na aba ADO. Clique em Build com a opção Use Connection String selecionada.

Para especificar nossa fonte de dados, na aba Conexão, clique em atualizar e na caixa de texto ao lado selecione a fonte myodbc. Em nome de usuário digite root, e teste a conexão. Se tudo estiver certo, poderemos prosseguir com êxito.

No Object Inspector, altere para True na opção Connected, em seguida confirme na janela que irá aparecer. Em DefaultDatabase, selecione mydelphi.

Insira o componente ADOTable e conecte-o com o outro componente; em seguida selecione nossa tabela e ative o componente.

Clique duas vezes no componente ADOTable, e com o botão direito do mouse adicione todos os campos da tabela do banco de dados. Ligue-os corretamente de acordo com seu nome e seu campo em KeyFields.

Em seguida ative o componente. Adicione o componente Data Source e selecione o DataSet no mesmo.

Para continuarmos, adicione 4 Labels com os respectivos subtítulos:

  • ID:
  • Nome:
  • E-mail:
  • Comentário:

Agora, adicione 3 DBEdits e apenas um DBMemo, juntamente com um controlador de formulários, o DBNavigator, todos localizados na aba Data Controls.

Na aba Standard, insira em nosso form 3 Buttons, com os respectivos subtítulos seguidos de seus códigos, adicionando-os entre begin e end; no evento OnClick da aba Events no Object Inspector.

- Novo

AdoTable.Append;

Self.Activate;

- Inserir

AdoTable.Append;

AdoTable.Post;

- Excluir

ADOTable.Delete;

Após a inclusão dos códigos, selecione os campos de inclusão e o navegador de formulários; e segurando a tecla shift, selecione o DataSource no Object Inspector.

Ligue corretamente os campos com seu nome respectivo de acordo com o DataField. Com isso, você irá perceber que os valores que colocamos no prompt de comando irão começar a aparecer no form principal.

Veja abaixo, como deverá ficar nosso programa.

Orlando da Silva Junior 

Dica: Exemplo de ordenação no ListBox

Postado por Plinio Cruz em 15 de maio de 2009 na categoria Delphi, Programação | Seja o primeiro a comentar

Texto extraído do Blog Delphi to Delphi de Adriano Santos

Pessoal,

Resolvi montar um exemplinho bem básico mostrando como criar um esquema de ordenação em um ListBox e depois extrair isso para uma string que pode ser usada como Order By em uma instrução SQL.

O exemplo consiste em: o usuário poderá clicar em um item do ListBox e enviar para baixo ou para cima. Em seguida ele clica em Montar Ordem e a função monta um SQL. Bem simples.

Insira 3 botões na tela (btnDesce, btnSobe e btnExtrairOrderBy), 1 ListBox(lbx1) e 1 Edit(edt1). O evento OnClick dos três botões encontra-se abaixo. Vejam:

//Esse botão faz os itens descerem
procedure TForm1.btnDesceClick(Sender: TObject);
var
  NovoIndex : Integer;
begin
  if not (lbx1.ItemIndex = lbx1.Items.Count-1) then
  begin
    NovoIndex := lbx1.ItemIndex + 1;
    lbx1.Items.Move(lbx1.ItemIndex, NovoIndex);
    lbx1.ItemIndex := NovoIndex;
    lbx1.SetFocus;
  end;
end;
 
//Esse botão faz os itens subiremprocedure
TForm1.btnSobeClick(Sender: TObject);
var
  NovoIndex : Integer;
begin
  if not (lbx1.ItemIndex - 1 < 0) then
  begin
    NovoIndex := lbx1.ItemIndex - 1;
    lbx1.Items.Move(lbx1.ItemIndex, NovoIndex);
    lbx1.ItemIndex := NovoIndex;
    lbx1.SetFocus;
  end;
end;
//Esse botão monta uma instrução ORDER BY dinâmicaprocedure
TForm1.btnExtrairOrderByClick(Sender: TObject);
var
  I : Integer;
  Order: string;
begin
  Order := '';
  for I := 0 to lbx1.Items.Count-1 do
  begin
    if I = 0 then
      Order := lbx1.Items[I] + ','
    else
      Order := Order + lbx1.Items[I] + ',';
  end;
  Order := Copy(Order, 0, Length(Order)-1);
  Edt1.Text := 'SELECT * FROM TABE WHERE CAMPO = :CAMPO ORDER BY ' +
    Order;
end;

Exemplo na seção downloads do Blog Delphi to Delphi
Adriano Santos
Editor Técnico Revista ClubeDelphi

Switch to our mobile site