DBF não gravando

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

DBF não gravando

Mensagem por asimoes »

Quintas, vou planejar o uso disso, muito bom.

Perguntas:

O dbf fica no servidor, para a aplicação acessar a base na rede como fica ?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

DBF não gravando

Mensagem por JoséQuintas »

asimoes escreveu:Perguntas:
O dbf fica no servidor, para a aplicação acessar a base na rede como fica ?
Estamos falando de ADSLocal
ADS local é pra usar comando SQL e ficar mais rápido o acesso.
Vai acessar igual DBF/CDX: precisa enxergar a pasta do servidor.

Ao mesmo tempo, o fonte vai estar pronto com SQL.
Vai poder usar qualquer base SQL depois - isso é bom

Faça testes:
Vai ficar espantado com a velocidade.
Não é um cliente/servidor, mas já 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/
Softwhouse
Usuário Nível 3
Usuário Nível 3
Mensagens: 324
Registrado em: 07 Dez 2011 18:44
Localização: Porto Alegre/RS

DBF não gravando

Mensagem por Softwhouse »

SQLite para quem precisa: https://hmglights.wordpress.com/2014/03 ... m-precisa/

Alguém teria as imagens do rc ? Nos fontes não acompanha e o link do download do executável não funciona.
Fernando
Marcos Kieron
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 14 Jan 2020 10:29
Localização: São Paulo/SP

DBF não gravando

Mensagem por Marcos Kieron »

Creio que não existe nada mais rápido que SQLite local
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

DBF não gravando

Mensagem por JoséQuintas »

Marcos Kieron escreveu: Creio que não existe nada mais rápido que SQLite local
Pode até ser mas...

Estamos falando de pegar o aplicativo atual, usando DBF, e continuar usando os mesmos DBFs.
O programador pode alterar UM ÚNICO RELATÓRIO pra usar SQL encima de DBFs e ganhar muita velocidade.
Altera um relatório pra SQL, outro, e mais outro... e se um dia quiser usar SQLite ou MySQL ou outra coisa... já vai estar no jeito, já usando comandos SQL.

É mais fácil, pra quem está entrando no mundo SQL, trabalhar com seus próprios arquivos, e fazer testes sem precisar nenhum tipo de conversão.

Estou querendo trazer os programadores que ainda só usam DBF para o mundo SQL, de uma maneira fácil pra eles.
Depois de começar... aí eles podem decidir por conta própria o que vém depois.

SQLite, até onde sei, é pra uso por uma única pessoa, SEM COMPARTILHAMENTO, SEM REDE.
Não sei se dá pra ficar recomendando o uso, sem esse tipo de alerta.
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/
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

DBF não gravando

Mensagem por Mario Mesquita »

Boa tarde!

Muito interessante esse ADS. Foi o que vc me recomendou, né, Quintas?

Se faz SQL, mas ainda se pode usar DBF e fazer uma transição suave e já preparar seu programa para um SGDB, parece sensacional.

Pra mim, que não tem prática alguma com SQL, parece ótimo.

Tem algum tutorial de como usa o ADS?

Saudações,
Mario.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

DBF não gravando

Mensagem por asimoes »

Mario Mesquita escreveu:Tem algum tutorial de como usa o ADS?
Mário,

Basicamente, você precisa saber a string de conexão, tem um exemplo do Quintas, aqui https://pctoledo.org/forum/viewto ... 57&t=23841

Também precisa instalar o driver OleDb do ADS
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

DBF não gravando

Mensagem por JoséQuintas »

Lembro de ter visto em algum lugar sobre o uso de ADS diretamente no Harbour, por comandos SQL.
Não sei se é a RDDADS ou outra.
Pode ser interessante, principalmente pra Linux, que não tem ADO.

A RDDADS não vém pronta no Harbour, e não sei se vai ser fácil pra todos criar essa lib opcional.

No Windows, pra ver o SQL funcionando, sem precisar quebrar a cabeça procurando como gerar a LIB, o melhor é o ADO, porque o Harbour tá pronto pra ele.

Depois, gostando do resultado, decide se vai atrás de como gerar essa parte opcional do Harbour, ou se vai continuar com ADO.

Por enquanto é bom saber que também existe essa opção.
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/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

DBF não gravando

Mensagem por asimoes »

Tenho um dbf com 51 campos, fiz um select * e ficou faltando colunas, o oledb tem limite para trazer as colunas ?

Isso parece estar relacionado a campos com conteúdo nulo, engraçado que tem campo nulo que aparece. por ser um problema na exibição ou limitação do browser
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

DBF não gravando

Mensagem por JoséQuintas »

asimoes escreveu:Tenho um dbf com 51 campos, fiz um select * e ficou faltando colunas, o oledb tem limite para trazer as colunas ?
Isso parece estar relacionado a campos com conteúdo nulo, engraçado que tem campo nulo que aparece. por ser um problema na exibição ou limitação do browser
Sim, campos nulos.
A montagem do tbrowse é baseada no primeiro registro.
E o ADS segue o padrão do SQL SERVER, onde quando a data está vazia retorna NULL. Acaba sendo coluna vazia, tamanho zero.
Em outras bases, o mesmo pode acontecer com string, onde o tamanho pode ser variável, e vai ajustar pro primeiro tamanho que aparecer.
Por isso pode ser interessante criar o tbrowse manualmente.
Ou talvez algum adicional no comando SQL...
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/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

DBF não gravando

Mensagem por asimoes »

JoséQuintas escreveu:Sim, campos nulos.
A montagem do tbrowse é baseada no primeiro registro.
E o ADS segue o padrão do SQL SERVER, onde quando a data está vazia retorna NULL. Acaba sendo coluna vazia, tamanho zero.
Em outras bases, o mesmo pode acontecer com string, onde o tamanho pode ser variável, e vai ajustar pro primeiro tamanho que aparecer.
Por isso pode ser interessante criar o tbrowse manualmente.
Ou talvez algum adicional no comando SQL...
Quintas, descobri que usando "TableType=ADS_VFP" traz os nulos, mesmo que existam no primeiro registro
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

DBF não gravando

Mensagem por asimoes »

Quintas,

Realmente é muito rápido, gostei!
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

DBF não gravando

Mensagem por asimoes »

Para usar o formato DD/MM/YYYY com o ADS OleDb

Código: Selecionar todos

hDLL := Hb_libLoad( "ace32.dll" )

nStatus := Hb_dynCall( { "AdsSetDateFormat", hDLL, HB_DYN_CALLCONV_STDCALL}, "DD/MM/YYYY" )
ex.: select * from apa01 where d_venc between '01/01/2018' and '31/12/2018'
Da pra modificar outros parâmetros de outras funções da lib carregando a dll
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

DBF não gravando

Mensagem por asimoes »

Achei isso do Alexander Kressin

https://harbour.github.io/doc/rddads.html
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

DBF não gravando

Mensagem por JoséQuintas »

Encontrei isto lá:
Note that the default local server is usable for file sharing on a small network.
The default DLL is limited to 5 users, but an unlimited version is available from Extended Systems.
Se for limitação da atual, melhor usar a antiga limitada a 20 usuários.
O arquivo que eu usava: ADSLOCAL.CFG

Código: Selecionar todos

[SETTINGS]
;              Advantage Local Server configuration file
;
; The Advantage Local Server DLL (for Windows) and SO (for Linux) reads
; this configuration file when the DLL/SO is loaded. Values input
; after the keyword and equal sign are used to configure the DLL/SO.
; If no value is inserted after a keyword and equal sign, the default
; is used. This file should be located in the same directory as your
; Advantage Local Server DLL (adsloc32.dll) or SO (libadsloc.so).
;
; Licenses
;
LICENSES=20
; Number of Connections
; Default = 20; Range = 1 - No upper limit
CONNECTIONS=20
;
; Number of Tables
; Default = 50; Range = 1 - No upper limit
TABLES=100
;
; Number of Index Files
; Default = 75; Range = 1 - No upper limit
INDEXES=100
;
; Number of Data Locks
; Default = 500; Range = 1 - No upper limit
LOCKS=500
;
; Maximum Size of Error Log (in KBytes)
; Default = 1000 KBytes; Range = 1 KByte - No upper limit
ERROR_LOG_MAX=1000
;
; Error Log and Assert Log Path
; Default = C:\
ERROR_ASSERT_LOGS=
;
; ANSI Character Set
; Default = Use the currently configured ANSI character set that is active
;           on the workstation.
; If you do not wish to use the ANSI character set that is active on the
;   current workstation, the available ANSI character sets to be used are:
;     Danish, Dutch, Engl(Amer), Engl(UK), Engl(Can), Finnish, French,
;     French Can, German, Icelandic, Italian, Norwegian, Portuguese, Spanish,
;     Span(Mod), Swedish, Russian, ASCII, Turkish, Polish, or Baltic
ANSI_CHAR_SET=Engl(UK)
;
; OEM/Localized Character Set
; Default = USA
; Options are:
;   USA, DANISH, DUTCH, FINNISH, FRENCH, GERMAN, GREEK437, GREEK851, ICELD850,
;   ICELD861, ITALIAN, NORWEGN, PORTUGUE, SPANISH, SWEDISH, MAZOVIA, PC_LATIN,
;   ISOLATIN, RUSSIAN, NTXCZ852, NTXCZ895, NTXSL852, NTXSL895, NTXHU852,
;   NTXPL852, or TURKISH
OEM_CHAR_SET=USA
;
; Local File Flush Frequency (in milliseconds)
; Default = 20000 ms (20 seconds); Range = 0 ms - 100000 ms
FLUSH_FREQUENCY=2000
;
; Lowercase All Paths
; Default = 0 (false)
; Options are: 0 (for false) and 1 (for true)
; Option to force the Linux Advantage Local Server SO to lowercase all
;    paths and filenames before attempting to access them on disk. This
;    option is ignored by the Advantage Local Server DLL for Windows.
LOWERCASE_ALL_PATHS=
Lembro que tem outra configuração, pra usar em terminal remoto, mas não lembro mais qual era.
Alguma coisa parecida com TIERS ou algo assim.
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/
Responder