Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations gkittelson on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

njJson : not succeeding to get it work 3

Status
Not open for further replies.

Rajesh Karunakaran

Programmer
Sep 29, 2016
549
MU
Hi friends,

I downloaded the nfJson library from gitHub and the provided examples PRG files are working properly.

I have a json file, from which I want to retrieve data and populate a cursor. I have seen a PRG in nfJson 'nfopenjson.prg'. The example provided for that prg works fine. However, when I try to apply that to a slightly different structured json file, I am getting 'Syntax error' message.

Below is the content of the JSON file:

Code:
{
  "master" : {
    "decRef" : {
      "msgTyp" : "F",
      "prtofRptng" : "INNSA1",
      "jobNo" : 12345,
      "jobDt" : "20190806",
      "rptngEvent" : "SAM",
      "mnfstNoRotnNo" : 175912,
      "mnfstDtRotnDt" : "20190716",
      "vesselTypMvmt" : "FI"
    }
  }
}

Below is the program that I am trying:

Code:
lcJson = FILETOSTR('sampleValues.json')
=nfOpenJson(lcJson,'$.array', ' ;
		- msgTyp        v(1)  $.master.msgTyp ;
		- prtofRptng    v(20) $.master.prtofRptng')
BROWSE

I am just checking with retrieving only 2 columns. But, when I run this, I am getting 'Syntax error'.
Can anyone help me to find out the problem? What I am missing?

Thank you very much in advance,
Rajesh


 
Hi Rajesh,

nfOpenJson is about iterating objects inside arrays,
So we should provide an object with at least one array of
objects we want to map to the cursor we specify.

Your json returns an object. The simple solution is to wrap it
inside an array before passing it to nfOpenJson ( see sample 1 )
putting it between "[]", and in this case your array will be "unnamed",
( like the sample in github) so nfJson names it 'array',
you can work with it as "$.array".

Sample 2 and 3 name the array so you can see it clear:

Code:
text to lcjson noshow

[

{
  "master" : {
    "decRef" : {
      "msgTyp" : "F",
      "prtofRptng" : "INNSA1",
      "jobNo" : 12345,
      "jobDt" : "20190806",
      "rptngEvent" : "SAM",
      "mnfstNoRotnNo" : 175912,
      "mnfstDtRotnDt" : "20190716",
      "vesselTypMvmt" : "FI"
    }
  }
} 

]

endtext


=nfOpenJson( lcJson,'$.array', ' ;
    - msgTyp        v(1)  $.master.decref.msgTyp ;
    - prtofRptng    v(20) $.master.decref.prtofRptng')

BROWSE 



text to lcjson noshow
{ "myArrayofObjects": 

[

{
  "master" : {
    "decRef" : {
      "msgTyp" : "X",
      "prtofRptng" : "INNSA9",
      "jobNo" : 12345,
      "jobDt" : "20190806",
      "rptngEvent" : "SAM",
      "mnfstNoRotnNo" : 175912,
      "mnfstDtRotnDt" : "20190716",
      "vesselTypMvmt" : "FI"
    }
  }
}

]

}

endtext


=nfOpenJson( lcJson,'$.myArrayOfObjects', ' ;
    - msgTyp        v(1)  $.master.decref.msgTyp ;
    - prtofRptng    v(20) $.master.decref.prtofRptng')

BROWSE 


**** now with more rows ( array elements )

text to lcjson noshow
{ "myArrayofObjects": [

{
  "master" : {
    "decRef" : {
      "msgTyp" : "X",
      "prtofRptng" : "INNSA11",
      "jobNo" : 12345,
      "jobDt" : "20190806",
      "rptngEvent" : "SAM",
      "mnfstNoRotnNo" : 175912,
      "mnfstDtRotnDt" : "20190716",
      "vesselTypMvmt" : "FI"
    }
  }
}
,
{
  "master" : {
    "decRef" : {
      "msgTyp" : "Y",
      "prtofRptng" : "INNSA20"
    }
  }
}

]
}

endtext


=nfOpenJson( lcJson,'$.myArrayOfObjects', ' ;
    - msgTyp        v(1)  $.master.decref.msgTyp ;
    - prtofRptng    v(20) $.master.decref.prtofRptng')

BROWSE

I'll be happy to assist on any question / feedback.





Marco Plaza
@nfoxProject
 
Hi Marco,

You're the one created this library right? Thank you so much and a big salute to you sir!
I got it worked!

When I added more columns in the list, it was giving me 'unrecognized command' and I think it was because of the string length.
So, now I changed as below. Too, I added '[' & ']' directly in the FILETOSTR function. From a more bigger json file with data of multiple tables, I am able to retrieve data of each table selectively now.

Marco, you're really awesome dear friend!!!

Below is my new code:

Code:
lcJson = '['+CHR(10)+CHR(13)+FILETOSTR('E:\works\SampleValues_test2.json')+CHR(10)+']'

lcSchema =	" - msgTyp v(1) $.master.decref.msgTyp " + ;
			" - prtofRptng v(20) $.master.decref.prtofRptng " + ;
			" - jobNo n(6) $.master.decref.jobNo " + ;
			" - jobDt v(8) $.master.decref.jobDt " + ;
			" - rptngEvent v(20) $.master.decref.rptngEvent " + ;
			" - mnfstNoRotnNo n(6) $.master.decref.mnfstNoRotnNo " + ;
			" - mnfstDtRotnDt v(8) $.master.decref.mnfstDtRotnDt " + ;
			" - vesselTypMvmt v(2) $.master.decref.vesselTypMvmt "

=nfOpenJson( lcJson,'$.array', lcSchema)

BROWSE 

lcSchema =	" - voyageNo v(6) $.master.voyageDtls.voyageNo " + ;
			" - cnvnceRefNmbr v(5) $.master.voyageDtls.cnvnceRefNmbr " + ;
			" - totalNoOfTrnsprtEqmtMnfsted n(3) $.master.voyageDtls.totalNoOfTrnsprtEqmtMnfsted " + ;
			" - crgoDescCdd v(1) $.master.voyageDtls.crgoDescCdd " + ;
			" - briefCrgoDesc v(25) $.master.voyageDtls.briefCrgoDesc " + ;
			" - totalNmbrOfLines n(1) $.master.voyageDtls.totalNmbrOfLines " + ;
			" - exptdDtAndTimeOfArvl v(14) $.master.voyageDtls.exptdDtAndTimeOfArvl " + ;
			" - nmbrOfPsngrsMnfsted n(1) $.master.voyageDtls.nmbrOfPsngrsMnfsted " + ;
			" - nmbrOfCrewMnfsted n(2) $.master.voyageDtls.nmbrOfCrewMnfsted " + ;
			" - shipItnrySeq v(2) $.master.voyageDtls.shipItnry.shipItnrySeq " + ;
			" - prtOfCallCdd v(5) $.master.voyageDtls.shipItnry.prtOfCallCdd " + ;
			" - prtOfCallName v(1) $.master.voyageDtls.shipItnry.prtOfCallName"

=nfOpenJson( lcJson,'$.array', lcSchema)

BROWSE

But now, I have a query:

We have to pass the first parameter as a string. So, if my json file is considerably big with plenty of data, could that be a problem when I convert it into a string to be passed to 'nfOpenJson' function ?
(Sorry, I don't have such a big file to test this on my own at this moment)

Thank you so much Marco
and all best wishes to you for all your current & future fantastic projects like this

Rajesh

 
Hi Marco,

How can I retrieve the data of "itemDtls" from the below json. I tried all possible ways that came into my mind, but no way.
Because the parent "mastrCnsgmtDec" is an array. I can make it out from that '[' after the name.

Code:
[
{
  "master" : {
    "decRef" : {
      "msgTyp" : "F",
      "prtofRptng" : "INNSA1",
      "jobNo" : 12345,
      "jobDt" : "20190806",
      "rptngEvent" : "SAM",
      "mnfstNoRotnNo" : 175912,
      "mnfstDtRotnDt" : "20190716",
      "vesselTypMvmt" : "FI"
    },
    "mastrCnsgmtDec" : [ {
      "MCRef" : {
        "lineNo" : 1,
        "mstrBlNo" : "MSCUOM379746",
        "mstrBlDt" : "20190804",
        "consolidatedIndctr" : "S",
        "prevDec" : "N"
      },
      "itemDtls" : [ {
        "hsCd" : "5652",
        "crgoItemSeqNmbr" : "1",
        "crgoItemDesc" : "TEXTILE",
        "unoCd" : "ZZZZZ",
        "imdgCd" : "ZZZ",
        "nmbrOfPkgs" : "5000",
        "typOfPkgs" : "BGS"
      } ],
      "suplmntryDec" : {
        "csnSbmtdTyp" : "ASA"
      }
    } ],
  }
}
]

lcJson variable contains the complete above json as it it.
I tried the following, both:
Code:
=nfOpenJson( lcJson, '$.array', ;
                    " - hsCd v(4) $.master.mastrCnsgmtDec.itemDtls.hsCd ")
=nfOpenJson( lcJson,'$.master.mastrCnsgmtDec.itemDtls', ;
                    " - hsCd v(4) $.hsCd ")
The 1st one gives 'ITMDTLS' not found error. 2nd one gives 'Not a character expression' error.
(Please note that for trial I am just considering only one column)

What is the proper method to retrieve data of a particular item when the item is member of an array ?

Thank you in advance,
Rajesh



 
Hi Rajesh, thanks for your feedback.

nfJson won't limit your string size, but remember it's intended to provide support for web services, not to move huge datasets.

Below is the syntax you need to use for the scenario that's giving you trouble, and some code hints to ease schema definition more readable ( original syntax was made to provide compatibility with MS SQL docs ).


Code:
close tables all

TEXT TO lcJson NOSHOW TEXTMERGE
[
{
  "master" : {
    "decRef" : {
      "msgTyp" : "F",
      "prtofRptng" : "INNSA1",
      "jobNo" : 12345,
      "jobDt" : "20190806",
      "rptngEvent" : "SAM",
      "mnfstNoRotnNo" : 175912,
      "mnfstDtRotnDt" : "20190716",
      "vesselTypMvmt" : "FI"
    },
    "mastrCnsgmtDec" : [ {
      "MCRef" : {
        "lineNo" : 1,
        "mstrBlNo" : "MSCUOM379746",
        "mstrBlDt" : "20190804",
        "consolidatedIndctr" : "S",
        "prevDec" : "N"
      },
      "itemDtls" : [ {
        "hsCd" : "5652",
        "crgoItemSeqNmbr" : "1",
        "crgoItemDesc" : "TEXTILE",
        "unoCd" : "ZZZZZ",
        "imdgCd" : "ZZZ",
        "nmbrOfPkgs" : "5000",
        "typOfPkgs" : "BGS"
      } ],
      "suplmntryDec" : {
        "csnSbmtdTyp" : "ASA"
      }
    }
    ]}
  }
]

ENDTEXT
* Trick:
* open your debugger and watch m.oo, expand the property tree and just 
* drag into your code / command window the property you want to get the path

public oo
oo = nfJsonRead(m.lcJson)

*
* Sample 1 using text - endtext  ( get used to type intellisense's TEXTEND ! )
*


TEXT TO lcschema NOSHOW textmerge pretext 8  && pretext 8 ( won't be neccesary in following versions )
 - msgTyp        v(1)   $.master.decref.msgTyp
 - prtofRptng    v(20)  $.master.decref.prtofRptng
 - jobNo         n(6)   $.master.decref.jobNo
 - jobDt         v(8)   $.master.decref.jobDt
 - rptngEvent    v(20)  $.master.decref.rptngEvent
 - mnfstNoRotnNo n(6)   $.master.decref.mnfstNoRotnNo
 - mnfstDtRotnDt v(8)   $.master.decref.mnfstDtRotnDt
 - vesselTypMvmt v(2)   $.master.decref.vesselTypMvmt
ENDTEXT

nfopenjson( m.lcjson,'', m.lcschema) &&  we can pass '' too if we just need the root unnamed array

Browse


*-----------------------------------------------------------------
* Note this is unadvised unless you are completely sure you only want the 1st child from each record:
*-----------------------------------------------------------------

TEXT TO lcSchema NOSHOW textmerge pretext 8
- crgoitemdesc v(4) $.master.mastrcnsgmtdec(1).itemdtls(1).crgoitemdesc
- hscd         v(4) $.master.mastrcnsgmtdec(1).itemdtls(1).hscd
ENDTEXT


nfopenjson( m.lcjson, '$.array', m.lcschema )


Browse

* the expected way would be to specify the path for the array ( as I stated on the documentation )
* but it's unsupported in current version when arrays are inside other arrays due to some vfp tricky ways
* to deal with that -but It will work in next release- :

Try

  TEXT TO lcSchema NOSHOW textmerge  pretext 8 

- crgoitemdesc v(4) $.crgoitemdesc
- hscd         v(4) $.hscd

  ENDTEXT

  nfopenjson( lcjson, '$.array[1].master.mastrcnsgmtdec[1].itemdtls', m.lcschema )

Catch

  ? 'unsupported..'

Endtry


Marco Plaza
@nfoxProject
 
Hi Marco,

Apologies for my silence.

Now, I had to suspend json reading and working on generating a json from tables.
We have a schema specification. I put that into a control table which has 'Parent' and 'Child' fields along with other specifications and my program will generate json based on that control table. I am almost succeeding as far as the clients requirements.
Will get back here for sure when I finish that.

Anyway, when I resume json 'reading', I may have to again seek help here.

Thanks a lot,
Rajesh
 
Hi Marco,

I am back here. Thank you once again for that detailed information with sample codes.

As mentioned earlier, I wrote a program to generate json based on a table. The table defines the parent - child hierarchy, the tables involved and the fields to be used to get and write values. That works fine as far as the current requirement is concerned.

Now, I have to write another program to read from a json (generated using the above mentioned program). I visualise that I can make the same control table as the base and go through each record and retrieve the field/values pairs from the corresponding json branch (as I already have the hierarchy in the control table). I hope it must be possible.

Now, I am wondering, by simply providing the json file and the starting path, if nfJson will be able to retrieve the fields/values pairs into corresponding tables by creating tables/cursors with names same as that of the json member name and field names same as from the json. Is that really a possibility?

Thank you in advance.
Rajesh

 
Hi Marco,

Thank you very much for offering me your valuable time to help.

A sample json with data is attached.

Basically, I want to get all those <field> : <value> pairs in a cursor whose name will be their parent member name.

For example,

"authPrsn": {

"sbmtrTyp": "ASA",
"sbmtrCd": "ADSPD9028J",
"authReprsntvCd": "BXQPD10234",
"shpngLineCd": "AAFFH9326F",
"authSeaCarrierCd": "AAHFB9023F",
"trmnlOprtrCd": "INCCU1KKP1"
}

I want to get the above data in a cursor called "authPrsn".

Here, I have data in array form also. If you go to member "mastrCnsgmtDec", its an array. Under that there are data from many tables. However, here we have cases that there is a master table, for each record of which, the corresponding records from other tables are appearing below.

For example, if you examine the member "mastrCnsgmtDec", the table "MCRef" is the loop controlling table. For each of its record corresponding records from "prevRef", "locCstm", "trnshpr" etc are printed.
ie, "MCRef" table "lineNo": 1 is printed with records corresponding to "lineNo": 1 in other tables. Then, "MCRef" table "lineNo": 2 is printed and so on. Under this hierarchy there can be another nested loop the same way.

So, how can nfJson help me to retrieve data from this json into corresponding tables/cursors ?
Yes, of course, I am not expecting a magic like I issue a single command and it gives me a set of tables with perfect data.
However, I am wondering what would be the most appropriate & systematic method using nfJson to achieve this.

Would be great if you (or anyone else here friends) could suggest/advise me.

Thanks a lot once again for offering me your help.

Rajesh
 
 https://files.engineering.com/getfile.aspx?folder=f2b54b71-963c-4c88-8ffd-a95c5a4f7a61&file=json_result.json
Hi Marco,

I am back here again!
But, it seems you have not been around since few days!

Your suggestion of putting the array element number in brackets is working. Thanks a lot!
It gives me the data in a cursor.

Now I am writing a program to traverse through the complete json and to retrieve data into cursors.

A few issues I observed:

1. Suppose, there are 4 fields in my schema for a particular table.
Now, in my json, if value of a field is blank, it may not print the field and value pair at all. But the next record of the array may have value in the same field and it will be printed. In this scenario, when I run '=nfOpenJson( lcJson, '$.array', lcSchema)', it gives me <the member name> not found error. Do you have any suggestion to overcome this problem?

2. I have to figure out a way of finding the size of an array present in json, ie the number of record present inside an array object in the json.
I am working on that at present.

Thanks in advance.
Rajesh



 
As JSON is short for JavaScript Object notation, it's not about a table or cursor hierarchy, it's about an object having members (simple properties, arrays, objects, collections). This nature is quite similar to XML if you'd interpret the XML node as the root object. Which means you have to live with the fact JSON is a "nested anything" and you can't always directly turn anything into one or even more tables or cursors in VFP. Exactly the same problem as you have with general XML.


I worked with nfJSON already, too, only using it's nfJSONread.prg, Marco already pointed it out:
Code:
public oo
oo = nfJsonRead(m.lcJson)

That's mainly all you need to turn any (valid!) JSON into a VFP object. From then on, you can turn this object into other things with VFP code, for example using AMEMBERS and FOR loops. Actually that's all you really need. I guess nfJSON provides some further functionalities, but I don't expect anything to turn a single subobject like "authPrsn" is - just having a few string type members, into a table.

Here's a siumple VFP function deconstructing what nfJSONread constructs, which shows how you get at the name/value pairs:

Code:
Set Procedure To nfjsonread.prg

Local lcJSON, loJSON

Clear 

Text To lcJSON NoShow
"authPrsn": {

"sbmtrTyp": "ASA",
"sbmtrCd": "ADSPD9028J",
"authReprsntvCd": "BXQPD10234",
"shpngLineCd": "AAFFH9326F",
"authSeaCarrierCd": "AAHFB9023F",
"trmnlOprtrCd": "INCCU1KKP1"
}
EndText

loJSON = nfjsonread("{"+lcJSON+"}")
ShowStructure(loJSON)

Procedure ShowStructure()
   Lparameters toObject, tnLevel 
   tnLevel = Evl(tnLevel, 0)
   
   Local lnI, lvMember, laMembers[1]
   For lnI=1 To AMembers(laMembers,toObject)
       lvMember = GetPem(toObject,laMembers[lnI])
       If VarType(lvMember)="O"
          ? Space(tnLevel*2)+laMembers[lnI]+" is an object with this structure:"
          ShowStructure(lvMember, tnLevel+1)
       Else 
          ? Space(tnLevel*2)+laMembers[lnI]+" is "+Transform(lvMember)
       EndIf 
   EndFor
EndProc

Now when you already know this subobject is called authPrsn you can start with loJSON.authPrsn instead of loJSON and you can use AMEMBERS and GETPEM as shown to inert these pairs of values into a cursor instead of just displaying them.

Bye, Olaf.

Olaf Doschke Software Engineering
 
Note: When you'd really have JSON nested in multiple levels this code would fail as laMembers is not scoped as LOCAL variable. In this case it doesn't matter, though. add laMembers[1] to the definition of LOCAL variables and it'll work moire generally.

Bye, Olaf.


Olaf Doschke Software Engineering
 
The major other way to turn the simple leaf node objects a JSON objhect has into records is via INSERT FROM NAME, VFPs capability to interpret a single object as a record with tits members being the field names. This requires a cursor of that structure precreated to the insert, though:

Code:
Set Procedure To nfjsonread.prg

Local lcJSON, loJSON

Clear

TEXT To lcJSON NoShow
"authPrsn": {

"sbmtrTyp": "ASA",
"sbmtrCd": "ADSPD9028J",
"authReprsntvCd": "BXQPD10234",
"shpngLineCd": "AAFFH9326F",
"authSeaCarrierCd": "AAHFB9023F",
"trmnlOprtrCd": "INCCU1KKP1"
}
ENDTEXT

loJSON = nfjsonread("{"+lcJSON+"}")

Create Cursor authPrsn (sbmtrTyp Varchar(20);
   , sbmtrCd Varchar(20);
   , authReprsntvCd Varchar(20);
   , shpngLineCd Varchar(20);
   , authSeaCarrierCd Varchar(20);
   , trmnlOprtrCd Varchar(20);
   )

Insert Into authPrsn From Name loJSON.authPrsn
Browse

JS Arrays are a little more complex as Records (of course in themselves they are simpler structures than objects, but JS arrays and VFP arrays differ vastly).

VFP has commands like APPEND FROM ARRAY, that's even older than the variant to insert objects, but require a 2d array, JS doesn't have that. Instead, it has 1d arrays with simple numeric subscripts starting at 0 and arrays with named members. Those arrays could be transformed into objects by nfJSON anyway, so you don't encounter them. But simple arrays like [1,2,3] will need their own handling to be turned into a single column cursor, for example.

Bye, Olaf.

Olaf Doschke Software Engineering
 
Hi Olaf,

Thank you so much for your message and sample code.

In fact, our json is data from tables and that was the reason I referred to tables, records etc.

With the 'nfOpenJson( lcJson, '$.array', lcSchema)' command, where lcJson is my json text, '$.array' denotes to start from the root itself and lcSchema is the structure schema. This works fine and it automatically creates a cursor and I am getting the json content in that.

Now, I think, I will try your suggestion of using 'nfjsonread' and retrieving data onto object and then I can parse from it. Too, I already have corresponding tables in place.

Thank you very much
Rajesh


 
Hello Rajesh, sorry for my late reply.

nfOpenJson was left in "beta", so I need to do some tweaks, and use it in conjuntion with nfJsonRead()
to solve this scenario.

I'll get back in a few hous with a full sample.









Marco Plaza
@nfoxProject
 
Rajesh Karunakaran said:
In fact, our json is data from tables

Do you mean a table authPrsn with records like the following exists and was turned into the JSON notation you gave:

[pre]Name Value
sbmtrTyp ASA
sbmtrCd ADSPD9028J
authReprsntvCd BXQPD10234
shpngLineCd AAFFH9326F
authSeaCarrierCd AAHFB9023F
trmnlOprtrCd INCCU1KKP1[/pre]

Because when you have such a table and let nfSON create JSON from it, it'll look like this instead:

[pre]{
"arrayofvalues":false,
"recordcount":6,
"rows":[
{
"name":"sbmtrTyp",
"value":"ASA"
},
{
"name":"sbmtrCd",
"value":"ADSPD9028J"
},
{
"name":"authReprsntvCd",
"value":"BXQPD10234"
},
{
"name":"shpngLineCd",
"value":"AAFFH9326F"
},
{
"name":"authSeaCarrierCd",
"value":"AAHFB9023F"
},
{
"name":"trmnlOprtrCd",
"value":"INCCU1KKP1"
}
]
}[/pre]

Made by this code:
Code:
Local lcJSON

Create Cursor authPrsn (name Varchar(20), value varchar(20))
Insert Into authPrsn Values ("sbmtrTyp", "ASA")
Insert Into authPrsn Values ("sbmtrCd", "ADSPD9028J")
Insert Into authPrsn Values ("authReprsntvCd", "BXQPD10234")
Insert Into authPrsn Values ("shpngLineCd", "AAFFH9326F")
Insert Into authPrsn Values ("authSeaCarrierCd", "AAHFB9023F")
Insert Into authPrsn Values ("trmnlOprtrCd", "INCCU1KKP1")

lcJSON = nfCursorToJson(.f.,.f.,.f.,.t.)
Clear
? lcJSON

OK, Marco already seems to be working on something you can then use, but in general a table in JSON would need a collection of rows with the repeating record structure.
Just notice that this differs both from your JSON and also from a JSON array the fOpenJson expects to find at the specified position.

Bye, Olaf.

Olaf Doschke Software Engineering
 
PS: I see Olaf already gave you a guide on how to treat this case;
I posted a similar sample with XML and nfXmlRead():


But your structure can benefit from nfOpenJson capabilities for flattening objects
and saving the arrays as JSON; this way you'll be able to scan the table and use
nfJsonRead() to solve the nested tables.

I'll make the solution for your sample data so others can refer to this thread on vfpx.












Marco Plaza
@nfoxProject
 
Olaf,

Olaf said:
Do you mean a table authPrsn with records like the following exists and was turned into the JSON notation you gave:

No, for json writing (the file I uploaded), I wrote my own program. Because my client wanted to control the content for json dynamically. So, we created a master table with participating tables for json content in a Parent-Child combination along with specification like, if a section needs to print as an array, if a section has a looping control table, if a section a master object with its own children, the tag order to be based on while retrieving the data, the relating key combination between master and its children etc etc.

As of now, it is working fine and it produces a json similar to the one I uploaded.

But, for reading I will follow your suggestion. That should work I believe. I just started writing a program with that concept as the base.

Thank you so much,
Rajesh
 
Marco,

Thank you for your offers dear!
I really respect the dedication on whatever you are doing!

Now, I am just trying to write a program with Olaf's suggestion as a base.
Will get back to you all when I finish.

Thanks dear team!
Rajesh
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top