A small (open source) Inventory Control application using Ms Access. - Page 1
Forum section: electronics / projects

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: August 22, 2021, 11:20:51 am
content: Hello everybodyUpdate: The final file is available for download fromReply #25.It is not new that nowadays it is necessary to have a reasonable stock of components, both for our experiments and for eventual repairs.Losing Control- As my inventory grew, I lost control. Buying components already in stock and wasting time in localization were the two factors that bothered me the most.Using Microsoft Access– As I have a good experience with Microsoft Access VBA programming, I decided to create a small application for inventory control and thus solve my demand.Sharing the app– I will share this little app with you. It will be open source.Some images- I'll start by showing some images of the application, so you can analyze whether it will meet your demand.Google translator– my English is very bad. I'm using the google translator. I apologize in advance if it becomes incomprehensible.Image 1– Application main screen. Note that I already have one thousand registered components. Locating the component (watch the arrow) quickly was my main mission with this project.Image 2– using the filter fields, I quickly reach the desired component.Image 3– I can print a list of all registered components or I can print a filtered list. Notice in the image that I filter the PICs.Image 4shows the report resulting from the filtering.

author: intabits
author_rank: Frequent Contributor
timestamp: August 22, 2021, 01:34:10 pm
content: I need to do something similar to manage the stuff I've got stored all over the place, and obtained from all over the place.As well as the data you are keeping, I'll be adding:-* A general category identifier (opamp transistor module switch hardware etc) to enable searching by general class type. Nothing very specific, but to help eliminate irrelevant items. (looks like you are doing something like this)* A source or supplier identification* A link to the invoice/packing list or other document for the order that included the item.* Possibly the supplier's stock code for the item as well (or just use the document above)* A reference number or other key to identify the order* The physical item(s) will also be labelled with that reference number/key* Notes & comments (what the hell did I order this for? etc)* Links to datasheets, schematics, manuals or other useful information relating to the item, that can be opened with a click.Whenever I buy stuff on eBay or online, I create a pdf or screen shot image of the order to serve as the document mentioned above. The supplier might provide this as well, but I keep both since the order capture may include information (such as images) that often are not in the supplier's document.I have written a very crude form of such a system that is in use currently. It allows me to process activity/summary CSV files downloaded from Paypal (mostly for ebay orders) and then assign/connect an order document to the paypal order.The Paypal files contain descriptions of the items in the order, so I can use my crude app to search them, and then click on a search result to open the PDF for the order. I can then see if it's what I was looking for, who I got it from and when, and what else I bought at the same time.Making this work for all items from everywhere will be hard to impossible, since the required information is scattered about in many different formats. I may be able to get some joy out of extracting the data from the document PDFs, at least where many orders are in some consistent format...

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: August 22, 2021, 09:16:00 pm
content: IntabitsThank you for your participation. Thanks also for sharing your good ideas. Keeping everything cataloged as you plan will require a good deal of discipline.Features– I have collected some of the main technical features of the BJT and Mosfet transistors. Creating these lists has been very helpful for me. Let's go to them:Image 1– I search for IRDF6218 and with the right mouse button I click to open the registration form for its features (image 2).Image 3– List of registered Mosfets.Image 4– Observe the applied filtering. Mosfets IRF, Channel N and Vds greater than 99v.Image 5– Report view, as applied filtering.

author: intabits
author_rank: Frequent Contributor
timestamp: August 22, 2021, 10:57:11 pm
content: I may have misunderstood the purpose of your application, or at least part of it.You seem to be maintaining detailed device specs and parameters in your database. That seems like a lot of work, not only if it's entered manually, but also because the app needs detailed screens and processing specific to each type of part. So for example, opamps will require dedicated screens and code that is completely different to the stuff that must also be maintained for BJT transistors, and so on for everything else.My idea is simply a way to keep track of the stuff that I have, without having to physically search through boxes of packages to see what I've got. For specifications etc, clicking a link to the pdf is enough for me.

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: August 23, 2021, 07:22:41 am
content: IntabitsYes, I'm having a certain degree of work to register the features of each transistor, but I don't intend to go further in detailing other components.Image 1– Transistor listing form. With the right mouse button I can access the component's datasheet or open the features form (image 2).Image 3- Here we can also apply filter combinations and print the filtered list.

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: August 23, 2021, 02:59:32 pm
content: Inventory Write-off- I have recently entered the write-off inventory. Now I can print a report with the total amount spent on a given project.Image 1– Write-off control form.Image 2– I select the desired project in the filter field, to print the desired list.Image 3– Report with the total amount spent, referring to the selected project.

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: August 24, 2021, 02:05:46 pm
content: 1- The application is divided into two files. ThesysInventory_be.accdb(backend) file stores the tables and thesysInventory_v_1.accdb(frontend) file contains the forms, reports and codes used.2 - You will receive a zipped file, containing the files mentioned above and a folder containing a few images of components. No installation will be required. Just unzip into a folder of your choice.3 - The file you will be downloading contains my database. The goal here is for you to be able to proceed with preliminary tests. Later I will be providing the application, with the clean database, for your own use.4 - For it to work, you must haveMicrosoft Accessinstalled.5 - Before running the application, it will be necessary to configureMicrosoft Access, informing that the folder containing the files is trusted (trusted folder). Watch the video I found on youtube, showing how to proceed with this configuration.6 - After configuring the folder as trusted, you can run the applicationsysInventory_v_1.accdb(fronted).7 - The app is available to you at the link below.

author: Renate
author_rank: Super Contributor
timestamp: August 24, 2021, 06:02:51 pm
content: It's been years since I've used MS Access and I was glad to say goodbye to it.The most tedious part was making forms.I presume that they have some way now that you just say, "Design a form for me"?For some of your parameter fields you might want to use Null when there is no value specified?Or not, Null is very contentious.I like to put stuff in databases, anything that's SQL semi-compatible.I use MS SQL Server, SQLite and ODBC on Excel files or CSV.I use auto generated forms for data entry, I can't be bothered to mouse little boxes.Ok, it does not have the cohesiveness of one application that contains everything.

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: August 25, 2021, 07:08:50 pm
content: Renateyes, just use the "is null". Example:SELECT *FROM tblMosfetsWHERE ChannelIs Null;MSAccess backend supports up to 2GB. For this project, I can say that we can store more than 100,000 records without any performance degradation. The secret here is not to store the images in the database. Images are stored in a folder and then linked.

author: Renate
author_rank: Super Contributor
timestamp: August 25, 2021, 07:21:53 pm
content: No, I meant that I saw a lot of parameters that said zero.It might be more helpful to have that as blank if unknown/unspecified.Of course, having "null" displayed is even less helpful!Quote from: Avelino Sampaio on August 25, 2021, 07:08:50 pmSaving images internally as blobs has advantages (& disadvantages).I just think that MS Access is a dead end tying you to Microsoft for the rest of your life.Even using MS SQL Server doesn't tie you down as much if you don't use a lot of procedures/functions.You can migrate to MySql, PostGres, SqlLite (which I'll admit is awfully cheesy).

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: August 25, 2021, 08:44:19 pm
content: RenateI chose Ms Access because it is part of the MS Office package. I think most people here subscribe to the MS Office package. Another problem that weighed heavily on my decision was that the user didn't need to install anything. I think this brings more security, for the user who wants to try the offered application.

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: August 27, 2021, 10:01:56 am
content: HiThe application offered works on Ms Access 2010, 2013, 2016 and 365 versions.

author: Renate
author_rank: Super Contributor
timestamp: August 27, 2021, 12:17:01 pm
content: Ok, but Access used to be part of MS Office Professional.They changed the naming of all that stuff, but I don't think that most people who have Office have Access.I don't know how many (or why) people here would even have Office.Now, if you had done this in LibreOffice Base, that's free.I've never tried LibreOffice Base. I don't know what they have for forms/navigation.

author: Zero999
author_rank: Super Contributor
timestamp: August 27, 2021, 12:41:08 pm
content: I certainly don't have MS Office. This would be more accessible if it were done with LibreOffice Base.

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: August 29, 2021, 02:20:23 pm
content: For those who do not use the MS Office package, you have the option of downloading the reduced and free version of MS Access.The Microsoft Access 2016 Runtime enables you to distribute Access 2016 applications to users who do not have the full version of Access 2016 installed on their computers.https://www.microsoft.com/en-us/download/details.aspx?id=50040

author: kripton2035
author_rank: Super Contributor
timestamp: August 29, 2021, 03:06:25 pm
content: Quote from: Zero999 on August 27, 2021, 12:41:08 pmand it would be even more accessible if it were done using sqlite database ...

author: Zero999
author_rank: Super Contributor
timestamp: August 29, 2021, 09:30:10 pm
content: Quote from: Avelino Sampaio on August 29, 2021, 02:20:23 pmNo good, if you don't use Windows though.

author: Bassman59
author_rank: Super Contributor
timestamp: August 30, 2021, 05:36:55 pm
content: Quote from: kripton2035 on August 29, 2021, 03:06:25 pmI applaud this guy's work.If you want it done in sqlite or anything else, feel free to have at it.

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: August 31, 2021, 10:10:31 am
content: HiI decided to implement the "Entry Inventory".Image 1: Notice that in this example I'm checking in 6 more units from the LM311. I adopted the Weighted Value as a rule, to update the Unit Value of the part. See in this example that the LM311 has 4 units in inventory at a unit value of 1.57 and I am entering 6 units with a unit value of 2.00. The app will calculate as follows:((4 * 1.57) + (6 * 2.00)) / (4 + 6) :::> 1.83Image 2: Look at the updated value of the LM311, with the weighted value (1.83).Image 3: Note here that I use the supplier filter field, to return only with digi-key. Now just print the filtered listingImage 4: report resulting from filtering

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: September 01, 2021, 08:07:30 am
content: HiThe images saved in theImages folderfollow two rules: 1st -JPGorPNGextension / 2nd - The component name must be exactly the same as the identification name, registered in the stock.

author: Zero999
author_rank: Super Contributor
timestamp: September 01, 2021, 09:29:38 am
content: Quote from: Avelino Sampaio on September 01, 2021, 08:07:30 amHow about changing it so multiple components can use the same image?There are a huge number of components with exactly the same pin-out. Your screenshot demonstrates that very nicely: LM358, LM393, TL072, NE5532 are all identical.One way to do this, without modifying your code, is to have one image file, say dual op-amp.png, in a master directory and usesymbolic linksto refer to it. You could create a nice GUI to make this easier.

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: September 01, 2021, 03:00:21 pm
content: Zero999Thanks for the tip.Image 1 and Image 2: My components are stored in drawers, pots, cases, boxes, ....Image 3: I have many used parts. Sorting, storing and registering is a very boring task. How to have control of it all, without the help of an application?Tell me how you handle this issue. What program do you use? What method do you use? How has this bothered you?

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: September 02, 2021, 11:28:55 am
content: HiImage1: the backup system saves the backend (sysInventory_be.accdb) to the location you want (pendrive, external hd, ...). The default location saves the file in the folder where the front-end is located.Image 2: If you have Winrar installed and want to opt for compression, just check the option.Image 3: Notice how the name of the compressed file looks in the backup folder.

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: September 03, 2021, 04:36:41 pm
content: HiImage 1: One more feature included. It will be possible to establish theminimum valuefor each registered item.Image 2: The main forms will indicate how many items are below the minimum. On the ribbon you will have access to the list of items below the minimumImage 3: Report of items that are below the minimum.

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: September 04, 2021, 09:27:29 am
content: HiImage 1: When registering the component and it does not appear in the list, click on the small button beside the field (arrow 2).Image 2: Enter the new component and click the Save buttonImage 3: Note that as you type the main list it is filtered. This technique helps us not to duplicate already registered names.

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: September 05, 2021, 09:46:17 am
content: HiI'm finally releasing the inventory control project, so you can start your inventory control.When unzipping, just run theSysInventory_v_1.accdbfile to load the application. Create a shortcut of this file on your desktop, for easy access.Remembering that you first have to inform MS Access, that your folder is a "trusted location". This task is very simple, just follow the video offered.

author: Zero999
author_rank: Super Contributor
timestamp: September 05, 2021, 12:13:30 pm
content: Quote from: Avelino Sampaio on September 01, 2021, 03:00:21 pmI haven't had this problem. At home, I organise my components in a some boxes and manually keep an eye on stock levels. At work, we have a system which works in a similar manner and we have a proper store.

author: ak
author_rank: Newbie
timestamp: September 05, 2021, 07:29:58 pm
content: Just read about your program for keeping track of your parts. Some months ago we wrote a similar one at work. If anybody is interested:https://github.com/ArnePhotonics/EpartStocker

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: September 06, 2021, 08:10:29 am
content: HiI am available to answer any questions. I also accept suggestions for possible improvements. If you wish, you can communicate in private.

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: September 08, 2021, 09:37:38 am
content: HiIt has been very useful to save images with small example circuits. See the examples of Tl431 and TP4056.

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: September 11, 2021, 02:04:46 pm
content: Hi!Now I will carry out the inventory issue and have the final report of the project cost.

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: September 14, 2021, 02:14:45 pm
content: HiQuoteAnyone else would like to express themselves, how do you handle your stock? Are you using an Excel spreadsheet?

author: JARS
author_rank: Newbie
timestamp: November 15, 2021, 07:34:17 pm
content: “Avelino, I put one more continuous form in the application, where in each line of the registered item the component's photo appears, and when clicking on this image it appears in a larger size.A good feature would be to register a device with your brand and model and a way to find the electrical schematic of that device if you have already downloaded this schematic.”

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: December 24, 2021, 05:39:35 pm
content: HiImage 1: Surpassing 1300 registered items.Image 2: Starting to acquire SMD items.Image 3: Latest purchases at LCSC.

author: wizard69
author_rank: Super Contributor
timestamp: December 25, 2021, 02:53:23 am
content: Quote from: Avelino Sampaio on August 25, 2021, 08:44:19 pmActually no, we don't all use MS Office. I'm late to this thread but I think it is worth pointing out that MS Access isn't a universal solution. I do like the idea of an open source inventory application though. The thought of instant access to transistor parameters is a good idea too but that isn't core inventory control.

author: coromonadalix
author_rank: Super Contributor
timestamp: December 25, 2021, 04:50:50 am
content: Open OfficeLibre OfficeFreeOffice

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: December 25, 2021, 10:34:54 am
content: Ok, ok, ok, it's already clear to me that using MS Access makes it impossible for many to use the application. However, I have neither the intention nor the knowledge of migrating the application to another platform. Anyone who has the experience and wants to migrate the application to a more universal platform, can offer this alternative here.Wizard69, the application offered was designed to meet the demand of a DIY, without any ambition beyond that.

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: February 25, 2022, 07:21:03 am
content: HiPassing by to celebrate 100 downloads of the app. A victory, considering the degree of rejection for having used the MS ACEESS platform.

author: PKTKS
author_rank: Super Contributor
timestamp: February 25, 2022, 07:53:11 am
content: Reason being is not REJECTION by itself..The MS thing is:unportableA resource hog pig100% incompatible w othersPaid and overpriced licensesHighly likely to be non functional next upg.. so just consider porting the db to sqlite and at least 30 interfaces better are availablePaul

author: PKTKS
author_rank: Super Contributor
timestamp: February 25, 2022, 12:01:43 pm
content: Let me enhance the suggestion by placing my own shelf very small inventory controller applet done by simple using SQLITE in which is possible to interface with dozen apps..From VB.. anyone can just jump to DELPHI or better ...the modern replacement LAZARUS.http://lazarus-ide.org/But not even all those funky things are needed... a simple PASCAL of dozen lines can do the trick..If needed FPC can handle curses or newt interfaces..Just about plain simple things...Code:Program MaSemicon;Uses sqlite3, sqlite3db, strings, classes;vari, j : Integer;SQL,nmat : String;mysql3 : TSQLite;reslt : TStringList;beginmysql3 := TSQLite.Create('tabcomp.db');mysql3.BusyTimeout := 1000;SQL := 'SELECT DISTINCT * FROM tabcomp WHERE comp_CLASS LIKE "Regulator" ORDER BY comp_LABEL,comp_QTD;';mysql3.Query(sql, nil);str(mysql3.List_Field.count, nmat);Writeln('Total_Matches: ' + nmat);for i:=0 to mysql3.List_Field.count-1 dobeginreslt := TStringList( mysql3.List_Field.items );for j:=1 to reslt.count-2 dowrite(reslt.Strings,' ');writeln('');end;mysql3.Free;end.My own query results attached for such amazing simple trick...Paul

author: coromonadalix
author_rank: Super Contributor
timestamp: February 25, 2022, 12:18:38 pm
content: thks for this inventory programis it possible to add say: an % of stock left warning and or give some warning the stock / inventory will de depleted ?? EX: if you added in stock 100 diodes (1n4007) and you consumed almost all of them ??

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: February 25, 2022, 01:29:58 pm
content: PKTKS,I've been working with MSAccess (VBA) for over 20 years and I don't want to extend the debate of the platform used. Some people happily pay $15.00 for an LM399 while I'm super happy to pay $30.00 for an annual MS Office license. It all comes down to what each individual considers as VALUE. To you it's GARBAGE to me it's GOLD.

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: February 25, 2022, 01:40:13 pm
content: Coromonadalix,The warning is visual only (red text). See "reply #23" if it serves the purpose.

author: PKTKS
author_rank: Super Contributor
timestamp: February 25, 2022, 01:42:27 pm
content: Quote from: Avelino Sampaio on February 25, 2022, 01:29:58 pmDon't get me wrong.. I have very extensively used that on early 90s..Until complete ditching all MS over 2000s.As said.. the overall result is restricted by not being portableand locked out for other interfaces... like simple console querys...It would be a simple jump DELPHI... but MS imploded Borland..LAZARUS replaced VB with 200% improvements...It should be a more or less simple jump from VB to LAZARUS..while the whole DB ported to SQLITE is actually 300% faster and about 1000% lighter in system resources... because SQLITE does not use a daemon ...nor any sort of REGISTRY LOCKED access..Just a tip to improve the user base..not depreciate your valuable effort..Take advantage of the work and use it on a better jump...The time consumed should worth itPaulPS> just adding that LAZARUS (and ObjectOriented Pascal) already have integrated by default at least all these DBs ready to interface..https://wiki.freepascal.org/Components_and_Code_examples#DatabasesSQLITE or Postgres will outperform ACCESS by orders of magnitude in time.. resources and capabilities not to mention prtability

author: coromonadalix
author_rank: Super Contributor
timestamp: February 26, 2022, 11:30:27 am
content: Quote from: Avelino Sampaio on February 25, 2022, 01:40:13 pmThks Missed that detail

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: June 10, 2023, 09:43:07 am
content: Hello,I'm back with an update.4- I already have more than 1450 items registered.1- This month I completed my goal in investing in opamps. Close to $250.2- I registered some of the main features of each opamp. When viewing the print, it helps me compare them and choose.3- Now to get rid of some scrap, extracting some of its components. Very boring task to register all this in the program but it has been very rewarding to find the components quickly.Remembering that application is available for download on replay#25

author: Avelino Sampaio
author_rank: Frequent Contributor
timestamp: June 12, 2023, 09:27:11 am
content: Many components of these scrap boards I end up throwing in the trash, due to lack of skills in extraction techniques. I believe that will change for me after I found this channel below.https://www.youtube.com/@mrsolderfix3996/videos

author: RFoliver
author_rank: Newbie
timestamp: October 09, 2025, 04:45:42 am
content: #25