HBSQL (Sql Tool)
Moderador: Moderadores
HBSQL (Sql Tool)
Coloquei tamanho fixo de 16 para o HBSQL, para campos sem tamanho definido."Talvez para as colunas vazias na primeira linha você possa colocar um tamanho de 10 ou 20? Assim pelo menos mostra que tem o campo, mas não perde tempo tentando achar o maior de todos com a função MAX()."
O tamanho final da apresentação dos dados é de responsabilidade do usuário da HBDBD. Com um datatype VARCHAR(64), a lib reporta como tamanho do campo 64. Usar TEXT é mesmo que um campo BLOB."De qualquer forma isso pode ser um problema na "vida real" e precisariamos encontrar uma solução viável..."
Me parece que são lixo. Pesquisei e não encontrei nenhum registro acentuado."Outra coisa é sobre os caracteres acentuados que estão aparecendo errado, veja na imagem que você mesmo enviou."
De qualquer forma, a responsabilidade da entrada/saída dos dados é de responsabilidade do usuário HBDBD. No caso do HBSQL, está sendo usado a "codepage" padrão.
Desculpe. Ainda estou no tempo dos .rmk. Não tenho nenhum .hbp criado."Você poderia enviar junto o arquivo .hbp que usa para compilar o programa?"
Qual seria a dúvida?
HBSQL (Sql Tool)
Sou do tempo do Clipper/Blinker:
hbsql.rmk
hbsql.lnk
hbsql.rmk
Código: Selecionar todos
#ifdef DEBUG
.prg.c:
\harbour\bin\harbour /n /q0 /gc0 /w3 /b /v /DDEBUG /i\harbour\include $<
.c.obj:
cl /c /TP /Zi /Wall /DDEBUG /I\harbour\include $<
#else
.prg.c:
\harbour\bin\harbour /n /l /gc0 /q0 /w3 /DNDEBUG /i\harbour\include $< >> harbour.log
.c.obj:
cl /c /TP /Wall /O2xtyb1 /Gy /GS- /GR- /EHs- /I\harbour\include $<
#endif
hbsql.c: hbsql.prg
abrws.c: abrws.prg
brws.c: brws.prg
queries.c: queries.prg
rddsys.c: rddsys.prg
hbsql.obj: hbsql.c
abrws.obj: abrws.c
brws.obj: brws.c
queries.obj: queries.c
rddsys.obj: rddsys.c
out = hbsql.exe
#ifdef DEBUG
$(Out): $(Objects)
link @debug.lnk > hbsql.log
#else
$(Out): $(Objects)
link @release.lnk > hbsql.log
#endifCódigo: Selecionar todos
/out:hbsql.exe
/subsystem:console
/release
/opt:ref
hbsql.obj
abrws.obj
brws.obj
queries.obj
hbvm.lib
hbrtl.lib
hbpp.lib
hbcommon.lib
hbnulrdd.lib
hbmacro.lib
hblang.lib
gtwin.lib
\usr\lib\sqlite\sqlite3.lib
\usr\lib\postgresql\libpq.lib
\usr\lib\mysql\libmysql.lib
\harbour\lib\hbdbd.lib
shell32.lib
user32.lib
winspool.lib
ole32.lib
olepro32.lib
ws2_32.lib
kernel32.lib
gdi32.lib
comctl32.lib
comdlg32.lib
advapi32.lib
iphlpapi.lib
winmm.lib
HBSQL (Sql Tool)
\harbour\lib\hbdbd.lib"Onde estão as funções DBD_*()?
HBDBD é um produto comercial. Uma biblioteca de acesso a Bancos de Dados.
Features:
Harbour 3.2/3.4
32/64bits
Plataformas: Windows, Linux, FreeBSD
Bancos: PostgreSQL 9 a 12, Sqlite 3 e Mysql 5 e 8
Em desenvolvimento: Firebird 3
A ferramenta HBSQL é somente para demonstração das capacidades da biblioteca HBDBD.
HBSQL (Sql Tool)
"Projeto comercial? Hmm... isso já me causa a ficar desinteressado... tem muita coisa gratuíta que funciona bem, creio que terá mais sucesso se criar algo gratuíto e disponibilizar os fontes para quem tiver interesse em dar continuidade pois acho que será mais proveitoso inclusive para você mesmo."
Não, muito obrigado.
"Em todo caso, para gerar o executável basta você criar um arquivo texto com o seguinte nome: proj.hbp e dentro do arquivo com o seguinte conteúdo:"
Não obrigado, estou satisfeito com os meus makefiles.
"Uma coisa muito útil sobre o hbmk2 é que ele pode ajudar a encontrar funções para suas aplicações, por exemplo digite:"
Não obrigado, utilizo um programa arcaico, desde o ano de 1992, chamado grep.exe, feito pela Inprise Corporation, que resolve pra mim.
"Se precisar posso lhe auxiliar a configurar um .hbc assim a geração da lib será facilitada também, apesar que você pode dar uma olhada na pasta Contibs e vai ver exemplos de como fazer isso para qualquer ambiente, Windows, OS/X, Linux etc..."
Não muito obrigado, continuo com os meus makefiles para gerar as bibliotecas.
Não, muito obrigado.
"Em todo caso, para gerar o executável basta você criar um arquivo texto com o seguinte nome: proj.hbp e dentro do arquivo com o seguinte conteúdo:"
Não obrigado, estou satisfeito com os meus makefiles.
"Uma coisa muito útil sobre o hbmk2 é que ele pode ajudar a encontrar funções para suas aplicações, por exemplo digite:"
Não obrigado, utilizo um programa arcaico, desde o ano de 1992, chamado grep.exe, feito pela Inprise Corporation, que resolve pra mim.
"Se precisar posso lhe auxiliar a configurar um .hbc assim a geração da lib será facilitada também, apesar que você pode dar uma olhada na pasta Contibs e vai ver exemplos de como fazer isso para qualquer ambiente, Windows, OS/X, Linux etc..."
Não muito obrigado, continuo com os meus makefiles para gerar as bibliotecas.
HBSQL (Sql Tool)
Nova versão d HBSQL.
Suporte para MySQL, quase pronto.
Fiz uma inclusão de um outro projeto, chamado sdbu.exe, para demonstrar as capacidades da nossa outra RDD (DBDRDD), que emula a DBFCDX, para substituição dos DBFs por SGDB.
O utilitário é bem simples, e mostra todas as tabelas de um database (configurado dentro do sdbu.ini) e ao teclar ENTER, executa um browser (BrowserDB), mostrando todos campos.
A DBDRDD está em desenvolvimento ainda, mas está "testável".
Novo link:
https://drive.google.com/open?id=13szkG ... dPEfDFx2xH
Suporte para MySQL, quase pronto.
Fiz uma inclusão de um outro projeto, chamado sdbu.exe, para demonstrar as capacidades da nossa outra RDD (DBDRDD), que emula a DBFCDX, para substituição dos DBFs por SGDB.
O utilitário é bem simples, e mostra todas as tabelas de um database (configurado dentro do sdbu.ini) e ao teclar ENTER, executa um browser (BrowserDB), mostrando todos campos.
A DBDRDD está em desenvolvimento ainda, mas está "testável".
Novo link:
https://drive.google.com/open?id=13szkG ... dPEfDFx2xH
HBSQL (Sql Tool)
De maneira alguma, estou chateado. Estamos num país livre. Cada um façam suas escolhas e vivam com elas. A HBDBD, está 100% pronta. A DBDRDD vai continuar a ser desenvolvida e estará 100% pronta logo. Elas foram feitas, exatamente pra isso, para que haja escolhas.hazael escreveu:Olha, não fique chateado, mas projeto privado, fechado e pago não me interessa e sinceramente acho não vai intereressar ninguém... melhor usar ADO, ODBC ou SQLMIX que é aberto, gratuíto e funciona.
Só não queria que ficasse frustrado com a baixa aceitação e antes que invista o seu tempo desenvolvendo para ninguém se interessar, achei melhor deixar você saber."
Agora todos as escolhas, têm seus custos. Não existe almoço grátis. Eu posso escolher andar a pé, é livre e grátis, mas não posso escolher andar de Ferrari sem pagar, não importa o que eu digo para a fábrica da Ferrari.
Andar a pé, tenho que pagar com o "tempo" de deslocamento e com os riscos das intempéries do clima.
O mesmo vale para usar ADO ou SQLMIX, com ADO têm que-se pagar com performance e limitação de plataformas, uma vez que está disponível somente para Windows e depende da Microsoft para funcionar (ou seja, alguém está pagando por isso) e por usar ODBC que é mais uma camada de tradução entre o SGDB e o cliente. Com a SQLMIX têm que se pagar com limitações no uso da sintaxe e com falta de recursos não inclusos, que alguém terá que fazer e acredito, atualmente, não têm ninguém com conhecimento e disposição para desenvolver a SQLMIX. Claro que pode aparecer alguém e fazê-lo, mas é esperar para ver.
Mas então, alguém tem que fazer a Ferrari e esse é o meu objetivo, a HBDBD e DBDRDD, serão as Ferraris, do acesso a banco de dados, pelo Harbour e o seu uso não será "free", pois tenho meus próprios custos para desenvolvê-las. Nenhuma "free beer here".
Aqui há um bocado de desconhecimento. A utilização das bibliotecas compiladas é simples e fácil de usar, tanto para o Harbour 3.2 ou Harbour 3.4, 32bits ou 64bits e em qualquer plataforma, seja Windows ou LInux, ou FreeBSD até mesmo MacOS.hazael escreveu:"Sem contar que não vai fazer pelos padrões do Harbour com uso do hbmk2 que é a ferramenta básica e indicada para qualquer compilação, mesmo para geração de Libs. Leve em consideração que o Harbour está em contínuo desenvolvimento, é livre, aberto, permite usar compiladores diferentes, 32/64 bits, se não vem o código fonte para gerar junto com um pacote de compilação, provavelmente vai ficar muito difícil usar. Isso poderia funcionar para o Harbour 3.0 mas acho que não valeria a pena pois já está muito defasado..."
Tudo o que precisa ser feito é uma modificação, nos seus próprios .hbp, que devem referenciar a biblioteca em alguma linha e pronto. Não têm mistério algum. Não importa por qual meio seja produzido a biblioteca, uma vez ela estando pronta, é só usá-la. Quem têm o mínimo de conhecimento em usar Harbour sabe disso.
O Harbour faz uso de bibliotecas prontas, desde sempre, basta ver que ninguém, compila PCRE, ZLIB, Postgresql, Sqlite ou Openssl, apesar de que também isso possa ser feito.
Então para se usar a HBDBD ou a DBDRDD, basta incluir na primeira linha do .bbp
-hbdbd // HBDBD
ou
-rdddbd // DBDRDD
Que estarão disponíveis em versões idênticas de 32bits ou 64 bits, para Windows, Linux, Android, FreeBSD e MacOS.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
HBSQL (Sql Tool)
Não esqueça da opção de usar nome de campo.
Até mesmo na TMySQL tem isso.
E no ADO tem isso também.
Fica extremamente antiprático usar por número ao invés de nome.
Nem que seja array do tipo HASH.
Por número atrapalha qualquer alteração posterior de estrutura na tabela, e atrapalha a visualização dos campos do fonte.
Por nome tá fácil conferir.
Velocidade?
Entre um fonte fácil de alterar ou um fonte que vai ser complicado mexer, talvez melhor sacrificar um pouco de velocidade.
Nada impede de você deixar as duas opções, e o usuário que faça a própria escolha.
Até mesmo na TMySQL tem isso.
E no ADO tem isso também.
Fica extremamente antiprático usar por número ao invés de nome.
Nem que seja array do tipo HASH.
Código: Selecionar todos
? Rs:Field(1):Value
? Rs:Field( "CODIGO" ):Value
...
aValues[ 1 ]
aValues[ "CODIGO" ]
Por nome tá fácil conferir.
Código: Selecionar todos
WITH OBJECT cnMySql
:CreateCreate()
:QueryAdd( "FINUMLAN", mfiNumLan )
:QueryAdd( "FITIPLAN", iif( oNFE:Emitente:Cnpj == jpempre->emCnpj, "1", "2" ) )
:QueryAdd( "FINUMDOC", oNFE:cNumDoc )
:QueryAdd( "FIDATEMI", oNFE:DataEmissao )
:QueryAdd( "FIPARCELA", StrZero( 1, 3 ) )
:QueryAdd( "FICLIFOR", mCliCod )
:QueryAdd( "FISACADO", mCliCod )
:QueryAdd( "FIVALOR", oNFE:Totais:ValNot )
:QueryAdd( "FIDATVEN", oNFE:DataEmissao )
:QueryAdd( "FIPEDIDO", jppedi->pdPedido )
:QueryAdd( "FIINCINF", LogInfo() )
:DBFQueryExecuteInsert()
:QueryExecuteInsert( "JPFINAN" )
ENDWITH
Entre um fonte fácil de alterar ou um fonte que vai ser complicado mexer, talvez melhor sacrificar um pouco de velocidade.
Nada impede de você deixar as duas opções, e o usuário que faça a própria escolha.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
HBSQL (Sql Tool)
Justo, tanto que já adicionei esse recurso para a HBDBD.JoséQuintas escreveu:Não esqueça da opção de usar nome de campo.
Até mesmo na TMySQL tem isso.
E no ADO tem isso também.
Fica extremamente antiprático usar por número ao invés de nome.
Nem que seja array do tipo HASH."
DBD_RES_HASH traz todo o dataset em HASH para o usuário. Enquanto que DBD_FETCH_ROW_HASH, traz uma linha em HASH para o usuário que poderá referenciar diretamente pelo nome do campo.
Acredito que a versão em HASH será um pouco mais lenta, mas como você disse, pode-se ganhar em clareza e facilidade para manutenção do código.
Código: Selecionar todos
aValues[ "CODIGO" ] := 1
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
HBSQL (Sql Tool)
Ranier
Não lembro se foi no seu fonte, lembro de ter visto o uso de funções separadas dos parêntesis, tipo Str ( 2 )
CUIDADO
Uma onde isso pode ser problema:
SELECT ( nArea )
Select( nArea )
No Clipper/Harbour/XHarbour existe o comando SELECT e a função Select()
O comando é pra trocar área em uso, e a função apenas retorna a área atual, ou a área aonde o arquivo está aberto.
Então... o espaço em branco NESSE caso faz muita diferença.
Não lembro se foi no seu fonte, lembro de ter visto o uso de funções separadas dos parêntesis, tipo Str ( 2 )
CUIDADO
Uma onde isso pode ser problema:
SELECT ( nArea )
Select( nArea )
No Clipper/Harbour/XHarbour existe o comando SELECT e a função Select()
O comando é pra trocar área em uso, e a função apenas retorna a área atual, ou a área aonde o arquivo está aberto.
Então... o espaço em branco NESSE caso faz muita diferença.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
HBSQL (Sql Tool)
OK, obrigado, irei verificar.JoséQuintas escreveu:Ranier
Não lembro se foi no seu fonte, lembro de ter visto o uso de funções separadas dos parêntesis, tipo Str ( 2 )
CUIDADO
Uma onde isso pode ser problema:
SELECT ( nArea )
Select( nArea )
No Clipper/Harbour/XHarbour existe o comando SELECT e a função Select()
O comando é pra trocar área em uso, e a função apenas retorna a área atual, ou a área aonde o arquivo está aberto.
Então... o espaço em branco NESSE caso faz muita diferença.
Em Clipper/Harbour sigo mais ou menos o padrão que é sempre usar um espaço separando os "tokens".
Str( 2 )
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
HBSQL (Sql Tool)
Seria... mas esqueceu de outro detalhe:
SELECT CLIENTE
se cliente é variável ou não... vai selecionar "CLIENTE"
SELECT CLIENTE
se cliente é variável ou não... vai selecionar "CLIENTE"
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
HBSQL (Sql Tool)
Sinto muito.... tudo isso pra nada
SELECT 1
Isto aceita, vai alterar pra área de determinado número, é o que mostra o manual
SELECT CLI
Isto aceita, vai alterar pra área de determinado nome, isto é o que mostra o manual
CLI := 10
SELECT CLI
Não adianta, vai alterar pra área CLI, isto o manual não mostra claramente
CLI := 10
SELECT ( CLI )
Aí sim, vai alterar pra área 10, isto o manual não mostra
Ou... como muitos fazem... SELECT &CLI
SELECT 1
Isto aceita, vai alterar pra área de determinado número, é o que mostra o manual
SELECT CLI
Isto aceita, vai alterar pra área de determinado nome, isto é o que mostra o manual
CLI := 10
SELECT CLI
Não adianta, vai alterar pra área CLI, isto o manual não mostra claramente
CLI := 10
SELECT ( CLI )
Aí sim, vai alterar pra área 10, isto o manual não mostra
Ou... como muitos fazem... SELECT &CLI
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
HBSQL (Sql Tool)
Amiguinhos,
Não quero mudar o foco do post mas quero colocar somente um pensamento.
quando eu estava criando a ADOxB para manusear arquivos via ADO me deparei com esta questão de usar áreas e selects sem usar números engessados.
Não criei classes, somente as funções que uso até hoje para manusear arquivos SQL remotos em meu sistema.
E o que acho realmente, manter a marcação da seleção por áreas numeradas não funcionariam no meu caso quando usando MDI e creio que se deva pensar em não usar este meio mas sim usar nomes.
Em um aplicativo MDI que se abra duas janelas onde na primeira temos 10 áreas e na posição 8 eu abro o arquivo de venda e minimizo abrindo nova janela com 8 áreas e esta nova janela tenha na posição 8 o arquivo estoque então já sobrescrevi a área da primeira janela.
Tratar posicionamentos com nomes dão mais segurança até na visualização do código.
Um trechinho de como é na ADOxB:
Em suma não testei a HBDBD e não estou criticando, somente apresentando a dificuldade que tive.
Não quero mudar o foco do post mas quero colocar somente um pensamento.
quando eu estava criando a ADOxB para manusear arquivos via ADO me deparei com esta questão de usar áreas e selects sem usar números engessados.
Não criei classes, somente as funções que uso até hoje para manusear arquivos SQL remotos em meu sistema.
E o que acho realmente, manter a marcação da seleção por áreas numeradas não funcionariam no meu caso quando usando MDI e creio que se deva pensar em não usar este meio mas sim usar nomes.
Em um aplicativo MDI que se abra duas janelas onde na primeira temos 10 áreas e na posição 8 eu abro o arquivo de venda e minimizo abrindo nova janela com 8 áreas e esta nova janela tenha na posição 8 o arquivo estoque então já sobrescrevi a área da primeira janela.
Tratar posicionamentos com nomes dão mais segurança até na visualização do código.
Um trechinho de como é na ADOxB:
Código: Selecionar todos
PUBLIC oRs
ADOSetRDD( "Firebird" )
StrDatabase := "Z:\D_\disco\E\FONTES\NFW\harbour\libs\adodb\gdb\adogdb.gdb"
StrConnection := "DRIVER=Firebird/InterBase(r) driver; UID=SYSDBA; PWD=masterkey; Database="+StrDatabase+"; DIALECT=3" //; vendorclient=gds32.dll;"
MsgRun( "Conectando..." )
ADO CONNECT StrConnection
oRs := oRecordSet
// Cria tabelas se nao existirem
if ADOFile( "clientes" )
else
MsgRun( "Criando tabela CLIENTES..." )
ADO EXECUTE "DROP TABLE clientes"
ADO EXECUTE "CREATE TABLE clientes (nome char(45), email char(45), unique(nome))"
endif
if ADOFile( "siglas" )
else
MsgRun( "Criando tabela SIGLAS..." )
ADO EXECUTE "DROP TABLE siglas"
ADO EXECUTE "CREATE TABLE siglas (uf char(2), estado char(20), unique(uf))"
endif
if ADOFile( "teste" )
else
MsgRun( "Criando tabela TESTE..." )
ADO EXECUTE "DROP TABLE teste"
ADO EXECUTE "CREATE TABLE teste (uf char(2), estado char(20), unique(uf))"
endif
// Abre as tabelas
ADO USE clientes
ADO USE siglas
// Verifica se ja possuem dados
ADO SELECT clientes
//ADO GOTOP
nRegistros := ADORecCount()
// ? ADOAlias(), nRegistros
if nRegistros = 0
ADO APPEND BLANK
ADO REPLACE nome WITH "JOSE CARLOS DA ROCHA"
ADO REPLACE email WITH "IROCHINHA@ITELEFONICA.COM.BR"
ADO COMMIT
endif
ADO SELECT siglas
//ADO GOTOP
nRegistros := ADORecCount()
// ? ADOAlias(), nRegistros
if nRegistros = 0
ADO APPEND BLANK
ADO REPLACE uf WITH "SP"
ADO REPLACE estado WITH "SAO PAULO"
ADO COMMIT
ADO APPEND BLANK
ADO REPLACE uf WITH "RJ"
ADO REPLACE estado WITH "RIO DE JANEIRO"
ADO COMMIT
endif
MsgRun( "Executando..." )
ADO SELECT clientes
ADO GOTOP
MsgRun( "Executando SET FILTER TO nome like '*teste*'..." )
ADO SET FILTER TO "nome like '*tete*'"
if ADOEof()
? 'Nada foi filtrado'
ADO SET FILTER TO
ADO GOTOP
endif
Browse( oRs )
ADO SET FILTER TO
MsgRun( "Executando LOCATE nome like 'TESTES'..." )
ADO LOCATE "nome like 'TESTES*'"
if ADOEof()
? 'Nada foi encontrado'
ADO GOTOP
endif
Browse( oRs )
//MsgRun( "Executando SORT ON nome..." )
//ADO SORT ON clientes.nome
//Browse( oRs )
//WBrowseRecordSet( oRs, StrField2 )
//Browse( oRs )
ADO CLOSE
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
HBSQL (Sql Tool)
A velha mania de olhar fontes.....
Porque ao invés disto:
não isto:
Ou, se possível, trocar tudo por uma única linha:
Só como curiosidade.... no meu uso:
Uso classe que é pra tratar eventuais problemas, mas seria o mesmo sem ela, basta a conexão.
Neste caso foi só pra curiosidade, no final, qualquer que seja o componente, acaba nos comandos SQL sendo executados mesmo.
Mas fica visível que é a conexão que faz isso, talvez mais fácil de entrar na cabeça de quem não está acostumado.
Pensando bem... talvez eu troque o nome da minha conexão, só não sei o nome adequado, porque ADO é muito comum pra pesquisar em fontes, talvez oConexao mesmo, e como a variável sempre é local, dá pra alterar um fonte de cada vez.
Porque ao invés disto:
Código: Selecionar todos
if ADOFile( "clientes" )
else
MsgRun( "Criando tabela CLIENTES..." )
ADO EXECUTE "DROP TABLE clientes"
ADO EXECUTE "CREATE TABLE clientes (nome char(45), email char(45), unique(nome))"
endif
Código: Selecionar todos
if ! ADOFile( "clientes" )
MsgRun( "Criando tabela CLIENTES..." )
ADO EXECUTE "DROP TABLE clientes"
ADO EXECUTE "CREATE TABLE clientes (nome char(45), email char(45), unique(nome))"
endif
Código: Selecionar todos
ADO EXECUTE "CREATE TABLE IF NOT EXISTS JPREGUSO ( ..."
Código: Selecionar todos
cnMySql:Execute( "CREATE TABLE IF NOT EXISTS JPREGUSO ( ..." )
// oADO:Execute( "CREATE TABLE IF NOT EXISTS JPREGUSO ( ..." )
Neste caso foi só pra curiosidade, no final, qualquer que seja o componente, acaba nos comandos SQL sendo executados mesmo.
Mas fica visível que é a conexão que faz isso, talvez mais fácil de entrar na cabeça de quem não está acostumado.
Pensando bem... talvez eu troque o nome da minha conexão, só não sei o nome adequado, porque ADO é muito comum pra pesquisar em fontes, talvez oConexao mesmo, e como a variável sempre é local, dá pra alterar um fonte de cada vez.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
