Página 3 de 4

DBF não gravando

Enviado: 16 Jan 2020 10:49
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 ?

DBF não gravando

Enviado: 16 Jan 2020 12:00
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.

DBF não gravando

Enviado: 17 Jan 2020 09:24
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.

DBF não gravando

Enviado: 17 Jan 2020 12:36
por Marcos Kieron
Creio que não existe nada mais rápido que SQLite local

DBF não gravando

Enviado: 17 Jan 2020 15:08
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.

DBF não gravando

Enviado: 17 Jan 2020 16:55
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.

DBF não gravando

Enviado: 17 Jan 2020 18:07
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

DBF não gravando

Enviado: 17 Jan 2020 19:07
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.

DBF não gravando

Enviado: 18 Jan 2020 00:51
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

DBF não gravando

Enviado: 18 Jan 2020 09:26
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...

DBF não gravando

Enviado: 18 Jan 2020 20:18
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

DBF não gravando

Enviado: 18 Jan 2020 20:25
por asimoes
Quintas,

Realmente é muito rápido, gostei!

DBF não gravando

Enviado: 18 Jan 2020 22:02
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

DBF não gravando

Enviado: 18 Jan 2020 22:43
por asimoes
Achei isso do Alexander Kressin

https://harbour.github.io/doc/rddads.html

DBF não gravando

Enviado: 18 Jan 2020 22:53
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.