ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Sql no braço
Ir à página 1, 2  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
macario1983
Experiente
Experiente


Registrado: Domingo, 1 de Novembro de 2009
Mensagens: 404

MensagemEnviada: Qui Dez 17, 2009 12:15 pm    Assunto: Sql no braço Responder com Citação

galera gostaria por favor de saber como fazer o sql via codigo fonte?

apenas devo inserir o componente e no codigo posso fazer o resto?

pq estou acostumado a fazer via componente

valeu
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Ghost_Rider
Colaborador
Colaborador


Registrado: Segunda-Feira, 6 de Outubro de 2003
Mensagens: 4437

MensagemEnviada: Qui Dez 17, 2009 12:29 pm    Assunto: Responder com Citação

Isso mesmo...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
macario1983
Experiente
Experiente


Registrado: Domingo, 1 de Novembro de 2009
Mensagens: 404

MensagemEnviada: Qui Dez 17, 2009 12:32 pm    Assunto: Responder com Citação

Ghost_Rider escreveu:
Isso mesmo...


bacana
obrigado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
BrunoMoreyra
Colaborador
Colaborador


Registrado: Quinta-Feira, 26 de Novembro de 2009
Mensagens: 1398
Localização: Goiânia - GO / Brasília - DF

MensagemEnviada: Qui Dez 17, 2009 7:45 pm    Assunto: Responder com Citação

Boa noite,

para isso, você utilizar componente do tipo TQuery, que contém a propriedade SQL, onde você insere o SQL.


Código:

begin
  Query := TQuery.Create(Application);
  Query.DataBaseName := 'BancoDAdos';
  Query.Active := False;
  Query.Sql.Clear;
  Query.Sql.Add('SELECT *  FROM TABELA');
  Query.UnPrepare;
  Query.Prepare;
  Query.Active := True;

  // Verificando se contém algum registro, ou seja, que não está vazia.
  if (not Query.IsEmpty) then begin
   // Setando para o primeiro registro.
    Query.First;
    // Verificando se não chegou no último registro.
    while (not Query.Eof) do begin
      vCampo := Query.FieldByName('CAMPO').AsString;
      vCampo := Query.FieldByName('CAMPO').AsFloat;

      // Passando para o próximo registro.
      Query.Next;
    end;
  end;
end;


macario1983 escreveu:
Ghost_Rider escreveu:
Isso mesmo...


bacana
obrigado

_________________
Atencisamente,

Bruno Moreira Batista.
http://www.kawek.com.br/BrunoBatista
Skype: Bruno_Batysta
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
AnOnImUs.Info
Colaborador
Colaborador


Registrado: Quinta-Feira, 23 de Agosto de 2007
Mensagens: 1119
Localização: Goiânia - GO

MensagemEnviada: Sex Dez 18, 2009 7:35 am    Assunto: Responder com Citação

Acrescento ao que o nosso amigo BrunoMoreyra colocou, não se esqueça depois de fechar e liberar o componente da memória, porque senão ele poderá deixar uma sessão em aberto em seu banco de dados.

Código:

begin
try
  Query := TQuery.Create(Application);
  Query.DataBaseName := 'BancoDAdos';
  Query.Active := False;
  Query.Sql.Clear;
  Query.Sql.Add('SELECT *  FROM TABELA');
  Query.UnPrepare;
  Query.Prepare;
  Query.Active := True;

  // Verificando se contém algum registro, ou seja, que não está vazia.
  if (not Query.IsEmpty) then begin
   // Setando para o primeiro registro.
    Query.First;
    // Verificando se não chegou no último registro.
    while (not Query.Eof) do begin
      vCampo := Query.FieldByName('CAMPO').AsString;
      vCampo := Query.FieldByName('CAMPO').AsFloat;

      // Passando para o próximo registro.
      Query.Next;
    end;
  end;
finally
  Query.Close;
  FreeAndNil(Query);
end;
end;

_________________
Reter o conhecimento é promover a ignorância !
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
macario1983
Experiente
Experiente


Registrado: Domingo, 1 de Novembro de 2009
Mensagens: 404

MensagemEnviada: Sex Dez 18, 2009 7:38 am    Assunto: Responder com Citação

AnOnImUs.Info escreveu:
Acrescento ao que o nosso amigo BrunoMoreyra colocou, não se esqueça depois de fechar e liberar o componente da memória, porque senão ele poderá deixar uma sessão em aberto em seu banco de dados.

Código:

begin
try
  Query := TQuery.Create(Application);
  Query.DataBaseName := 'BancoDAdos';
  Query.Active := False;
  Query.Sql.Clear;
  Query.Sql.Add('SELECT *  FROM TABELA');
  Query.UnPrepare;
  Query.Prepare;
  Query.Active := True;

  // Verificando se contém algum registro, ou seja, que não está vazia.
  if (not Query.IsEmpty) then begin
   // Setando para o primeiro registro.
    Query.First;
    // Verificando se não chegou no último registro.
    while (not Query.Eof) do begin
      vCampo := Query.FieldByName('CAMPO').AsString;
      vCampo := Query.FieldByName('CAMPO').AsFloat;

      // Passando para o próximo registro.
      Query.Next;
    end;
  end;
finally
  Query.Close;
  FreeAndNil(Query);
end;
end;


obrigado pela observação
abrax
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
BrunoMoreyra
Colaborador
Colaborador


Registrado: Quinta-Feira, 26 de Novembro de 2009
Mensagens: 1398
Localização: Goiânia - GO / Brasília - DF

MensagemEnviada: Sex Dez 18, 2009 6:47 pm    Assunto: Responder com Citação

Boa noite,

me desculpe, acabei esquecendo deste detalhe.



AnOnImUs.Info escreveu:
Acrescento ao que o nosso amigo BrunoMoreyra colocou, não se esqueça depois de fechar e liberar o componente da memória, porque senão ele poderá deixar uma sessão em aberto em seu banco de dados.

Código:

begin
try
  Query := TQuery.Create(Application);
  Query.DataBaseName := 'BancoDAdos';
  Query.Active := False;
  Query.Sql.Clear;
  Query.Sql.Add('SELECT *  FROM TABELA');
  Query.UnPrepare;
  Query.Prepare;
  Query.Active := True;

  // Verificando se contém algum registro, ou seja, que não está vazia.
  if (not Query.IsEmpty) then begin
   // Setando para o primeiro registro.
    Query.First;
    // Verificando se não chegou no último registro.
    while (not Query.Eof) do begin
      vCampo := Query.FieldByName('CAMPO').AsString;
      vCampo := Query.FieldByName('CAMPO').AsFloat;

      // Passando para o próximo registro.
      Query.Next;
    end;
  end;
finally
  Query.Close;
  FreeAndNil(Query);
end;
end;

_________________
Atencisamente,

Bruno Moreira Batista.
http://www.kawek.com.br/BrunoBatista
Skype: Bruno_Batysta
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
macario1983
Experiente
Experiente


Registrado: Domingo, 1 de Novembro de 2009
Mensagens: 404

MensagemEnviada: Ter Dez 22, 2009 9:58 am    Assunto: Responder com Citação

desculpe reaviver este topico
mas estou produzindo um programa de controle de almoxarifado

estou tendo dificuldade para sair da programacao via componente e migrar para codigo

entao...gostaria de saber c algume pode me passa algum programa q use o zeos

para entender...

pois o programa tem login, cadastro e saida....

valeu
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Dez 22, 2009 10:08 am    Assunto: Responder com Citação

macario1983 escreveu:
desculpe reaviver este topico
mas estou produzindo um programa de controle de almoxarifado

estou tendo dificuldade para sair da programacao via componente e migrar para codigo

entao...gostaria de saber c algume pode me passa algum programa q use o zeos

para entender...

pois o programa tem login, cadastro e saida....

valeu
qual sua dificudade com o zeos? Dependendo se for com firebird talvez posso lhe ajudar.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
macario1983
Experiente
Experiente


Registrado: Domingo, 1 de Novembro de 2009
Mensagens: 404

MensagemEnviada: Ter Dez 22, 2009 11:11 am    Assunto: Responder com Citação

adriano_servitec escreveu:
macario1983 escreveu:
desculpe reaviver este topico
mas estou produzindo um programa de controle de almoxarifado

estou tendo dificuldade para sair da programacao via componente e migrar para codigo

entao...gostaria de saber c algume pode me passa algum programa q use o zeos

para entender...

pois o programa tem login, cadastro e saida....

valeu
qual sua dificudade com o zeos? Dependendo se for com firebird talvez posso lhe ajudar.


cara a dificuldade e na producao
eu fiz aki e deu a msg q a janela invisivel n pode ser focada
mas todos objetos estao corretos
apaguei e vou refazer
mas por exemplo

queria entender como designar a conexao via codigo para o componente de query
como fazer para realizar um comparacao se o usuario esta com o login e senha corretos sabe

queria um programa fonte...
tb é osso, cada um tem um jeito diferente de programar
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Dez 22, 2009 11:21 am    Assunto: Responder com Citação

Citação:
cara a dificuldade e na producao
eu fiz aki e deu a msg q a janela invisivel n pode ser focada
mas todos objetos estao corretos
apaguei e vou refazer
Aqui depende muito se esta forçando um setfocus em algum compoente invisivel ou que não esteja no local aonde vc quer focar.
Citação:

queria entender como designar a conexao via codigo para o componente de query
como fazer para realizar um comparacao se o usuario esta com o login e senha corretos sabe

Aqui vc pode criar um select no query impondo a condição

Código:
select * from usuario where usuario = :usuario and senha = :senha


O zquery trabalha tanto como os comandos de um table, quanto uso do sql, ai vc é quem determina.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
macario1983
Experiente
Experiente


Registrado: Domingo, 1 de Novembro de 2009
Mensagens: 404

MensagemEnviada: Ter Dez 22, 2009 11:26 am    Assunto: Responder com Citação

adriano_servitec escreveu:
Citação:
cara a dificuldade e na producao
eu fiz aki e deu a msg q a janela invisivel n pode ser focada
mas todos objetos estao corretos
apaguei e vou refazer
Aqui depende muito se esta forçando um setfocus em algum compoente invisivel ou que não esteja no local aonde vc quer focar.
Citação:

queria entender como designar a conexao via codigo para o componente de query
como fazer para realizar um comparacao se o usuario esta com o login e senha corretos sabe

Aqui vc pode criar um select no query impondo a condição

Código:
select * from usuario where usuario = :usuario and senha = :senha


O zquery trabalha tanto como os comandos de um table, quanto uso do sql, ai vc é quem determina.



cara gostaria era do tipo
consegui conectar o banco atraves do conector td via codigo

agora queria estabelecer o componente query todo via codigo
conectar a conexao
estipular a clausula
fazer td sabe

e sobre o foco invisivel
eu tipo usava a logica d ver se o bd esta vazio ai chama o form de cad usuario
e se n estivesse chamaria o menu prinicipal
ai gerava este erro

usava o isempty = true...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Dez 22, 2009 11:55 am    Assunto: Responder com Citação

Cada banco tem sua particularidade de conexão, firebird é de um jeito, postgre é de outro, mysql é outro, e assim vai...

No firebird eu uso assim, mais cada programador também tem seu método de programar

Código:
// CRIAÇÃO DO BANCO DE DADOS
function isc_dsql_execute_immediate(PStatus: PLongint; var db_Handle: PLongint;
         var trans_Handle: PLongint; Length: Word; SQL: PChar; Dialect: Word;
         PxSqlDa: Pointer): LongInt; stdcall; external 'FBCLIENT.DLL';

function isc_detach_database(PStatus: PLongint; var db_handle: PLongint):
         LongInt; stdcall; external 'FBCLIENT.DLL';

function isc_sqlcode(PStatus: PLongint): LongInt; stdcall; external 'FBCLIENT.DLL';

function isc_sql_interprete(Code: LongInt; Buffer: PChar; Size: Integer):
         LongInt; stdcall; external 'FBCLIENT.DLL';

function DisplayError(SqlRslt: LongInt; Vector: PLongInt): String;
const
  MAX_MSG = 500;
var
  SqlMsg: String;
begin
  SqlRslt := isc_sqlcode(Vector);
  SetLength(SqlMsg, MAX_MSG);
  isc_sql_interprete(SqlRslt, PChar(SqlMsg), MAX_MSG);
  Setlength(SqlMsg, StrLen(PChar(SqlMsg)));
  Result := 'SQL-Code: ' + IntToStr(SqlRslt) + ', Mensagem: ' + SqlMsg;
end;

// MODO DE CRIAÇÃO DB
procedure CreateDataBase(DBName, User, Pswd, CharSet: String; Dialect: Word);
var
  Status: Array[1..19] of LongInt;
  db, tran: PLongInt;
  Rslt: LongInt;
  BaseSQL: String;
begin
  db := nil;
  tran := nil;

  BaseSQL := 'CREATE DATABASE "' + DBName +
  '" USER "' + User +
  '" PASSWORD ' + '"' + Pswd + '" ' + CharSet;

  Rslt:= isc_dsql_execute_immediate(@status, db, tran, 0, PChar(BaseSQL), Dialect, Nil);

  if Rslt <> 0 then
    raise EDatabaseError.Create('Deu erro' +
          #10#13 + 'ISC-Nr.: ' + IntToStr(Rslt) +
          #10#13 + DisplayError(Rslt, @Status));

  Rslt := isc_detach_database(@Status, db);

  if Rslt <> 0 then
    raise EDatabaseError.Create('Deu erro' +
          #10#13 + 'ISC-Nr.: ' + IntToStr(Rslt) +
          #10#13 + DisplayError(Rslt, @status));

end;

// CONEXÃO DO O ZCONNECTION
procedure zconn(pzConn: TZConnection); //Para criar o USER e SENHA no zconnection.
var
  meuip, caminhodb : string;
begin
  //captura ip do componente
  meuip := dm.IdIPWatch1.LocalIP;
  caminhodb := meuip+':caminhodobanco.fbd';
  pzConn.Database :=  caminhodb;// Caminho onde se encontra o seu banco de dados

  //pzConn.HostName := meuip; //'localhost'; //melhor deixar como o ip no lugar do localhost
  pzConn.Password := 'masterkey'; // Senha usado para autenticação no banco
  pzConn.Protocol := 'firebird-2.0';
  pzConn.User     := 'SYSDBA'; // Usuário usado para autenticação no banco}
end;

//VERIFICA SE TEM TABELAS, INDICES, GENERATORS
function temtabela (query: tzquery; tabela, campo: string): boolean;
begin
  tabela:= uppercase (tabela);
  if (campo <> '') then campo:= uppercase (campo);
  query.sql.clear;
  query.sql.add ('select rdb$relation_name from rdb$relation_fields ');
  query.sql.add ('where rdb$relation_name = ' + quotedstr (uppercase (tabela)));
  if (campo <> '') then query.sql.add ('and rdb$field_name = ' + quotedstr (campo));
  query.open;
  result:= (not query.isempty);
end;

function temindice (query: tzquery; indice: string): boolean;
begin
  query.sql.clear;
  query.sql.add ('select rdb$index_name from rdb$indices where rdb$index_name = ' + quotedstr (uppercase (indice)));
  query.open;
  result:= (not query.isempty);
end;

function temgenerator (query: tzquery; generator: string): boolean;
begin
  query.sql.clear;
  query.sql.add ('select rdb$generator_name from rdb$generators where rdb$generator_name = ' + quotedstr (uppercase (generator)));
  query.open;
  result:= (not query.isempty);
end;

function temtrigger (query: tzquery; generator: string): boolean;
begin
  query.sql.clear;
  query.sql.add ('select rdb$trigger_name from rdb$triggers where rdb$trigger_name = ' + quotedstr (uppercase (generator)));
  query.open;
  result:= (not query.isempty);
end;

function temsprocedure (query: tzquery; pnome: string): boolean;
begin
  query.sql.clear;
  query.sql.add ('select * from RDB$PROCEDURES where rdb$procedure_name = ' + quotedstr (uppercase (pnome)));
  query.open;
  result:= (not query.isempty);
end;

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
DonOctavioDelFlores
Colaborador
Colaborador


Registrado: Quarta-Feira, 12 de Setembro de 2007
Mensagens: 2630
Localização: Pra lá de Bagda

MensagemEnviada: Ter Dez 22, 2009 4:09 pm    Assunto: Responder com Citação

1 - O codigo do Adriano é pra criar o banco usando diretamene a API do firebird (fbclient.dll), não acho que é isso que vc precisa. Alias o zeos existe justamente pra gente nao ter que chamar a dll do fb (ou qq outro banco) diretamente.

2 - Que erro é esse de foco na janela? Sql nao tem nada a ver com isso e vc deve estar confundindo as coisas, onde tá o codigo do erro?

3 - pra fazer as ligacoes pelo zeos é simples:

um ZConnection e uma ZQuery
Código:

Connection1 := TZConnection.Create(nil);
Query1      := TZQuery.Create(nil);

try
   Connection1.Propriedade := AlgumValor;
   ...
   ...
   ...
   Connection.Connect;
   Query1.Connection := ZConnection;
   Query1.Propriedade := AlgumValor;
   ...
   ...
   with Query1 do
   begin
      Close;
      Sql.Clear;
      Sql.Add(' select blabalbla ');
      open;
   end;
finally
   Query1.Close;
   Query1.Free;
   Connection1.Disconnect;
   Connection1.Free;
end;


isso é só um exemplo, na vida real o ideal é sempre manter a conexao, gasta muito tempo abrindo uma no bd...
_________________
“The problem with the world is that everyone is a few drinks behind.” Humphrey Bogart
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Dez 22, 2009 4:34 pm    Assunto: Responder com Citação

Citação:
1 - O codigo do Adriano é pra criar o banco usando diretamene a API do firebird (fbclient.dll), não acho que é isso que vc precisa. Alias o zeos existe justamente pra gente nao ter que chamar a dll do fb (ou qq outro banco) diretamente.


Olá Dom Octavio Flores, blz... Não apenas para usar o dll do firebird, mais também para criar conexão, tabelas, triggers, index etc... atraves do aplicativo.

Quando vc diz que o zeos existe para justamente não chamar a dll do fb, eu não entendi bem, porem usava o mesmo no interbase, alias este codigo é do interbase, se não me engano.

O que eu sei é que o zeos precisa de 2 dll para trabalhar corretamente com o fb, que são fbclient20.dll e fbclientd20.dll, isso para o fb 2.0, para outra versão do fb deve existir outra dll, e agora a pergunta amigo, sempre vou ter que enviar estas dll's junto com meu aplicativo, ou tem uma maneira de não precisar do seu uso? Já testei em outras maquinas e apenas com estas dll's é que funciona o zeos. Uso a versão 6.6.5
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Ir à página 1, 2  Próximo
Página 1 de 2

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB