 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
macario1983 Experiente

Registrado: Domingo, 1 de Novembro de 2009 Mensagens: 404
|
Enviada: Qui Dez 17, 2009 12:15 pm Assunto: Sql no braç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 |
|
 |
Ghost_Rider Colaborador

Registrado: Segunda-Feira, 6 de Outubro de 2003 Mensagens: 4437
|
Enviada: Qui Dez 17, 2009 12:29 pm Assunto: |
|
|
| Isso mesmo... |
|
| Voltar ao Topo |
|
 |
macario1983 Experiente

Registrado: Domingo, 1 de Novembro de 2009 Mensagens: 404
|
Enviada: Qui Dez 17, 2009 12:32 pm Assunto: |
|
|
| Ghost_Rider escreveu: | | Isso mesmo... |
bacana
obrigado |
|
| Voltar ao Topo |
|
 |
BrunoMoreyra Colaborador

Registrado: Quinta-Feira, 26 de Novembro de 2009 Mensagens: 1398 Localização: Goiânia - GO / Brasília - DF
|
Enviada: Qui Dez 17, 2009 7:45 pm Assunto: |
|
|
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 |
|
 |
AnOnImUs.Info Colaborador


Registrado: Quinta-Feira, 23 de Agosto de 2007 Mensagens: 1119 Localização: Goiânia - GO
|
Enviada: Sex Dez 18, 2009 7:35 am Assunto: |
|
|
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 |
|
 |
macario1983 Experiente

Registrado: Domingo, 1 de Novembro de 2009 Mensagens: 404
|
Enviada: Sex Dez 18, 2009 7:38 am Assunto: |
|
|
| 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 |
|
 |
BrunoMoreyra Colaborador

Registrado: Quinta-Feira, 26 de Novembro de 2009 Mensagens: 1398 Localização: Goiânia - GO / Brasília - DF
|
Enviada: Sex Dez 18, 2009 6:47 pm Assunto: |
|
|
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 |
|
 |
macario1983 Experiente

Registrado: Domingo, 1 de Novembro de 2009 Mensagens: 404
|
Enviada: Ter Dez 22, 2009 9:58 am Assunto: |
|
|
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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
| Voltar ao Topo |
|
 |
macario1983 Experiente

Registrado: Domingo, 1 de Novembro de 2009 Mensagens: 404
|
Enviada: Ter Dez 22, 2009 11:11 am Assunto: |
|
|
| 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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Ter Dez 22, 2009 11:21 am Assunto: |
|
|
| 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 |
|
 |
macario1983 Experiente

Registrado: Domingo, 1 de Novembro de 2009 Mensagens: 404
|
Enviada: Ter Dez 22, 2009 11:26 am Assunto: |
|
|
| 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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Ter Dez 22, 2009 11:55 am Assunto: |
|
|
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 |
|
 |
DonOctavioDelFlores Colaborador

Registrado: Quarta-Feira, 12 de Setembro de 2007 Mensagens: 2630 Localização: Pra lá de Bagda
|
Enviada: Ter Dez 22, 2009 4:09 pm Assunto: |
|
|
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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Ter Dez 22, 2009 4:34 pm Assunto: |
|
|
| 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 |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|