Author Archives: Taufiq

Email Inspector Is Unable To Determine Whether an E-mail Address is Valid Or Not

Conclusion: Email Inspector  is unable to determine whether an e-mail address is valid or not.

TROUBLESHOOT SOLVED?
  • Increase timeout to maximum in Email Inspector
  • Increase timeout to maximum in Account Manager
No. All emails tested with Email Inspector go to “Other” tab.

Result was:

  • Other = 4

By right:

  • Verified = 3
  • Failed = 1 (1234567@mobitek,my should be under “Failed”)

  • Disable antivirus and firewall
No. All emails tested with Email Inspector go to “Other” tab.

Result was:

  • Other = 4

By right:

  • Verified = 3
  • Failed = 1 (1234567@mobitek,my should be under “Failed”)

  • Open port 587 and 2525 in firewall
  • Allow GroupMail 5 program in firewall
  • Test Email Inspector with port 587 and 2525
No. All emails tested with Email Inspector go to “Other” tab.

Result was:

  • Other = 4

By right:

  • Verified = 3
  • Failed = 1 (1234567@mobitek,my should be under “Failed”)

  • Default setting (Connections: 3)
  • Reduce connections = 1
  • Open port 25 in firewall
No. All emails tested with Email Inspector go to “Other” tab.

Result was:

  • Other = 4

By right:

  • Verified = 3
  • Failed = 1 (1234567@mobitek,my should be under “Failed”)

 

UCanAccess Driver Locks MS Access Database of SMS Engine — Basic Edition

Problem: SMS stuck in the “oubox” table and cannot be send out by SMS Engine — Basic Edition v. 5 and SMS Engine — Basic Edition v. 6.

Solution: Java application should use ODBC instead of UCanAccess to connect to “SMSEngine5.mdb” (version 5) or “SMSEngineVBNET.mdb” (version 6). Somehow, UCanAccess locks the records inserted into “outbox” table, preventing SMS Engine from retrieving those records and preventing SMS being send out.

 

TROUBLE SHOOTING #1: JDBC:UCanAccess

  • DB Tool: DBeaver
  • Driver: UCanAccess
    UCanAccess-01
  • JDBC URL: jdbc:ucanaccess://C:\Program Files\MOBITEK\SMS Engine – Basic Edition\Database\SMSEngine5.mdb
  • Result:
    • All records inserted into “SMSEngine5.mdb” using DBeaver were stuck in “Outbox” table even after the DBeaver has been closed.
      UCanAccess-02
    • All SMS are stuck in “Outbox” table (SentStatus = P) after the SMS Engine has been restarted.
    • After restarting the SMS Engine a few times, all SMS finally can send out.

 

TROUBLE SHOOTING #2: JDBC:ODBC

  • DB Tool: DBeaver
  • Driver: ODBC
    UCanAccess-03
  • JDBC URL: jdbc:odbc:SMSEngine5
  • Result:
    • All SMS inserted into “SMSEngine5.mdb” can be send out without any problem while DBeaver is still running.
      UCanAccess-04
    • Note: the delivery status depends on the TELCO response — may be late or no status at all.

How to Connect to MS Access Database using JDBC:ODBC Connection

  1. Depending on whether your Java application is 32-bit or 64-bit, choose the correct ODBC Data Source Administrator (64bit or 32 bit) to create the Data Source Name. Otherwise, the connection cannot be established.
      • If your Java application is 64-bit then use ODBC Data Source Administrator 64-bit
      • If your Java application is 32-bit then use ODBC Data Source Administrator 32-bit
  2. Open ODBC Data Source Administrator (make sure the correct version is used).
  3. Select “System DSN” tab. Click “Add”.
    JDBC-01
  4. In this example, we are connecting to MS Access database, in “Create New Data Source”, select “Microsoft Access Driver (*.mdb, *.accdb)” in the list. Click “Finish”.
    JDBC-02
  5. In “ODBC Microsoft Access Setup”, enter any “Data Source Name”. This name will be used in DBeaver later. So remember it. After that click “Select…” button.
    JDBC-03
  6. Now you have to locate your MS Access file. In this example we use “SMSEngine5.mdb”. Click “OK”.
    JDBC-04
  7. Example of the Data Source Name created.
    JDBC-05
  8. Open DBeaver (or any other database management tool). Click on “Database -> New Database Connection”
    JDBC-06
  9. In “Connect to database”, select “ODBC” in the list. Click “Next”
    JDBC-07
  10. Insert “Database/Schema” name the same like you created earlier in ODBC Data Source Administrator. Click “Test Connection” to test the ODBC connection.
    JDBC-08
  11. If everything is setup right, you will get the below message. Click “Finish”
    JDBC-09

How to Solve “ERROR [HYT00][Microsoft][ODBC SQL Server Driver]Query timeout expired”

PROBLEM: ERROR [HYT00][Microsoft][ODBC SQL Server Driver]Query timeout expired

POSSIBLE CAUSE: Database too large, too many records in tables

SOLUTION: Create an index for “outbox” table:-

  1. Stop the SMS Engine service of MobiGATE
  2. Using SQL Management Studio, go to “indexes” of “dbo.outbox”, right-clickm select “New Index…”
  3. For “index name”, enter “To solve query timeout”
  4. Select “Nonclustered”
  5. Click “Add” to add 2 columns “datetime_queued” and “sent_status” (refer to red boxes below):
  6. Click “OK” button and a new index will be created:
  7. Start the SMS Engine service of MobiGATE
  8. Observe in log if this eror message still appear “ERROR [HYT00][Microsoft][ODBC SQL Server Driver]Query timeout expired
  9. If it appears again, please fill-in the table below:
    QUESTIONS ANSWERS (provide screen shot if available) REMARK
    Date of index created (as shown above)
    Take a screen capture of the SQL Management Studio showing:

    1. the new index
    2. the columns in the new index
    Date of the error message “ERROR [HYT00][Microsoft][ODBC SQL Server Driver]Query timeout expired” first appear
    Total number of records in “outbox” table when the error first appears
    Please send us:

    • the log file of the date when the error appear
    • “config.xml” file

How to Write a SQL Statement that Sums All Records of Different Items in Each Group as “Total Balance”

Problem: In “Stock Card” table, it records the stock movement, “In” and “Out”  of each item (ITEM ID).  There are different items that belongs to same group (GROUP).  And there are many groups (GROUP).

 

STOCK CARD TABLE
GROUP ITEM ID IN OUT
EKONOR EKONOR-1 20
EKONOR EKONOR-1 10
EKONOR EKONOR-2 40
EKONOR EKONOR-2 10
EKONOR EKONOR-2 20
SAGA SAGA-1 10
SAGA SAGA-1 5
SAGA SAGA-1 5
SAGA SAGA-2 10
SAGA SAGA-2 10
SAGA SAGA-2 20

How to get the sum (TOTAL BALANCE) of each group as below?

GROUP TOTAL RECORDS TOTAL BALANCE
EKONOR 5 20
SAGA 6 10

 

Solution: using this SQL statement

SELECT `Group`,
(SELECT COUNT(Stock_Description.`Group`) FROM Stock_Description WHERE Stock_Description.`Group` = sd.`Group`) As `TOTAL RECORDS`,
(SELECT SUM(COALESCE(a.`IN`,0) – COALESCE(a.`OUT`,0)) FROM Stock_Card a WHERE a.Item_ID LIKE CONCAT(sd.`Group, ‘%’) AND a.Balance IS NOT NULL) AS `TOTAL BALANCE` FROM Stock_Description sd GROUP BY `Group`;

 

SELECT SUM(COALESCE(a.`IN`,0) – COALESCE(a.`OUT`,0)) FROM Stock_Card a WHERE a.Item_ID LIKE CONCAT(sd.`Group`, ‘%’) AND a.Balance IS NOT NULL) AS Total_Balance

the above SQL statement will display  a “TOTAL BALANCE” of each “GROUP” by:-

  • summing all “In” records of “EKONOR” minus the sum of all “Out” of EKONOR”
    • (20 + 40) – (10 + 10 + 20)
    • = 20
  • summing all “In” records of “SAGA” minus the sum of all “Out” of  “SAGA”
    • (10 + 5 + 10 + 10) – (5 + 20)
    • = 10

 

SELECT COUNT(Stock_Description.`Group`) FROM Stock_Description WHERE Stock_Description.`Group` = sd.`Group`) As `TOTAL RECORDS`

the above SQL statement will display  a “TOTAL RECORDS” of each “GROUP” by:-

  • summing all records in “EKONOR” group
  • summing all records in “SAGA” group

Source:-

The Location of My.Settings Used by VB.Net Application

Determine whether the application saves the user settings on exit.

The SaveMySettingsOnExit property allows the user to change how the application saves settings, at run time. You can explicitly save setting changes by using the Save method of the My.Settings object.

The changes to this property are not persisted when the application closes. To change the SaveMySettingsOnExit property permanently, you must change the setting in the Project Designer:

To change the setting in the Project Designer
1. Have a project selected in Solution Explorer. Click Properties on the Project menu.
2. Click the Application tab.
3. Select Save My.Settings on Shutdown.

There are two types of application settings, based on scope:

  • Application-scoped settings can be used for information such as a URL for a web service or a database connection string. These values are associated with the application. Therefore, users cannot change them at run time.
  • User-scoped settings can be used for information such as persisting the last position of a form or a font preference. Users can change these values at run time.

The path that store My.Settings config file differ depends upon the scope that has selected and the Visual Studio version. For Microsoft Visual Studio 2008 Version 9.0.30729.4462 QFE, the config is stored in:

C:\Users\<username>\AppData\Local\<companyname>\<appdomainname>_<eid>_<hash>\<version>\user.config

Source:-

How to Assign a short-cut key (hotkey) for a LibreOffice Macro

  1. Open LibreOffice that containing the macro
  2. Click “Tools” -> “Customize…
  3. In Customize, Click “Keyboard” tab and scroll down the “Category” section until you find “LibreOffice Macros“. Select the macro.
  4. Select the function that you want to assign the shortcut key in “Function” section and find the available keys in “Shortcut Keys” area. Select the key and click “Modify” button. Click “OK

USB Drivers of FX30 and MOBITEK S80 Have Conflict — Bad_pool_caller

Problem: the USB Drivers for both FX30 and MOBITEK S80 cannot be installed in the same machine. Otherwise the below blue screen error will appear when trying to connect MOBITEK S80 3G Modem to the PC/machine.

 

Solutions: there are 3 solutions to choose:

  1. reboot Windows into “last known good configuration” (source: https://support.microsoft.com/en-my/help/4026863/windows-fix-error-0xc2-badpoolcaller);
  2. run system restore to restore Windows to the a date before FX30 USB driver was installed; or
  3. uninstall FX30 USB driver.