Hi everybody,
Well, you will find that my request is odd
I'm looking for any solution (VB, TransacSQL) to extract the field PROGTXT from PSPCMPROG into a readable text...
I cannot check if it's encoded in Base 64 but I suppose it so.
Well I tried with a Visual Basic algorithm but I didn't get successful conclusions.
My request is only to read the content of the field to show it in a Textbox inside a VB Form.
Do you think there is a way to solve my problem.
I found that the tabel PSCRYPTALGDEFN returns how objects are encoded and I saw that there is 2 DLL into the Application Designer Path:
PSPETSSL.DLL and PSPETPGP.DLL but I'm not able to use them.
For example, if I use this bloc of code (VBA Access sample):
Sub GetProgTxtContent()
Dim oRS As Recordset
Dim SQLSelect As String
Dim strBlob As String
SQLSelect = "SELECT PSPCMPROG.PROGTXT FROM PSPCMPROG"
SQLSelect = SQLSelect & " WHERE PSPCMPROG.OBJECTVALUE1=" & Chr(34) & "VD_D_AP" & Chr(34) & " AND OBJECTVALUE6 = " & Chr(34) & "IMPORT01" & Chr(34) & ";"
Set oRS = CurrentDb.OpenRecordset(SQLSelect, 2)
With oRS
strBlob = .Fields("PROGTXT")
Debug.Print strBlob
.Close
End With
Set oRS = Nothing
End Sub
This is the ProgTxt field content (Returned with SELECT into the Query Analyzer):
0xA000000000B606000000000000000000000000000000000000000000000000000085000000440A460069006C00650000000126004C004F0041004400000015440A52006F00770073006500740000000126004C004F004100440052005300000015440A5200650063006F007200640000000126004C004F0041004400520045004300000015444073007400720069006E00670000000126007000610074006800000015444073007400720069006E006700000001260064006100740061000000152D4F2476002F002A00200069006D0070006F00720074002000640065007300200064006100740061002000640061006E007300200075006E00650020007400610062006C00650020006400650020007400720061007600610069006C002000560044005F004400410050005F0056004E004400520020002A002F004F0A530051004C00450078006500630000000B16730065006C006500630074002000200050004100540048004E0041004D0045002C00200044004F00430055004D0045004E0054002000660072006F006D002000500053005F00560044005F0050004100540048005F0049004E0054004500520046004100200077006800650072006500200049004E0054004500520046004100430045005F004900440020003D00200027004400490053005F0041005000310027000000030126007000610074006800000003012600640061007400610000001415012600660069006C0065006E0061006D006500000006012600700061007400680000002301260064006100740061000000154E2E002F002A007200E90070006500720074006F006900720065002000640065007300200064006100740061002A002F004F0126004C004F00410044005200450043000000060A4300720065006100740065005200650063006F007200640000000B21010014154E28002F002A007400610062006C00650020006400650020007400720061007600610069006C002A002F00012600530051004C000000060A430072006500610074006500530051004C0000000B16250049006E00730065007200740028003A0031002900000014154F1C0A460069006C00650045007800690073007400730000000B012600660069006C0065006E0061006D006500000003122500460069006C00650050006100740068005F004100620073006F006C007500740065000000141F0126004C004F00410044000000060A470065007400460069006C00650000000B012600660069006C0065006E0061006D006500000003165200000003164100000003122500460069006C00650050006100740068005F004100620073006F006C00750074006500000014151943151A154F0126004C004F00410044000000050A530065007400460069006C0065004C00610079006F007500740000000B21020014154E1E002F002A00460069006C00650020006C00610079006F00750074002A002F004F0126004C004F0041004400520053000000060126004C004F00410044000000050A520065006100640052006F00770073006500740000000B1415250126004C004F0041004400520053000000104B2D0126004C004F0041004400520053000000050A47006500740052006F00770000000B5000000100000000000000000000000000000014054A0300050A43006F00700079004600690065006C006400730054006F0000000B0126004C004F0041004400520045004300000014154E3C002F002A00460069006C00650020007200650063006F00720064002000640075002000460069006C00650020004C00610079006F00750074002A002F000126004C004F00410044005200450043000000050A45007800650063007500740065004500640069007400730000000B1415012600530051004C000000050A650078006500630075007400650000000B0126004C004F0041004400520045004300000014150126004C004F0041004400520053000000060126004C004F00410044000000050A520065006100640052006F00770073006500740000000B141526150126004C004F00410044000000050A43006C006F007300650000000B14154F4F0A530051004C00450078006500630000000B165500500044004100540045002000500053005F00560044005F004400410050005F0056004E004400520020005300450054002000560044005F0044004100540045005F004500520052004F00520020003D0020006700650074006400610074006500280029002C002000560044005F005300540041005400550053005F004500520052004F00520020003D00200027004F004B0027002000770068006500720065002000560044005F005300540041005400550053005F004500520052004F00520020003C003E00200027004500430048004500430027000000141507
The variable strBlob returns me this text:
? ? ????? A&LOAD ??????? A&LOADRS ??????? A&LOADREC ??????? A&path ??????? A&data ??v/* import des data dans une table de travail VD_DAP_VNDR */?SQLExec ?select PATHNAME, DOCUMENT from PS_VD_PATH_INTERFA where INTERFACE_ID = 'DIS_AP1' a&path a&data ?????????? ?????? ?????? ?????????????? ??? ??????????????? ????????????? ?g??(/*table de travail*/???? ?????????? ???????????? ???FileExists c&filename ?%FilePath_Absolute ?????? ???????? ?????????? `? `? `?????????????????? ????o&LOAD ?SetFileLayout H???????? ???????????????? ?????? ??????????? ??h&LOADRS ?i&LOADRS ?GetRow ? ??????????????? ????????? ??</*File record du File Layout*/???????? ????????????? ?????? ???????? ????????? ?e&LOADRS C&LOAD ?ReadRowset ??e&LOAD ?Close ???SQLExec ?UPDATE PS_VD_DAP_VNDR SET VD_DATE_ERROR = getdate(), VD_STATUS_ERROR = 'OK' where VD_STATUS_ERROR <> 'ECHEC' ?
The good readable code in the Application Designer is (what I want to get in fact):
Local File &LOAD;
Local Rowset &LOADRS;
Local Record &LOADREC;
Local string &path;
Local string &data;
/* import des data dans une table de travail VD_DAP_VNDR */
SQLExec("select PATHNAME, DOCUMENT from PS_VD_PATH_INTERFA where INTERFACE_ID = 'DIS_AP1'", &path, &data);
&filename = &path | &data; /*répertoire des data*/
&LOADREC = CreateRecord(Record.VD_DAP_VNDR); /*table de travail*/
&SQL = CreateSQL("%Insert(:1)");
If FileExists(&filename, %FilePath_Absolute) Then
&LOAD = GetFile(&filename, "R", "A", %FilePath_Absolute);
Else
Exit;
End-If;
&LOAD.SetFileLayout(FileLayout.VD_DAP_VNDR); /*File layout*/
&LOADRS = &LOAD.ReadRowset();
While &LOADRS <> Null
&LOADRS.GetRow(1).VD_DAP_VENDOR.CopyFieldsTo(&LOADREC); /*File record du File Layout*/
&LOADREC.ExecuteEdits();
&SQL.execute(&LOADREC);
&LOADRS = &LOAD.ReadRowset();
End-While;
&LOAD.Close();
SQLExec("UPDATE PS_VD_DAP_VNDR SET VD_DATE_ERROR = getdate(), VD_STATUS_ERROR = 'OK' where VD_STATUS_ERROR <> 'ECHEC'");
So I can suppose that I'm not very far to find a solution.
Thanks a lot for any help
Regards,
Argy