DBF SERVER

641 views
Skip to first unread message

vikram...@gmail.com

unread,
Jan 14, 2024, 11:28:18 PM1/14/24
to Harbour Users
HELLO Harbour Experts ,
Is Their any Soloutions for Dbf File To run on Online Server  which can be aceesed from any where . if have any soloution  please help me . 

Thanks In Advance 

Vikram

KennyOoi

unread,
Jan 14, 2024, 11:38:05 PM1/14/24
to Harbour Users
hi vikram,
hbnetio
or
letodbf


kenny

fdaniele

unread,
Jan 14, 2024, 11:52:03 PM1/14/24
to Harbour Users
if you want, this is the must

Gerald Drouillard

unread,
Jan 15, 2024, 10:17:32 AM1/15/24
to harbou...@googlegroups.com
If you don't put enough time into your question, nobody is going to put much time into the response.
Need more information about your environment.  # users, type of app (console, web, etc), size of files, current issues, etc


--
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
Unsubscribe: harbour-user...@googlegroups.com
Web: https://groups.google.com/group/harbour-users
---
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to harbour-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/harbour-users/83ae8b83-fa44-4050-88d5-332cfbd407efn%40googlegroups.com.

cod...@outlook.com

unread,
Jan 15, 2024, 2:24:40 PM1/15/24
to Harbour Users

Hi fdaniele.

>>if you want, this is the must  https://carles9000.github.io/ 

I last year have tried carles9000 twice, but both canceled it for this reason:

There is no proper *how to* procedure for beginners.

I think that examples in videos are for some earlier versions of UT. Main problem for mi is how to create myapp folder and its subfolders and files. In videos they start explanation assuming that I already have application folder (myapp), with no explanation how to create it.

Seconf problem is that video eamples do not match with newest application examples in github repositories. For me it looks that video examples are older than current examples in repositories and latest version of UT.  

If you have some other guide how to start, please send us here. Also, can you suggest us some UT forum to read.

Thank you in advance.

Regards,

Simo.

Lautaro Moreira

unread,
Jan 15, 2024, 3:34:00 PM1/15/24
to harbou...@googlegroups.com, cod...@outlook.com, Lautaro Moreira

Hello,

In the ut home page, go to "Manual TWEB",  and there go to page 6, copy the text extracted from the pdf file here: :

Best Regards,

Lautaro Moreira


--
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
Unsubscribe: harbour-user...@googlegroups.com
Web: https://groups.google.com/group/harbour-users
---
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to harbour-user...@googlegroups.com.

cod...@outlook.com

unread,
Jan 16, 2024, 2:35:13 AM1/16/24
to Harbour Users
Thank you  Lautaro Moreira !

To be honest I found that Pdf manual but I thought it was some manual only about how to use Tweb. Secondly it is written in Spanish which I do not know, so I gave up after first two pages.
Now I will find way to translate all text in English.

Regards,
Simo.

Lautaro Moreira

unread,
Jan 16, 2024, 6:52:31 AM1/16/24
to harbou...@googlegroups.com, cod...@outlook.com, Lautaro Moreira

Simo,

I'm glad my comment was useful to you.

To clarify a little more, UT is uhttpd2+tweb in one package now.

Best Regards,

Lautaro Moreira

--
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
Unsubscribe: harbour-user...@googlegroups.com
Web: https://groups.google.com/group/harbour-users
---
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to harbour-user...@googlegroups.com.

Juan Castillo Arteaga

unread,
Jan 16, 2024, 10:50:39 AM1/16/24
to harbou...@googlegroups.com
Mi experiencia con UT ha sido muy satisfactoria, en mi caso he decidido continuar con una migración de una buena parte de una aplicación hecha para Windows, recomendada por experiencia propia. Saludos cordiales.

My experience with UT has been very satisfactory, in my case I have decided to continue with a migration of a good part of an application made for Windows, recommended by my own experience. Best regards.

Juan Castillo A.

cod...@outlook.com

unread,
Jan 16, 2024, 11:30:32 AM1/16/24
to Harbour Users

Hi Juan,

thank you for sharing your experience with UT.

I have translated Manual TWEB (tweb_for_uhttpd2.pdf) to english, so now it is easier to me. Thanks to Lautaro Moreira. Reading first few pages Charly descibes many of us as "When you created the views we created them in pure and simple html/css code and this is where many of our programmers stopped.". That was true in my case.  His statement “We have a lot of work and we don't have time to learn so much technology”  is also valid for me.

Some years ago I have tried mod harbour in its beginnings, also read guides about  Tweb and Mercury, but stopped, in that time for me it was not so different from other web tools (Php, Nodejs etc.).

My main complaint for web technologies in general is that screen (frontend) design is so complicated and time consuming that kills in me any desire to deal with it.

Now I think that it is worth to try with UT (uhttpd2+tweb). Not only that it is Harbour but it seems that screen design is easier.


Regards,

Simo.


Juan Castillo Arteaga

unread,
Jan 16, 2024, 12:15:47 PM1/16/24
to harbou...@googlegroups.com
ha sido un gusto compartir Simo.

It has been a pleasure to share Simo.

--
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
Unsubscribe: harbour-user...@googlegroups.com
Web: https://groups.google.com/group/harbour-users
---
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to harbour-user...@googlegroups.com.

johnswolter

unread,
Jan 16, 2024, 3:18:22 PM1/16/24
to Harbour Users
This question has been an issue here for 10-years.  Time to innovate and give Harbour another 50-years.

A new tool is WebAssembly which could be used to build a multiple access gateway to AWS servers running DBF something.  It can be used for Non-Web Embeddings with a language.   Harbour's key value list form is one.  Any DB like set query result, SQL; OpenStreetMaps; Google anything; or any kind of DB combination. The  WebAssembly standard is maintained by W3C WebAssembly Community Group with several companies supporting.  

Next a new real-time language called Zig considered to be better than Rust programming language.    Zig has C-language syntax, Multi-Paradigm, and has ways to link different libraries.  

Given all of Zig's, features Harbour could be written in Zig.  Programming with Zig, programming Clipper's behaviors will be simpler.   It would still compile Clipper and can offer broad application space, and expend into the future.



theos....@gmail.com

unread,
Jan 17, 2024, 1:18:44 AM1/17/24
to Harbour Users

No te hagas problemas, con HARBOUR todo se puede hacer solo trata de ser un poco curioso.

Tus archivos DBF de tus sistemas comerciales que has realizado recién o de hace  800 años, lo puedes accesar  desde cualquier plataforma, con la distribución de HARBOUR que tienes instalado hay muchas maneras, la mas simple y con poca modificación de tus programas, lo conviertes como si fuera cliente-servidor, utilizando la librería NETIO la clave es usar RPC como si estuvieras realizando una llamada a un servidor Web Service, en el fondo es lo mismo.  El cliente es harbour-consola windows o linux. Pero si quiere que tus DBF sean accesado desde un explorador de internet hay varias alternativas pero tus aplicaciones originales prácticamente dejan de ser operativo a no ser que veas como lo ejecutas dentro de un explorador como he visto en unos juegos antiguos tipo consola que son ejecutados en los exploradores de internet. Te recomiendo que uses la librería  HBHTTPD, que esta en el directorio contrib de harbour, en el fondo es una Aplicación Servidora o si quieres míralo como Servidor Web mentiroso, es una joyita de conceptos que te lleva a leer libros y lo interesante es que esta todo en lenguaje clipper y de paso aprendes conceptos avanzados de harbour y seguro que para tus sistemas comerciales es mas que suficiente. 

Saludos

arielso...@gmail.com

unread,
Jan 17, 2024, 2:41:29 AM1/17/24
to Harbour Users
Buen día

Recomiendo el uso de Harbour y SQLRDD
Actualmente utilizo modo consola (texto)

En producción sobre servidores Linux con base de datos sql server y postgres
(usuarios locales y remotos).

Puedes migrar las tablas e índices que actualmente utilizas (DBF y campos memo) 

Puedes utilizar tu mismo código en un 85% a 90%
junto con instrucciones sql (select, insert, delete, join, etc..)

Ejemplo:
Hago una consulta (F9) creo una tabla temporal de todas las compras con lote y caducidad de un articulo determinado
el resultado lo muestro con un Browse() normal 
es muy rápido !!

         CASE Ikey = K_F9
           
               nArea := Select()

               xsql := "select "
               xsql += "ENC.FOLIO as [ENTRADA], "
               xsql += "ENC.F_CAP as [FEC_CAP], "
               xsql += "ENC.F_FACT as [FEC_FACT], "
               xsql += "ENC.FACTURA, "
               xsql += "EN.CANT, "
               xsql += "EN.P_FARM AS [PRECIO], "
               xsql += "(EN.CANT*EN.P_FARM) as [IMPORTE], "
               xsql += "EN.LOTE, "
               xsql += "EN.FECHACAD AS [CADUCIDAD], "
               xsql += "P.PROV02 AS [PROVEEDOR] "
               xsql += "from ENTDETAL EN "
               xsql += "INNER JOIN ENTENCA ENC ON EN.FOLIO=ENC.FOLIO "
               xsql += "INNER JOIN ARTICULO A ON EN.ART22=A.ARTICU22 "
               xsql += "INNER JOIN PROVEE P ON P.PROV01=ENC.PROV "
               xsql += "where enc.STATUS<>'2' and EN.SR_DELETED<>'T' and EN.SR_DELETED<> 'T' and a.articu22 = " + "'" + articulo->articu22 + "' "
               xsql += "ORDER BY ENC.f_fact desc "

               DBUseArea( .t., "SQLRDD", xsql, "myhist", .t., .t. ,nil, nil)

               Browse()
               
               myhist->( DBCloseArea() )
               Select( nArea )
       CASE IKey = K_CTRL_F10

Saludos!!

Lautaro Moreira

unread,
Jan 17, 2024, 6:30:39 AM1/17/24
to harbou...@googlegroups.com, theos....@gmail.com, Lautaro Moreira

Estimados,

Solo para complementar , el UT de Charly esta basado en HBHTTPD de harbour, con "algunas" cosas mas.

Saludos

Lautaro Moreira

--
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
Unsubscribe: harbour-user...@googlegroups.com
Web: https://groups.google.com/group/harbour-users
---
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to harbour-user...@googlegroups.com.

trepao2...@gmail.com

unread,
Jan 17, 2024, 7:13:00 AM1/17/24
to Harbour Users
Interesante informacion

¿ Que cosas hay que modificar con SQLRDD ?

Gerald Drouillard

unread,
Jan 17, 2024, 8:00:39 AM1/17/24
to harbou...@googlegroups.com
This has been fairly accurate so far for me:
or Spanish version:
Here are some things I have done so far not mentioned in the above doc before switching over.  Note that I probably didn't have to do them now, but it makes the transition cleaner and removes some things from my future todo list:
  • I modified the dbf2pg 
    • take advantage of INT fields and sizing them appropriately based on the size of tables.  
    • I changed the default sr_recno from and a Numeric to an INT field (big,small,etc) with a cleaner default value sequence in Postgres (PG)
    • encrypted some fields, PII data, credit card info, etc
    • tweaked some indexes to be a little more sql friendly without the need for a special "synthetic index" (an additional column in the table with the value to be sorted because it has client side/harbour function call)
    • create partitions on tables that grow infinitely like orders or any time based data.  Helpful for tables with millions of records that keep on growing with time.
  • Tweaked the filter parsing
  • Added support for jsonb columns in PG
  • use of ordcreate() as a temp index (for reporting or something similar) is kind of a bad idea in PG as that index will be shared/update with everyone.  PG does not have temp indexes, but has temp tables.
  • tweaked some of my m6_ and comix functions to work similarly with PG.
  • Added support for threading in SQLRDD
It has been very exciting and pleasant working with SQLRDD so far.  It has been solid and designed very well with most of the tweaking being able to be done at the .prg level instead of .c.

--
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
Unsubscribe: harbour-user...@googlegroups.com
Web: https://groups.google.com/group/harbour-users
---
You received this message because you are subscribed to the Google Groups "Harbour Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to harbour-user...@googlegroups.com.

arielso...@gmail.com

unread,
Jan 17, 2024, 8:49:47 AM1/17/24
to harbou...@googlegroups.com

HI, Gerald Drouillard

 

can you provide the changes and dbf2sql.prg

greetings

Gerald Drouillard

unread,
Jan 18, 2024, 2:08:24 PM1/18/24
to harbou...@googlegroups.com
I want to finish polishing it up before I release/support it. It looks like in about 4 weeks I will have finished porting a very large application over to sqlrdd - postgres 16.  Stay tuned.

Reply all
Reply to author
Forward
0 new messages