Clipper On Line • Ver Tópico - DBF não gravando
Mudar para estilo Clássico
Projeto Harbour - Compilador de código aberto compatível com o Clipper.
Postar uma resposta

DBF não gravando

16 Jan 2020 10:49

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

16 Jan 2020 12:00

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

17 Jan 2020 09:24

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

17 Jan 2020 12:36

Creio que não existe nada mais rápido que SQLite local

DBF não gravando

17 Jan 2020 15:08

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

17 Jan 2020 16:55

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

17 Jan 2020 18:07

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 http://www.pctoledo.com.br/forum/viewtopic.php?f=57&t=23841

Também precisa instalar o driver OleDb do ADS

DBF não gravando

17 Jan 2020 19:07

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

18 Jan 2020 00:51

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

18 Jan 2020 09:26

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

18 Jan 2020 20:18

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

18 Jan 2020 20:25

Quintas,

Realmente é muito rápido, gostei!

DBF não gravando

18 Jan 2020 22:02

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

Código:
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

18 Jan 2020 22:43

Achei isso do Alexander Kressin

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

DBF não gravando

18 Jan 2020 22:53

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:
[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.
Postar uma resposta