How do I determine what a Crystal Reports function does? - sql

I have a custom crystal report which retrieves invoices from a database. There is a formula in the report that has the following code:
V6AttachmentsGetAttachment ({Command.AttachmentID},{?ReportAttachmentChannel} )
From my understanding, the formula has a function called 'V6AttachmentsGetAttachment' which takes two parameters (the first is a report field and the second is a report parameter).
This calculates a dynamic hyperlink.
How can I determine how exactly this is calculated? I am trying to figure out if I can replicate this calculation in SQL.
Is V6AttachmentsGetAttachment something that is stored in the SQL database? I can not find any references to it in Crystal Reports.

This is a custom function created by Viewpoint Construction Software (V6). It is used to connect with Construction Imaging, a document management system, to return images of things like invoices.
I believe the custom function is available if you have the Viewpoint client installed.

It could either be a custom function or one contained in a user-function library (UFL).
Custom Function
Edit a formula (any formula will do)
Assuming that it is a custom function, it will be listed below the Report Custom Functions node:
UFL
If this function is contained in a user-function library (UFL), you should see it listed in the Function tree:
u252000.dll contains a single function DateTimeto2000().
If this is the case, then you will need to locate the source code for the UFL.

CRUFLE and CRUFLV6 are viewpoint dlls. They are registered as global access controls using regasm. Crystal reports can then access the functionality within the dll.
https://support.viewpoint.com/s/knowledgedetail?c__urlname=Issue-109356-Error-when-running-crystal-reports-via-remote-access-not-VRL-UFL-u212com-dll-or-u2lcom-dll-that-implements-this-function-is-missing
CRUFLE and CRUFLV6
file version 22.2.0.716
I use crystal reports 2016, 32 bit
I downloaded the 32 bit crufle.dll and cruflv6
I copied the crufle.dll and cruflv6 to C:\Program Files (x86)\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm.exe crufle.dll
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm.exe cruflv6.dll
regedit and search for the crufle and cruflv6 ensuring there were no other versions register. The u2lcom.dll error message was misleading because the dll is loaded from C:\Program Files (x86)\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86. you can see u2lcom.dll is loaded in the crystal report about-> more info which shows the loaded modules.
dumpbin will show that u2lcom.dll is loaded and availabe
dumpbin /EXPORTs u2lcom.dll
Section contains the following exports for U2LCOM.dll
00000000 characteristics
5A54B943 time date stamp Tue Jan 9 05:44:51 2018
0.00 version
1 ordinal base
15 number of functions
15 number of names
ordinal hint RVA name
3 0 00005670 InitPerThread
4 1 00005680 IsThreadSafe
5 2 000056A0 UFCallCOMFunction
6 3 000056C0 UFEndJob
7 4 000056F0 UFErrorRecovery
8 5 00005720 UFGetFunctionDefStrings
9 6 00005730 UFGetFunctionExamples
10 7 00005740 UFGetFunctionTemplates
11 8 00005750 UFGetVersion
12 9 00005760 UFInitialize
1 A 00005610 UFSetPreferredViewingLocale
2 B 00005630 UFSetProductLocale
13 C 000057E0 UFStartJob
14 D 00005810 UFTerminate
15 E 00005860 UninitPerThread
Summary
1000 .data
1000 .gfids
4000 .rdata
1000 .reloc
1000 .rsrc
8000 .text

Related

Google Workspace, BigQuery and Looker/Data Studio

I wonder if someone is able to help me out here.
My company is a Google Workspace based company, we pipe our data through to BigQuery using the settings within the Admin Panel. That all works fantastically and there is no issue there.
Within BigQuery, one of the data points is time_usec - which is the Epoch time.
In one table (activity), this is done in Micros which is fine as I can transform the data in BigQuery using TIMESTAMP_MICROS(time_usec).
However, in Looker/Data Studio we are bringing the data in its raw format.
I have tried the calculated field TODATE(time_usec, "MICROS", "%x") which certainly transforms the data for display purposes but it doesn't appear to work with Date Ranges.
To explain this better:
Here is an example of the data in BigQuery. This is part of the Activity table with:
time_usec being epoch time (in microseconds)
email being the user account (every activity that is logged has a time_usec entry)
device_type being the type of device (everything from Windows machines, to iOS etc)
device_model being the model of the device
os_version being the version of the OS running on the device
To be fair, the data for the most part is irrelevant here (other than the time_usec) but I'm adding it to give a better idea of the type of data.
time_usec
email
device_type
device_model
os_version
1659952732837000
new.user.3#somemailservice.com
DESKTOP_CHROME
ChromeOs 14816.131.0
1659952299942000
some.email#somemailservice.com
WINDOWS
HP EliteBook 850 G5
Windows 10.0.19044
1659952366245000
new.user.3#somemailservice.com
DESKTOP_CHROME
1659952736142000
new.user.3#somemailservice.com
DESKTOP_CHROME
ChromeOs 14816.131.0
1659945047719000
some.email#somemailservice.com
WINDOWS
HP EliteBook 850 G5
Windows 10.0.19044
1659959338167000
another.email#somemailservice.com
DESKTOP_CHROME
HP Elite Dragonfly Chromebook
ChromeOs 14909.100.0
1659959340697000
another.email#somemailservice.com
DESKTOP_CHROME
HP Elite Dragonfly Chromebook
ChromeOs 14909.100.0
1659961092792000
some.email#somemailservice.com
WINDOWS
HP EliteBook 850 G5
Windows 10.0.19044
1659958186331000
another.email#somemailservice.com
WINDOWS
HP COMPAQ PRO 6305 SFF
Windows 10.0.19044
1659957469855000
some.email#somemailservice.com
WINDOWS
HP EliteBook 850 G5
Windows 10.0.19044
Here is how the connection is set up in Looker/Data Studio:
Here is how the time_usec field in configured in Looker/Data Studio:
Here is the page in Looker/Data Studio:
The column titled Date with the red underline is using TODATE(time_usec, "MICROS", "%x").
This is configured as a Date Range Dimension using the above method, then added as a normal dimension after. For the purpose of displaying a date, this works fine.
The yellow box gives us the ability to select a date range. In the image it is set to 'Auto date range' and it works fine. However, if I change this to, let's say the last 14 days it returns No data on the table.
As far as the Data itself is concerned, the time_usec field is set as a Number with no default aggregation. I have seen other questions about this answered in the past, with people saying that you can configure the field to be a Date rather than a number. However, attempting to do so produces the following message:
Looker Studio can't convert time_usec (Number) to a Date or Date &
Time because it doesn't recognize the date format.
Possible solutions:
Change your data to use a supported format
Create a calculated field to convert time_usec to a valid date. For example,
to convert "202011" to a date consisting of year and month: Example:
PARSE_DATE("%Y%m", time_usec)
I have also tried PARSE_DATETIME("%x", time_usec) and PARSE_DATE("%x", time_usec) as a calculated field. Again, for the purpose of displaying a date these seem to work fine. However, when then appying the date range it breaks with a message saying:
Am I doing something wrong here? I would rather not mess with the data at the BigQuery level. And I know I can use custom SQL to do the TIMESTAMP_MICROS(time_usec) then bring it in. But surely there is a better way to do this within Looker/Data Studio?
EDITED:
Added an example table with data and some config screenshot.
here's a formula that's working good on my end with date range control filter as well. please try it
DATE_FROM_UNIX_DATE(CAST(Time Only/86400000000 as INT64))
I searched for a long time for a solution to my similar problem.
I had the time in Unix microseconds. This is how I converted it to a date:
PARSE_DATETIME("%d-%m-%Y %H:%M:%S", CONCAT(DAY(time_usec, "MICROS"),"-",MONTH(time_usec, "MICROS"),"-",YEAR(time_usec, "MICROS")," ",HOUR(time_usec, "MICROS"),":",MINUTE(time_usec, "MICROS"),":",SECOND(time_usec, "MICROS")))

How to build Yocto hddimg on i.MX7 to boot from usb stick

I have an i.mx7 som. I want to build a Yocto image which I can dd onto a usb stick to boot from. I believe that I want an hddimg image but cannot see how to create one (I have sdimg which works prefectly).
I would appreciate advice.
I have set IMAGE_FSTYPES to "hddimg" but get "ERROR: Nothing PROVIDES 'syslinux'"
The SOM is the Technexion i.MX7. Layers are:
layer path priority
=======================================================
meta sources/poky/meta 5
meta-poky sources/poky/meta-poky 5
meta-oe sources/meta-openembedded/meta-oe 6
meta-multimedia sources/meta-openembedded/meta-multimedia 6
meta-freescale sources/meta-freescale 5
meta-freescale-3rdparty sources/meta-freescale-3rdparty 4
meta-freescale-distro sources/meta-freescale-distro 4
meta-powervault sources/meta-powervault 6
meta-python sources/meta-openembedded/meta-python 7
meta-networking sources/meta-openembedded/meta-networking 5
meta-virtualization sources/meta-virtualization 8
meta-filesystems sources/meta-openembedded/meta-filesystems 6
meta-cpan sources/meta-cpan 10
meta-mender-core sources/meta-mender/meta-mender-core 6
meta-mender-freescale sources/meta-mender/meta-mender-freescale 10
Nope, you certainly do not want an hddimg, as this is a mostly deprecated format for x86 systems. On ARM, you almost never want syslinux :-)
Usually your SOM comes with a Board Support Package in the form of a layer, which includes the MACHINE definition which in turn defines the IMAGE_FSTYPE that this machine likes for booting. If in doubt, consult the manual or ask your vendor.
Having said that, if you specify SOM and layers in use we can have a look if publicly accessible, but without those details it is impossible to give a proper answer.

LabVIEW to TRNSYS communication through type 62 error

I am trying to transfer data from TRNSYS (heating simulation program) to LabVIEW 2013 32 bit in real time through type 62 (in TRNSYS). Type 62 is an Excel file that transfers real time data from TRNYS to LabVIEW (and other way round). My LabVIEW program works on two different Windows 10 PCs and is not working on a Windows 7 although Excel versions are the same. It says there is an
Error 14012 occured at DDE Request
I have not attached the TRNSYS file but I can send it if you need to. 
Do you have any recommendation? 
Thank you enter image description here
enter image description here
Error 14012 is "Transaction Failed Error" Did you try troubleshooting your excel? also what's your excel version?
Here's a link: https://support.microsoft.com/en-gb/help/3001579/an-error-occurred-when-sending-commands-to-the-program-error-in-excel
I hope this helps...

What is the reason for null entries in address export table of a windows pe file?

I have a project I have built that inspects a Windows PE file. When processing certain files, such as User32 and Shell32, I notice there are entries in the export address table that are 0. What is the purpose of having a null (0) entry in the export address table? (An entry of 0 does not resolve to a valid virtual address)
FYI - Using applications like NikPEViewer and Dll Export Viewer will not show these entries at all, DumpBin shows exports that are not contained in the export name table and ordinal table but it skips the null entries.
i have only partial response.
assume we write next exports.def (win 8.1 x64 user32.dll) file:
EXPORTS
...
wvsprintfW #2412
NtUserDelegateInput #2503 NONAME
...
and have no any ordinals between #2412 and #2503 - so linker, for preserve your ordinal order will be need generate 90 zero entries in Export Address Table. so reason for linker is clear - it fulfills our designation. but this redirect our for another question - what is the reason wrote this kind of def file ?
think this is somehow related to rewrite this file from version to version.
say in user32.dll from win7 x64 - higest ordinal is #2502 (compare to NtUserDelegateInput #2503)
in win 10 x64 user32.dll can view:
...
NtUserUpdateWindowTrackingInfo #2585 NONAME
; interval [#2586, #2700) is zero
GetDialogBaseUnits96 #2700 NONAME
; #2701 is zero
EnablePerMonitorMenuScaling #2702 NONAME
new API set export begin from ordinal #2700 (space [#2586, #2700) is reserved ?). but user32.dll not in general export known(stable) ordinals - so it must not be preserve from version to version. so reason at all direct set ordinals in DEF file for me unclear

GenerateResource / CoreResGen suddenly taking almost 30 times as long

Starting a few weeks ago, compiling a project (VB.NET, .NET 2.0, VS 2010) has taken several times as long as before. In Task Manager, I noticed ResXtoResources.exe taking lots of CPU for a while. I've finally been able to get some data on this using MSBuild's 'Diagnostic' output setting, and comparing that output to what I see in a branch from a few months back. Most striking are the final lines, which give timings. Before:
Target Performance Summary:
[..]
1395 ms CoreResGen 1 calls
1930 ms CompileLicxFiles 1 calls
2135 ms GenerateApplicationManifest 1 calls
2844 ms CoreCompile 1 calls
Task Performance Summary:
[..]
1391 ms GenerateResource 1 calls
1929 ms LC 1 calls
2134 ms GenerateApplicationManifest 1 calls
2843 ms Vbc 1 calls
Build succeeded.
Time Elapsed 00:00:09.50
========== Rebuild All: 5 succeeded, 0 failed, 0 skipped ==========
After:
Target Performance Summary:
1348 ms CompileLicxFiles 1 calls
1747 ms GenerateApplicationManifest 1 calls
2595 ms CoreCompile 1 calls
39575 ms CoreResGen 1 calls
Task Performance Summary:
1347 ms LC 1 calls
1745 ms GenerateApplicationManifest 1 calls
2593 ms Vbc 1 calls
39570 ms GenerateResource 1 calls
Build succeeded.
Time Elapsed 00:00:47.34
========== Rebuild All: 5 succeeded, 0 failed, 0 skipped ==========
Both projects were compiled on the same system with the same settings. We've made numerous changes, to be sure, but nothing to the order of magnitude that would justify such a change in timings (and only for this one task!). I assume resource generation is getting stuck on something — a circular reference, a missing one, etc. I have been unable, however, to find anything useful on how to trace such a problem down to what I assume is just a single resource file.
Short of looking through thousands of checkins or temporarily removing some forms (and thus, their resource files) from the project, is there anything else I can do to figure out the issue? I can't seem to find individual per-resource file timings.
Findings so far:
I've created a new, empty project with all the same .resx files in place.
The issue is not reproducible in .NET 4.0: compiling the exact same test project takes less than a second.
The issue is reproducible in .NET 2.0 as soon as I also add one of the forms from the original project; apparently, it will otherwise not compile the resources "properly".
Removing individual .resx files will reduce the timings 'proportionally'; that is: I have unfortunately not found a single file that is the culprit.
Looks like this blog entry gives the answer.
In a nut, search your .resx files for assembly references that don't actually exist (such as System.Windows.Forms, Version 4.0.0.0), and replace them with ones that do (Version 2.0.0.0). I used grepWin to accomplish this.
My CoreResGen / GenerateResource timings are now roughly what they used to be. CruiseControl.NET says build time is down from 92 seconds to 40. :)
I found the reason here... the resources contained a png file save in special Adobe Fireworks format (PNG). I exported the file to png (without layer information) and now the compile takes 6 seconds.