Clipper On Line • Ver Tópico - HBSQL (Sql Tool)

HBSQL (Sql Tool)

Discussão sobre ferramentas de apoio à programação (Clipper/[x]Harbour)

Moderador: Moderadores

 

HBSQL (Sql Tool)

Mensagempor Ranier » 19 Set 2019 09:43

Ranier
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 80
Data de registro: 02 Abr 2019 09:01
Cidade/Estado: Goiania/Goias
Curtiu: 0 vez
Mens.Curtidas: 9 vezes

HBSQL (Sql Tool)

Mensagempor Ranier » 19 Set 2019 14:42

"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()."

Coloquei tamanho fixo de 16 para o HBSQL, para campos sem tamanho definido.

"De qualquer forma isso pode ser um problema na "vida real" e precisariamos encontrar uma solução viável..."

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.

"Outra coisa é sobre os caracteres acentuados que estão aparecendo errado, veja na imagem que você mesmo enviou."

Me parece que são lixo. Pesquisei e não encontrei nenhum registro acentuado.
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.

"Você poderia enviar junto o arquivo .hbp que usa para compilar o programa?"

Desculpe. Ainda estou no tempo dos .rmk. Não tenho nenhum .hbp criado.
Qual seria a dúvida?
Ranier
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 80
Data de registro: 02 Abr 2019 09:01
Cidade/Estado: Goiania/Goias
Curtiu: 0 vez
Mens.Curtidas: 9 vezes

HBSQL (Sql Tool)

Mensagempor Ranier » 19 Set 2019 14:49

Sou do tempo do Clipper/Blinker:

hbsql.rmk
#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
#endif


hbsql.lnk
/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
Ranier
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 80
Data de registro: 02 Abr 2019 09:01
Cidade/Estado: Goiania/Goias
Curtiu: 0 vez
Mens.Curtidas: 9 vezes

HBSQL (Sql Tool)

Mensagempor Ranier » 19 Set 2019 15:26

Onde estão as funções DBD_*()?

\harbour\lib\hbdbd.lib"

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.
Ranier
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 80
Data de registro: 02 Abr 2019 09:01
Cidade/Estado: Goiania/Goias
Curtiu: 0 vez
Mens.Curtidas: 9 vezes

HBSQL (Sql Tool)

Mensagempor Ranier » 21 Set 2019 17:11

"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.
Ranier
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 80
Data de registro: 02 Abr 2019 09:01
Cidade/Estado: Goiania/Goias
Curtiu: 0 vez
Mens.Curtidas: 9 vezes

HBSQL (Sql Tool)

Mensagempor Ranier » 21 Set 2019 17:16

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=13szkGyR85e_aJHBp28NAmIdPEfDFx2xH
Ranier
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 80
Data de registro: 02 Abr 2019 09:01
Cidade/Estado: Goiania/Goias
Curtiu: 0 vez
Mens.Curtidas: 9 vezes

HBSQL (Sql Tool)

Mensagempor Ranier » 23 Set 2019 09:42

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."

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.
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".

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..."

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.
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.
Ranier
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 80
Data de registro: 02 Abr 2019 09:01
Cidade/Estado: Goiania/Goias
Curtiu: 0 vez
Mens.Curtidas: 9 vezes

HBSQL (Sql Tool)

Mensagempor JoséQuintas » 23 Set 2019 09:53

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.

? Rs:Field(1):Value
? Rs:Field( "CODIGO" ):Value
...
aValues[ 1 ]
aValues[ "CODIGO" ]


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.

      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


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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

HBSQL (Sql Tool)

Mensagempor Ranier » 23 Set 2019 10:05

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."

Justo, tanto que já adicionei esse recurso para a HBDBD.
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.

aValues[ "CODIGO" ] := 1
Ranier
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 80
Data de registro: 02 Abr 2019 09:01
Cidade/Estado: Goiania/Goias
Curtiu: 0 vez
Mens.Curtidas: 9 vezes

HBSQL (Sql Tool)

Mensagempor JoséQuintas » 26 Set 2019 10:40

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

HBSQL (Sql Tool)

Mensagempor Ranier » 26 Set 2019 12:41

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.

OK, obrigado, irei verificar.
Em Clipper/Harbour sigo mais ou menos o padrão que é sempre usar um espaço separando os "tokens".
Str( 2 )
Ranier
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 80
Data de registro: 02 Abr 2019 09:01
Cidade/Estado: Goiania/Goias
Curtiu: 0 vez
Mens.Curtidas: 9 vezes

HBSQL (Sql Tool)

Mensagempor JoséQuintas » 26 Set 2019 17:54

Seria... mas esqueceu de outro detalhe:

SELECT CLIENTE

se cliente é variável ou não... vai selecionar "CLIENTE"
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

HBSQL (Sql Tool)

Mensagempor JoséQuintas » 27 Set 2019 04:22

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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

HBSQL (Sql Tool)

Mensagempor rochinha » 27 Set 2019 20:02

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:
    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


Em suma não testei a HBDBD e não estou criticando, somente apresentando a dificuldade que tive.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4548
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 808 vezes
Mens.Curtidas: 246 vezes

HBSQL (Sql Tool)

Mensagempor JoséQuintas » 27 Set 2019 20:33

A velha mania de olhar fontes.....

Porque ao invés disto:

 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


não isto:

 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


Ou, se possível, trocar tudo por uma única linha:

ADO EXECUTE "CREATE TABLE IF NOT EXISTS JPREGUSO ( ..."


Só como curiosidade.... no meu uso:

cnMySql:Execute( "CREATE TABLE IF NOT EXISTS JPREGUSO ( ..." )
// oADO:Execute( "CREATE TABLE IF NOT EXISTS JPREGUSO ( ..." )


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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Anterior Próximo



Retornar para Ferramentas de Apoio

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro