jBASE & .NET connection

88 views
Skip to first unread message

NTMS

unread,
Jan 22, 2009, 2:28:05 AM1/22/09
to jBASE
Hi,

Does anyone have any example how to populate Customer File that reside
on jBase server into VB.NET dataset.
The compony I work for going to buy mv.NET and I am very cautious
about the speed to product.

We have over 100 Pre-define Excel sheet to create a report and around
5-6 of them have to be real-time report.
We contact mv.NET but I like to hear more about the product from other
than mv.NET.

Thank you for reading my post.

Kind Regards,
NTMS

Jason Warner

unread,
Jan 22, 2009, 1:58:35 PM1/22/09
to jB...@googlegroups.com
I have a fair amount of experience with mv.Net. If you are going to use
mv.Net as an ADO.Net provider, it will be fast enough for you and you
won't have problems. However, if you are going to call methods through
mv.Net on the jBase server there were a couple of gotchas that we ran
into. Make sure that you clean out any variables that you pass back
through the subroutine that you don't care about. mv.Net sends
everything back and the processes just hang when you hit their memory
limit. It then stops freeing the licenses for the hung process and you
can quickly run into a case where you have free connections, but mv.Net
reports that you are out of licenses. Be very careful about how you send
data back to your method calls also. There are many reserved characters
that mv.Net interprets or mangles and this can cause issues when sending
data back to your .Net program. mv.Net was a good product and I would
recommend it to anyone trying to link jBase with .Net. Just be aware of
the gotchas and you will be fine.

Jason

Tony G

unread,
Jan 22, 2009, 4:49:16 PM1/22/09
to jB...@googlegroups.com
> From: NTMS

> Does anyone have any example how to populate Customer
> File that reside on jBase server into VB.NET dataset.
> The compony I work for going to buy mv.NET and I am
> very cautious about the speed to product.
>
> We have over 100 Pre-define Excel sheet to create a
> report and around 5-6 of them have to be real-time
> report. We contact mv.NET but I like to hear more
> about the product from other than mv.NET.

As an mv.NET Worldwide Distributor, we provide both software and
services to assist with this sort of project. We don't like
mv.NET because we sell it. We sell it because we like it.

There are a couple ways to move jBase data to/from relational.
1) Create an mvSelect item, use that to populate an mvItemList,
then use the DataTable method to create a real ADO.NET DataTable.
That takes all of about 1 line of code for the raw basics but not
many more to refine the process.
2) That doesn't help with well structured data that conforms to a
specific schema. So an alternative is to separate the ETL
components where you loop to Extract data from jBASE in a couple
lines, Transform data types and do other minor manipulation, then
Load the data into a DataTable / DataSet with AddRow methods.
3) Another way to do this is with the AdapterObjects library, one
of the three primary libraries that comes with the mv.NET
product. This allows you to reference your jBASE data as though
it were relational, and directly populate mv.NET objects that
implement the ADO.NET interfaces. Here the idea is that you're
not extracting MV data and transforming to relational, you're
looking at all of the data as relational - and without making any
changes to your existing file structures.

If you're doing Microsoft Office integration, please note that we
also write Excel and Outlook addins to create seamless data
exchanges with jBASE/MV environments - that means real-time
updates of cells, charts, contacts, appointments, etc.

HTH

Tony Gravagno
Nebula Research and Development
TG@ remove.pleaseNebula-RnD.com
Nebula R&D sells mv.NET and other Pick/MultiValue products
worldwide, and provides related development and training services
Keep up with the Blog! : remove.pleaseNebula-RnD.com/blog

Ashutosh Srivastava

unread,
Jan 23, 2009, 1:47:06 AM1/23/09
to jB...@googlegroups.com, niyazi...@yahoo.co.uk
Hi,

If the requirement of the dataset is limited, it is always advisable to bring the data into a database server.
The Problem with this is that the data is only good for Reporting & data ware housing purposes.

Regards
Ashutosh
--
Ashutosh Srivastava
Sr. System Analyst - Stanbic Africa IT
Email : Ashutosh....@standardbank.co.za
Cell : +27 74 145 7472 | Office: +27 11 636 4154

NTMS

unread,
Jan 23, 2009, 5:11:50 AM1/23/09
to jBASE
Hi Jason,

First of all let me thank you for your kind respons.

To be frankly we are trying to get a kind of product that allows us
to:
+ Create Online Report in Real-Time
+ Create a "Rauters Endex" like Endex\ that can be updated 'n every
secon/min
+ Create a VERY FAST data extraction from jBASE to create very high
detail Excel Reports
+ Simply and basicaly we NEED someting that is SOLID and FAST.

So we contact mv.NET and I already get very good feedback from them.
Then when office politics come into question agains saving more $$$
before buying any product, we had been forced to
extended our search and try to find few more different product.

Now there are few answer out there:
+ Sack! every IT people from IT department and buy product such as
Freamtex and try to build it around any needs that might araise
+ Or buy a jBASE ODBC driver and give it to programmers and let
them to deal about Reports creation that might change day by day
+ Or buy mv.NET do the sameting above two that provided like half
building repors from ground zero and half from help of mv.NET special
futures.

Now there are only one .NET Software Eng. sometimes operate like
Analyst Programmer, unfortunetly the that is ME.

So, my BIG question to find best product that allows me to add a bit
of learning and do the job like before in uncahrted space like
MultiBase database world.
Also it is my job to find the product and use it to crate a reports
against T24!!!

"The Indicator" points mv.NET that going to be best product above all,
comapring REALIBILITY + SPPED <AGAINST> PRICE!

- If we buy a product, and allows us to get information FAST
enough we can create everything even beter than and cheaper than like
Freametext.
- If we buy a product, and allows us to get information FAST
enough we can create everything even beter than and cheaper than like
any other jBASE ODBC driver
provider.

than we are (I AM) in bussines. But my major factor is doeas mv.NET
feets REALISTICALY in REALIBILITY + SPPED <AGAINST> PRICE!
And as to me does mv.NET allow me to create any kind of Real-Time / On-
Line Ebdex?

And I am looking answere other than mv.NET people to find the products
best attribute as well as (like you mention it) the "gotchas", or
something even better.

If we didnt have the "GLOBAL FINANCIAL CRISIS" that my job will be
much more easy.

I hope I can explain myself and position clearly, regarding to what do
I need to develope a perfect (ok. maybe not so much) solution that I
am facing.

Kind Regards,
NTMS
> > NTMS- Alıntıyı gizle -
>
> - Alıntıyı göster -

NTMS

unread,
Jan 23, 2009, 5:15:53 AM1/23/09
to jBASE
Hi Tony,

I alredy look at "Nebula Research and Development" site but my major
problem is there are no REAL exmple about say: "REAL-TIME / On-Line"
Endex creation.
Currently we are talking to BlueFinity about mv.NET.

In all my search my hearth and vote goes to mv.NET, but I am also
dealing with office politics.

Thank you for your kind post.

Kind Regards,
NTMS

Jim Idle

unread,
Jan 23, 2009, 12:31:48 PM1/23/09
to jBASE


On Jan 23, 2:11 am, NTMS <niyazi_to...@yahoo.co.uk> wrote:
> Hi Jason,
>
> First of all let me thank you for your kind respons.
>
> To be frankly we are trying to get a kind of product that allows us
> to:
>    + Create Online Report in Real-Time
>    + Create a "Rauters Endex" like Endex\ that can be updated 'n every
> secon/min
I think MV.Net would do you fine for everything except the real time
stuff, where you want to use message queues.

MV.Net might still help you get the data for real-time but the best
way to do that is to use a jBC file trigger in an appropriate place
(something that says "When this file is written to, it means the data
is ready to feed"). When the trigger fires, assemble the data you need
in the most efficient way possible, and if your server is Windows use
CALLdotNet (after cursing that this has lower case in it) and place
the data directly on to a Microsoft Message Queue. If your server is
not Windows, the you could call Java code and place it on Rendezvous
or MQ Series.

As you want performance, you should do the minimum work possible to
get the data on the queue then post-process the data in a separate
process, whose resources you can control. For instance, if the data
comes from 5 files, don't open and read them in the trigger, just put
a transaction ID on the trigger queue, read that queue in a separate
process which assembles that record and places that on the reporting
queue. If the data is in the record that fires your trigger and you
don't need to read other files, then put the data directly on a
reporting queue.

Your receivers are written in .Net code and monitor the queue (you
probably want a publish/subscribe queue [one writer, many readers]
with a message expiry time), pick off records as they arrive and
update whatever it is they update such as adding a datapoint to a
chart or an excel sheet and so on.

You might think that sounds complicated, but everything you need for
this is already out there in example form, especially if your server
is a Windows system. Triggers are documented for jBASE and are written
in jBC/BASIC, CALLdotNET is trivial, and MS provide tons of examples
of message queues and it comes with your Windows operating system. The
same applies to other message queue systems, and as a bank you
probably have message queues in place somewhere already and it sounds
like you already have a handle on .Net programs.

Message queues are persistent (if you need them to be), secure and
encrypted (if you need them to be) and very efficient. All
applications should be divided up into small units that interact via
message queues.

Jim

Tony G

unread,
Jan 23, 2009, 4:51:40 PM1/23/09
to jB...@googlegroups.com
The method Jim suggests allows the DBMS to notify a middle-tier
client of new activity. mv.NET also has this functionality
built-in using the mvDBRPC class. Both methods should be
compared - every option has pros and cons.

With mvDBRPC you simply write data to any jBase file with your
normal BASIC code. A middle-tier .NET process polls for updates.
The polling period is determined by the polling process but is
typically from 1 second (need to be careful about that) to 30
seconds. The "middle-tier" can be on the localhost or a separate
server, the term simply means it's a communications component.
When data is available on the server, it's extracted at the
polling interval, an event is fired by the mvDBRPC object, and
from there you can do whatever you want. It looks like the data
is being pushed from the server even though it's really pulled
from the mvDBRPC object running in a non-blocked background
thread. If you have multiple Excel processes that need access to
this data, they can in-turn poll this middle-tier for updates
unique to them. Controls need to be in place to ensure all
clients get all data required - this is the sort of stability
that message queuing provides. However, mvDBRPC will allow a
*nix server to push out data (and requests for data) and you
can't do this (easily) with message queues. Again, each method
has different merits.

As an example of how mvDBRPC can be used, we use it in all of our
components that:
- make the DBMS call to external web services
- retrieve web pages
- query/update external relational databases
- and push data into Microsoft Outlook

An alternative with other connectivity methods is to use your own
code to poll, but then you need to manage threads and ensure
transactions aren't missed or double-processed. You really don't
"need" mv.NET at all, it's simply convenient to reduce
development time for these types of interfaces.

Do you _really_ need second by second updates? That can be
server intensive. As I believe Jim was suggesting, you can
extract data from jBASE to a middle-tier by whatever method you
choose, and stage it there for query from clients. Data
extraction from the server should be discoupled from query
processing from clients. In other words, I don't personally
think every client query should hit the server - but it depends
on how you write the code.

How fast is it? Minimize the data you're extracting and it
should be OK. Don't return entire items to the middle-tier and
then parse for required data, only send the data required to the
middle-tier.

Cost? The cost for mv.NET is tiny compared to that of other
products and compared to the time=money cost of writing your own
components.

NTMS, I won't offer to sell you mv.NET. I know you're working
with BlueFinity. But if you need assistance with development and
you are not asking them for services, I will offer to help with
that.

For anyone else - I welcome inquiries for mv.NET, related
components, and services.

For anyone who uses mv.NET in an end-user environement, feel free
to download mvExec - completely free from our freeware site.
It's a simple utility that uses mv.NET to allow you to execute
queries and programs on your jBASE DBMS from anywhere. No code
required.
remove.pleaseNebula-RnD.com/freeware

Tony Gravagno
Nebula Research and Development
TG@ remove.pleaseNebula-RnD.com

Read about PickWiki:
remove.pleaseNebula-RnD.com/blog/tech/mv/2009/01/wiki1.html

Jim Idle

unread,
Jan 23, 2009, 5:08:00 PM1/23/09
to jB...@googlegroups.com
Tony G wrote:
> The method Jim suggests allows the DBMS to notify a middle-tier
> client of new activity. mv.NET also has this functionality
> built-in using the mvDBRPC class. Both methods should be
> compared - every option has pros and cons.
>
> With mvDBRPC you simply write data to any jBase file with your
> normal BASIC code. A middle-tier .NET process polls for updates.
> The polling period is determined by the polling process but is
> typically from 1 second (need to be careful about that) to 30
> seconds.
Any solution involving polling isn't going to work for what th OP wants
and I advise everyone never to use polling if there is another option
available.

For instance how many people know about:

http://www.jbase.com/knowledgebase/manuals/3.0/30manpages/man/jbc2_PAUSE.htm

MV.Net has lots of good things in it, but you should never consider
polling for data when ther is kernel controlled solution available. For
one thing, polling something every second has the potential to slug a
machine and the OP wants real time.

Jim

Reply all
Reply to author
Forward
0 new messages