Bid Management System

April 25, 2009

Start Date: 4-24-2009
Stop Date: In process of calculating.

2009-4-24

  1. Interviewed customer about project, requirements, and cost.  Customer will assemble list of written requirements and email those to me.  In the meantime, I’ll start working on parts of project that I know will be needed, even without their list of requirements.

2009-4-25

  1. Developing requirements further and initial table structures.
  2. Developed primary forms and table schemas to handle customer tracking.

2009-4-26 to 2009-4-29

  1. Successfully recompiled sqlite3.dll into uds3.dll (Usleton Data Systems)
  2. Successfully recompiled sqlite3odbc.dll into uds3odbc.dll.  Now uses my company information AND displays my chosen name for it under Windows ODBC Data Sources list.
  3. Tested newly renamed sqlite ODBC driver with creating tables, indexes, and views, plus adding, updating, deleting, and joining data among the tables using ADO.  Works like a charm!
  4. Debating adding Win32 code to uds3.dll in order to not use an ODBC driver.  Would just pass SQL directly into Public Declare function-names used.  Haven’t verified form of row-returning queries (recordset?, arrays?, something else?).
  5. Downloaded drivers from datenhaus website (http://www.thecommon.net/) in order to instantiate ODBC driver without having to EVER register ODBC driver in registry.  This will bypass a major issue I’ve encountered in previous years where customers have locked-down registries, especially in corporate environments.  Not a problem now!  Other assemblies include using DirectCOM.dll to instantiate a non-registered version of the litex.dll driver, which is COM-based, then using litex.dll to read/write/edit an sqlite3 database.
  6. Need to check with customer on progress of requirements they’re assembling.
  7. Side Note: Time to develop my own ODBC driver for accommodating AS400 and UN*X.  Already exists, I know, but why waste money and time buying them when you can learn how to build them and then sell them?  Opportunity just waiting.

2009-4-30

  1. Re-organized SQLite folders and files in order to locate admin tools and coding changes more easily.
  2. Downloaded PSSQLITE.DLL, a wrapper driver for sqlite.dll; can be used in VBA situations, also.
  3. Downloaded latest Datenhaus drivers (dhRichClient3.dll, sqlite36_engine.dll, and DirectCOM.dll)
  4. Downloaded latest LiteX.  Latest is about a year old.  Need to recompile LiteX C++ source with latest SQLite amalgamation source in order to update LiteX.  Could be used in conjunction with DirectCOM.dll (Datenhaus) in order to instantiate a non-registered (written-to-registry with GUID) version of LiteX, effectively bypassing any issues resultant from corporate (or otherwise) registry security locks.
  5. Researched articles for altering sqlite3.dll, to make it accessible from VB6 using “Public Declares.”  Two websites contained detailed instructions.  One must be accessed through Wayback Machine since it appears permanently offline:  http://www.tannertech.net/dev/sqlite3vb/.  The other is:  http://www.persistentrealities.com/index.php?p=18.
  6. Additional sites of enormous assistance found during research:
    1. http://www.eee.bham.ac.uk/collinst/VisualBasic-VisualC-DLL.html
    2. http://www.fredshack.com/docs/sqlite.html
    3. http://support.microsoft.com/kb/142840
    4. http://support.microsoft.com/?scid=kb%3Ben-us%3B189133&x=11&y=11
    5. http://www.boondog.com/tutorials/dlltutor/dlltutor.htm
    6. http://support.microsoft.com/kb/106553
  7. Fixed modOdbcInstall.bas module.  Modified procedures to install, uninstall, and check for any ODBC driver in registry, not just sqlite (as it was previously coded).
  8. Unsuccessfully modified sqlite3.mak file while attempting a simple recompile of sqlite3 odbc driver.  Simply compiled using C++ compiler.  No problem.
  9. Received written Requirements from customer.  Scanned paper document and stored.  Ready to calculate project completion date.

2009-5-1

  1. Documented all changes made when modifying sqlite3 ODBC driver.  PDF’d for easy use in future.
  2. Exploring recompiling LiteX driver using latest version of sqlite3 (as of this blog), v3.6.13.
  3. Final renaming and compilation of ODBC driver.  Ready for production environment.
  4. Will explore networked usage via DirectCOM.dll, sqlite36_engine.dll, and dhRichClient3.dll in near future.  Client and Server instantiations are available through these 3 drivers (Datenhaus).  However, dhRichClient3.dll must be registered.  If it’s COM-based, why not just use DirectCOM.dll on it to avoid locked registry issues?
  5. Tracking project with Microsoft Project.
  6. Setting up Gannt Charts, 5th NF details, ERDs, PERT/CPMs, DFDs, and DLTs.
  7. Need to include development of help files and help videos with project cost and ROI estimations.
  8. Need to test PSSQLITE.DLL.  Site appears permanently offline.  Will check WaybackMachine.
  9. Continue building Customer Tracking (Pseudo Address Book)  module.
  10. Need .NET layout as well.  Will convert immediately to 3.0 framework.  Php and Asp next.

2009-5-2 to 2009-5-7

  1. Major problems with Visual Studio 2005 – need this to re-compile LiteX driver.  VC++ 6.0 no longer supported per LiteX author.  Manually uninstalled VS 2005.  Error occurs on re-install.  May re-load Windows to fix issue.  Tried variety of things to fix.  Nothing has fixed it.  No usable info online thus far.
  2. Okay, remembered reading a forum that mentioned booting under another admin account in Win2K in order to successfully remove SQL Server 2005, .NET 1.1 and 2.0, and VS 2005.  Did this.  Windows Installer Clean Up allowed me to remove everything which I couldn’t under my primary login.  Even the dotnetfx_cleanup_tool.zip (cleanup_tool.exe) worked successfully for every instance of .NET I had installed (1.0, 1.1, 2.0, and 3.0).  Not bad.  So far so good.  I’m suspecting that I may have installed VS2005, .NET (1.0, 1.1, and 2.0), and SQL Server 2005 under the Administrator account, rather than under the main one I use.  Not sure.

2009-5-8 to 2009-5-14

  1. Finally got all pieces of VS 2005 uninstalled.  Too many details to describe here.  Successfully reinstalled.  Problem was .NET framework corruption caused by Windows update that I didnt check before it auto-installed.

2009-5-15 to 2009-6-3

  1. Spent 2 weeks re-freshing myself with C and programming SQLite simultaneously.  Mainly, how to do 5 things:
    1. Make procedure external to C dll.  (.DEF file with __stdcall procedure prefix.
    2. Convert pointer-to-type-char (char *) to a BSTR (Basic Strings) so VB6 can use the strings.  Difference between them is this:  (char *)  is setup in memory as a consecutive sequence of bytes of type char, the end of which is indicated by a terminating null character (‘/0′).  VB6 strings are setup in memory with a string length prefix (4 bytes), followed by the unicode string, then auto-terminated by a null character.
    3. Return arrays in a SAFEARRAY structure.
    4. Had tremendous problems getting ‘uds.dll’ to compile.  Had to learn about a large number of compiler settings preventing getting a successful compile, including using the message compiler (mc.exe to take messages.mc and create messages.h and messages.rc), library compiler/linker (lib.exe to take .def files and create precompiled .lib files), and automating custom builds (in this case with the message compiler).
    5. Final hurdle involved debugging a particular error involving not having an entry point in the C dll itself.  I dug around online for info about the error and found several possible solutions.  I tried several.  The one that worked involved simply adding an “int main(){return 0};” to the dll code.  I still don’t fully understand *why* that fixed it, other than the explanation that I only had 2 options for the type of dll I was creating and *both* options required one of the two kinds of main{} procedures be present.  I don’t understand fully how an unused main function is going to enable the C dll to be usable, but it enabled a successful compile.  One forum suggested that it was necessary to add parameters to the “int main{};” or “int WinMain{};” procedures.  Mine, however, did not require this for successful comilation.
    6. Added resource file (.rc) to VS 2005 compiler and added copyright and other miscellaneous data to be displayed upon inspection of driver’s properties.
    7. “uds.dll” is alive and well!
  2. Built VB6 module (.bas) to hold  Private Declares and tweak them into solid functionality when used in VB6 functions and subroutines.
  3. Had trouble deciding on whether or not to cause a load/unload of the dll with each VB6 procedure or property that executed.  However, after constant crashing of the VB6 IDE and compiled .exe, I tested it where the driver is loaded only at .exe startup, and unloaded at program unload.  That fixed the problem.  Not sure what was occuring in memory with that.  Will test it further when I have time (meaning after completing this project).
  4. Re-designed all forms and tables for Bid Project.  Had issues with storing multiple addresses under the old form and table layouts.  Corrected this and improved overall functionality of program at design stage.

2009-6-4 to 2009-6-6

  1. Online research finding state lists and sector/industry/career lists for inclusion in drop-down boxes on forms in Customer Address Book module of Bid Project.
  2. Cleaned up data.  Ready for import routines being built in VB6.
  3. Elected to eliminate sector/industry/career lists.  Will be far easier for user to simply enter job description of customer into single field than to search thru large lists of sectors/industries/careers and “safely” populate using this kind of selection.  Too many items to be of any time-saving use.  This will very likely frustrate user having to search thru so many items (3,000+ possibly).
  4. Successful test of VB6 program for passing parameters into VB6 program.  Will use this to pass either a 1 or 2 number as a command-line argument to the CAB program.  CAB program will either 1) open and initialize database as new, creating all needed tables, indexes, and views, or 2) open and start using database.

2009-6-7

  1. Building data-entry forms, setup forms, and automatic table generation of new databases.  (System Reports, Custom User Reports, Searching, and Filtering will be last).
  2. Building list-import routines.
  3. Building program icon using Inkscape and Adobe Photoshop.
  4. Additional links of great use:
    1. Message Compiler (MC.EXE)
    2. Using MC.EXE
    3. Message Compilation
    4. LIB.EXE Parameters
    5. BSTR Format
    6. Q196976