jboyce
Forum Replies Created
-
Yes, the lower end Fujitsu scanners use their own proprietary technology. We have traditionally used Fujitsu as they are very reliable, but have now switched to Epson DS series scanners and have had good success with them. They are all TWAIN compatible.
-
Try a space before And like this:
‘ And stm.STM_AUTO_KEY = ‘ + PN[‘STM_AUTO_KEY’]
Looks like you are concatenating the ‘CNC_AUTO_KEY’ and ‘And’
-
Jesse,
We had this issue a while back and the solution was to re-apply the license file to each schema. This was around Quantum 10.2, so don’t know if the same solution will work.
John
-
John Boyce
Member08/03/2017 at 8:11 AM in reply to: SQL STATEMENT TO KILL INACTIVE USERS AFTER SPECIFIC PERIODMary,
I sent both programs to Henrik with instructions about a week ago. Henrik – did you get my emails?
John
-
John Boyce
Member08/01/2017 at 8:29 AM in reply to: RUNNING INTO AN ODD ERROR WHEN DOING PARTS MASTER UPDATE IMPORTThe easiest way to elimiated unwanted white space is to use the Trim function on the input string. If you still have one or more values that are larger than the size of the receiving field, add substr to the function. E.g. if application code is 30 chars in the parts master use Trim(Substr(input_field, 1, 30))
-
John Boyce
Member07/20/2017 at 8:31 AM in reply to: SQL STATEMENT TO KILL INACTIVE USERS AFTER SPECIFIC PERIODOK, I’ll work up some basic program documentation/instructions and send everything to Henrik. Give me a day or two.
-
John Boyce
Member07/19/2017 at 11:02 AM in reply to: SQL STATEMENT TO KILL INACTIVE USERS AFTER SPECIFIC PERIODWe have a couple of solutions. One is a program (executable) that shows all connected sessions (similar to the function within Quantum) with a check box next to each oracle connection. You can check the box next to the session(s) you want killed and then click the kill button.
We also have a Windows service that monitors Quantum sessions based on inactivity and kills the sessions after x minutes of inactivity. The service does other things as well (such as log the number of sessions connected every x minutes to see usage during the day). I’d be willing to share these programs with the Quantum community through the Que Group site, but we aren’t a software development company, so they come with no warranty or support.
-
The other solution is to leave your current image server as is and add a second one. It’s pretty simple to do and will preserve all of the previous images as they are. All new images will be added to the second server.
-
Yes. There is an optional EDI module that you can purchase, and you can implement Web Services through the Quantum Portal, or design it yourself.
-
John Boyce
Member04/24/2017 at 8:57 AM in reply to: HOW DO YOU KNOW WHEN A SALES ORDER IS COMPLETE AND READY TO SHIP ?You don’t need the CC Event Manager to run Oracle Events. Most everything that CC does with the Oracle Scheduler (which they call Event Manager) can be done directly through Oracle.
Here’s a link on how to set up Scheduled Jobs using the free SQL Developer GUI.
http://www.thatjeffsmith.com/archive/2012/01/scheduling-jobs-with-oracle-sql-developer/
There’s a lot more documentation on the Oracle site including
https://docs.oracle.com/cd/B28359_01/server.111/b28310/scheduse.htm#i1033533
We use it for a variety of jobs. It’s more intuitive and flexible than the Event Manager, except for the XML formatting.
-
Yes, you can, but there’s a big BUT. Depending how the fields are used on various forms you might have problems if you don’t have the Screen Scripter to make modifications. Also, every time that you run Quantum’s Dataversion it will likely erase the changes that you have made. Therefore, before each Dataversion (which is run with each version of Quantum) you would have to copy the data elsewhere, and then reinsert all of the changes after the upgrade.
Probably not worth it in most cases, unless you automate the copy process with each upgrade.
-
Tony,
To put a watermark as background to your form, go to Pagestyle under report when in the Design phase. You can insert a jpg, pdf, etc. as the background.
John
-
Brian,
Because the CheckBox is not initially on the form at compile time it gives a syntax error in the OnClick event. This will be the case for any objects created in the OnShow. To get around it you can do something like this.
In the FormShow
CheckBox1 := TCheckBox.Create(Form.TabSheet1);
CheckBox1.Parent := Form.TabSheet1;
CheckBox1.Name := ‘CheckBox1’;
CheckBox1.Left := 680;
CheckBox1.Top := 424;
CheckBox1.Width := 120;
CheckBox1.Height := 13;
CheckBox1.Caption := ‘Parts’;
In the BtnOKClick
procedure BtnOKClick(Sender: TObject);
var
save_string: String;
i: Integer;
TmpCB: TCheckBox;
begin
for i := 0 to Form.ComponentCount – 1 do
if Form.Components[i] is TCheckBox then
begin
TmpCB := TCheckBox(Form.Components[i]);
if TmpCB.Name = ‘CheckBox1’ then
if TmpCB.Checked = True then
Save_String := ‘T’
else
Save_String := ‘F’;
end;
end;
John
-
You can do something like this:
Var
save_string: String;
begin
save_string := ”;
if checkbox1.Checked = True then
save_string := save_string + ‘T’
else
save_string := save_string + ‘F’;
if checkbox2.Checked = True then
save_string := save_string + ‘T’
else
save_string := save_string + ‘F’;
UDF_001 := save_string;
-
John is correct, but you also have to include the table name in your query to get a unique selection
Example:
Select stm.pn, stm.description, stm.stock_line, iml.image_desc, iml.file_name
from stock stm join image_list iml on stm.stm_auto_key = iml.source_pk
where iml.source_table = ‘STOCK’
and stm.pn = ‘XXX’ and stm.stock_line = 123
-
Leonel,
If you set up a header clause for your Ts & Cs in the PO header and then make sure you check Show Clauses when you print the form that clause will print before the footer section. If you would want to hard code certain info into the PO form, you could modify the sub-section Header Clauses in the form, taking out the reference to the PO clauses and inserting a memo item with the text you want to print. In this case it will print every time, but you will still need to check Show Clauses, or remove the tie between the Show Clauses parameter and the Header Clause section.
John
-
Tony,
Try this:
procedure FormShow(Sender: TObject);
var
q: TOracleDataset;
X: string;
begin
q := TOracleDataset.Create(nil);
q.Session := Form.OCSession;
// Get the current user who is logged in.
q.Sql.Text:=’select QC_SC_PKG.GET_USER_NAME from dual’;
q.Open;
X:= q.FieldByName(‘GET_USER_NAME’).AsString;
if ((X <> ‘TONYR’) and
(X <> ‘BILLG’) and
(X <> ‘JAMELLEM’) and
(X <> ‘CHRISD’) and
(X <> ‘CORYR’))
then
Form.Dataset.FieldByName(‘PNG_AUTO_KEY’).readonly:= true
else
Form.Dataset.FieldByName(‘PNG_AUTO_KEY’).readonly:= false;
end;
-
There isn’t an easy way. You would have to find all the tables that have the old consignment code auto key (cnc_auto_key) and change those records to the surviving cnc_auto_key. The tables that contain cnc_auto_key are:
COMPANIES
COMPANY_CONSIGNMENT
CONSIGNMENT_CODES
GL_TRANS
ILS_CONS_PARAMS
INVC_DETAIL
LOT_COSTING_LOG
PO_DETAIL
PO_HEADER
PRICES
RC_CONTROL
RC_DETAIL
SA_LOG
SO_DETAIL
STOCK
STOCK_RESERVATIONS
STOCK_XFER_LOG
WIP_AUDIT_LOG
WO_BOM
WO_OPERATION
If you don’t use some of these tables, or don’t have the cnc_auto_keys that you want to eliminate in the table, you can ignore that table. After you’ve modified the records in these tables, you can delete the consignment code you don’t want. Keep in mind that your historical records will now only show the surviving code. I did this a while back using Firebird, but don’t have any code that does this in Oracle. Also, we only had a half dozen or so tables that were affected at the time.
-
John Boyce
Member04/27/2016 at 8:21 AM in reply to: HANDLING RMA’S – KEEP IT ALL IN QUANTUM OR USING “ADD-ONS”?We’ve written our own system that complements Quantum by extracting the base RMA info from Quantum and then allowing entry for additional fields to fulfill our requirements. It’s actually part of a larger system used for ISO certification that tracks RMAs, customer complaints and non-conforming material with more precision than Quantum allows.
-
Tony,
You can make your own more restrictive view or one with parameters and use the view as the data source in Crystal. For example if you copy VIEW_GL_SUMMARY as MITCHELL_VIEW_GL_SUMMARY and then edit the select portion of the Query to
FROM GL_ACCOUNT GLA, GL_FISCAL GLF, GL_PERIOD GLP
WHERE GLA.REPLACEABLE = ‘F’ and
GLF.SYSCM_AUTO_KEY(+)=GLA.SYSCM_AUTO_KEY and
GLP.GLF_AUTO_KEY(+)=GLF.GLF_AUTO_KEY and
GLF.Syscm_Auto_Key = 1 and
glf.fiscal_end = to_date(’06/30/2016′, ‘mm/dd/yyyy’)
GROUP BY GLA.SYSCM_AUTO_KEY, GLA.GLA_AUTO_KEY, GLA.ACCOUNT_TYPE, GLF.GLF_AUTO_KEY, GLP.GLP_AUTO_KEY
you would restrict the results to the first company in Sys_companies and only to a particular fiscal year. You could then further restrict in Crystal. One caveat: custom views are deleted with the data version program, so keep copies to re-insert when you upgrade.
John
-
I believe that the default for MaxQ is that the Dataversion program does not delete Procedures or Functions, but does delete/update any Packages that you add or modify. We use both, and just wrote a program to recopy all Package and other metadata after running Dataversion. This requires that you have a schema containing your Packages, etc. to copy from before upgrading.
-
We are in the U.S., but have subsidiaries in the U.K. and Australia and do our accounting for all three entities using USD as the base currency, and then convert to the local currency for governmental reporting purposes.
-
I believe that CC said that they were going to integrate Quantum login with Active Directory with version 10.7. We are still on 10.5, but you might want to check with CC to see if this is implemented.
-
It looks like stock_audit is a Firebird table that is not part of the Oracle system, so I’m assuming that you are running Firebird. It also looks like the modifications to the Stock_Audit that inserts the term ‘Unknown Update’ in the tran_type field is part of the TU_UPDATE trigger of the stock field that gets fired with each change of a stock line. You could change the result by changing the trigger. If this is what you would like to do, I would contact CC as it’s dangerous to change a trigger without full confidence of the potential results. Alternatively, you could add your own trigger to fire after CC’s, but you would need to know the auto key of the stock_audit transaction and possibly more info to make the change. Proceed with caution.
-
Could you post the SQL statement so we can get a better idea of the issue.
-
Yes, we have a similar issue. Our current solution is to use one of the company check boxes to supplement the Vendor check box with Operations Vendor. Employees are created as Operations Vendors which allows us to integrate with the SaaS Expensable system. We then restrict ALL payables to only the accounting staff and have a report that others can run on individual vendors for payable info that won’t run on Operations Vendors. It would be good to be able to separate vendors into categories with the categories able to be restricted.
-
Agreed. In the Firebird days there was (maybe still is) a way to connect to the database without using a license, if you were not using the Quantum program. That concept was removed with Oracle.
We do a few things to help alleviate the problem. We wrote a Window service program that runs on the Oracle server to create a log at a pre-determined interval of the number of Quantum and other program connections so we can look for issues when users connect too many times, etc.
We also changed some of our programs to disconnect after a period of inactivity, but allow the user to reconnect at the same place in the program with a mouse click.
Finally, we moved some of our customized data to a Firebird database so that when we are not connected to the Oracle database to extract data, the programs can be disconnected from the Oracle DB.
These are all workarounds to the problem, but the real solution is that users should be able to connect to the Oracle server/database without using a license if they are not connecting with a CC product.
-
Tony,
If you haven’t tested it in the TRAIN schema and are concerned that it won’t go through, I would do a test of the first 20,000 records or so and time it. If there aren’t any issues, you can then run the rest knowing approximately how long it will take.
Another issue would be if there are intermediate commits in the DIA procedure. If you commit every 10000 records the database won’t have so much data to hold waiting for the commit or rollback command.
John
-
John Boyce
Member04/10/2015 at 8:42 AM in reply to: SAVE A REPORT OUTSIDE OF FORM DESIGNER TO VIEW CODEThe output is in a form of Delphi. However, parts of it are encrypted and can only be read by ReportBuilder (the third party reporting program that CC uses for its Forms Designer). If you have a copy of ReportBuilder, I believe you can open the exported files.
-
We are running SE1 and have vetted it with Oracle when we installed. In looking it up the only difference between SE and SE1 requirements is based on the number of sockets (not cores) on your server. SE1 is up to two sockets and SE up to 4. I do know that if you have a server with multiple sockets you must license for all sockets on the server. We have a two socket server and license Oracle for both. This is also based on licensing by socket and not by named user. Here’s the link to the reference on the Oracle site. http://www.oracle.com/us/products/database/standard-edition-one/comparisons/index.html
-
In Oracle you can’t alter the start value of a sequence. To change it you would have to drop the sequence and the recreate it.
E.g.
Drop Sequence “TRAIN”.”G_STM_CTRL_NUMBER”;
CREATE SEQUENCE “TRAIN”.”G_STM_CTRL_NUMBER” MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 5555 NOCACHE NOORDER NOCYCLE ;
The new Start with value (5555) must be greater than the value prior to the drop.
In Firebird you can alter the value of the Generator – again making sure that it is greater than or equal to the largest value currently in use.
-
Tony,
Would something like this help:
Select pnm.pn, pnm.description, Sum(stm.qty_oh), Sum(cqd.qty_quoted), Sum(sod.qty_invoiced)
from parts_master pnm join stock stm on pnm.pnm_auto_key = stm.pnm_auto_key
join consignment_codes cnc on cnc.cnc_auto_key = stm.cnc_auto_key
left join stock_reservations str on str.stm_auto_key = stm.stm_auto_key
left join so_detail sod on sod.sod_auto_key = str.sod_auto_key
left join cq_detail cqd on cqd.stm_auto_key = stm.stm_auto_key
where cnc.consignment_code = ‘XXX’ and
sod.entry_date > to_date(’01/01/2014′, ‘mm/dd/yyyy’) and
sod.entry_date > to_date(’01/01/2015′, ‘mm/dd/yyyy’)
group by pnm.pn, pnm.description;
-
CC should be able to give you the name of the variable that they use for the active user.
-
On the previous message, the correct software for Oracle is Oracle SQL Developer, not SQL Manager.
-
You can set up your own stored procedures, functions or packages and include them in the Schema. As all of the above can modify the data (but don’t need to), you need to be careful. We prefix all of our metadata additions with AASS, which puts them at the top alphabetically and identifies them as ours.
If there is a stored procedure that CC has created that does not modify data, you can copy and paste it into your own stored procedure, modify it and refer to it by the new name.
Oracle’s SQL Manager is a good tool for doing this. It’s free from Oracle. For anyone on Firebird, there are several free and commercial products available. We use Interbase/Firebird Development Studio from http://www.sqlly.com. You can try it for 30 days for free and then it’s a couple hundred dollars to purchase.
Be aware that the Dataversion program will delete some of the metadata that you create, so you need to keep a copy to paste into your new version when you update.
-
We also upgraded to 10.4.33 last weekend. So far no major issues. We were advised that 10.5 isn’t quite ready for production, but would be good to put in a test environment to look at the new features. We’ll probably to that after things settle.
-
Additional metadata is deleted by the DataVersion program when doing an update. We have additional tables, stored procedures, packages, sequences, views, etc. and how we handle it is to prefix all of our metadata objects with AASS. Then before the update, we make a copy of the schema. After the update, we have a program to copy all of the metadata prefixed with AASS back into the new production schema. This works for us, because by prefixing every thing with AASS, we never have to remember what additional changes were made that would have to be added to the upgraded schema.
-
We haven’t as yet run stored procedures from within the Event Manager, but for creating and testing stored procedures for execution from any program I would suggest the Oracle SQL Developer. This is free software from Oracle which gives you access to all of your Oracle metatdata. Component Control puts all of their Procedures in Packages, which means that if you create any Procedures or Functions and don’t put them in a Package, they won’t be mixed in with CC’s.
It also means that it’s easy to create the Procedure in the training schema and test it there before unleashing on the production data (especially if it modifies data).
Procedures can then be run from within the Oracle SQL Developer or called from an external program or script (including Event Manager).
-
You can also create an additive template that only has selective privileges and add that only to those that have already had the standard template applied. For example you might have a template Purchasing Officer with standard privileges and another Senior Purchasing Officer with only a few additional privileges that is applied after the Purchasing Officer template.
-
What we do is call Quantum from within another program and before doing so, count the number of Windows where the window name starts with ‘Quantum Control’. You can then prevent the spawning of the Quantum program if another named window already exists. This only prevents running Quantum multiple times on the same device, not the total number of Quantum connections. The Microsoft system calls to do this are 1) Enumwindows – which returns a list of all top level windows and 2) GetWindowsText – which returns the name of the window for each window returned from Enumwindows.
Another way would be to use the Query Paul mentioned in the how to log out inactive users thread to show who is currently connected, and then refuse an additional connection if the user is in that list.
-
Here’s a link to some Delphi code for terminating programs based on idle time within the program or on the whole system. I’ve used to disconnect from the Quantum Schema from within a program (works great), but not based on system idle.
http://forum.codecall.net/topic/69690-detect-user-idle-and-do-something-after-some-time-ellapsed/
John
-
I don’t know GRC, but you can definitely modify the security templates from outside Quantum. We have a program that creates a template from another template for further modification. You could probably apply changes to individual users as well, but you need to be certain of your changes to the Quantum tables, and test thoroughly or run by CC.
-
Bill,
We’ve come across this in the past also. Our solution was to test for Serialized = ‘T’ and Serial Number = ” or Null. In those cases, update Serial Number to ‘Missing’ or ‘TBA’ before updating other fields in the stock record. You could then go through and look at the ‘Missing’ SN’s later if you wanted. This is safer than turning off the triggers.
John
-
Cameron,
We generally try to do two updates annually, and definitely set up testing prior to the update. We also usually try to get a version that has been out for a couple of months, rather than the latest, unless there is a compelling reason to do so and rely on CC for input on a stable version. Our testing usually lasts a couple of weeks – maybe not as thorough as what you do, but we test all of our routine transactions and assign all of the change items in the CC documentation to individuals in the various departments for their approval.
John
-
We use a product named Expensable which has a similar feature set to Expensify. Data can be exported from Expensable’s database in a number of formats and then imported to Quantum.
John
-
Scott,
In Firebird, page size and cache size work together to set up an area of memory. The amount of memory needed is page size * cache buffers. The defaults for Firebird 1.5 Superserver are page size of 1k and cache buffers of 2048. This only uses 2 MB of memory and comes from the time when FB 1.5 was created and memory was dear.
Part of the equation is how large your database is, and also things like index levels and your NTFS cluster size which can get complicated.
We use 8k pages (you could experiment by increasing pages from 1k to 2k, 4k, etc. until you hit the sweet spot) and 50000 cache buffers. This allocates about 400mb for caching so you need to make sure that you have enough memory, but with 4GB sounds like you do. In fact because of the 32bit address space for FB 1.5, increasing your memory beyond 4GB probably won’t have any effect.
I think the limit for FB 1.5 is 62000 cache buffers, so you can’t go much larger anyway. You can use 16k page sizes, but we didn’t find any improvement beyond 8k, and if you do a lot of reads of small amounts of data, performance can be degraded with the larger page and cache sizes.
We do backups and restores about quarterly and any time we do a Quantum upgrade (which is 1-2 times each year). You would need to do this anyway, each time you change the page size.
As for fetch size of -1 – that is only a problem when retrieving data from large tables/queries, and can have the effect of a large report until the query is completed. If you are querying all of your quotes for example, and have several hundred thousand, the -1 fetch size says get all of the quotes in one bite. Other users can be hampered while the server is executing the query. If you use -1 on a lookup table with a couple hundred entries there may be no effect.
Hope this helps.
John
-
Scott,
It’s hard to tell exactly what your problem is without looking a little deeper , but these are a few things that will affect the speed of the system in a Firebird environment.
Larger cache on the RAID controller (512MB or more)
Run discs in a RAID 10 configuration
SAS or SCSI 15K RPM drives
Have the Imaging server separate from the Quantum server
Increase physical memory on Quantum server (8GB or more)
Gigabit network for servers
Increase Firebird database page size to 8,192MB (a backup and restore is needed to do this)
Increase the number of cache pages in memory via Firebird config file. Database will have to be restarted for this to take effect.
Only run Quantum on the Quantum server (no other services or programs should be run on this server)
Run backup and restore periodically to increase database speed and compact the database
Restrict reports to off hours or build delays in reports to slow them down
Educate users on Fetch sizes in Quantum and never use -1 for a fetch size
If you have any specific questions on this call me. 818-362-1100.
John
-
Dave,
In Crystal syntax the formula would be something like
Mid({@Addr1}, Instr({@Addr1}, “,”)+1, 2).
That would select the two characters starting with the first character after the first comma. If there were no commas in the field, it would be the first two commas of the field, so you might want to test for that.
John
-
In Delphi there is a function Uppercase, in which case the syntax is Form.txtDescription := Uppercase(Form.txtDescription).
-
Alonda,
That unique constraint (AK_WNT_WNM_PNM) requires that the combination of Warning Module and Parts Master must be unique. In other words, for each parts master record (PNM) there can be only one warning for each record in the Warning_Modules table (WNM). The entries in Warning_Modules refer to a table name to link to the warning, but it doesn’t look like there can be only one per table. If you create a new entry in Warning_modules to reference your second warning, you should be able to link it to the Parts_master table, though I haven’t tried this.
John