Select “Send Keystrokes to…” from the “Mode” menu in the Wedge, then enter: “Microsoft Access” as the Application Name and leave the “Command Line” box blank.
Set up the rest of the Wedge as needed for your barcode scanner and then activate it.
Note: You could also use BC-Wedge or a barcode scanner with a keyboard Wedge with this application.
What does this example do?This example demonstrates how to use Access in conjunction with a barcode scanner to look up product information and increment/decrement how many of that product are currently in stock.It is important to realize that this is just a sample of how you could implement an application of this sort. It is extremely unlikely that you would be able to use it “out of the box” to manage your inventory. While it is of course possible to change the values of the table (which currently lists TALtech’s products) to display your own products, the addition of new fields or renaming of existing fields will require a number of modifications to each of the forms, queries and subroutines in the database.Download the Inventory Sample for Access.Why use keystrokes mode instead of DDE?While it is possible to do this entirely through code and using DDE, there is really no advantage to doing so. The main advantage of using DDE with Access is simply to allow the operation to run reliably in the background (allowing you to work in other applications in the foreground while the data is quietly logged into a table for you to look at and analyze later), or to use multiple serial devices that transmit data at the same time.In an inventory application where you are scanning a barcode into your computer simply to retrieve information about a product, the Access application will need to be in the foreground to display the result and it is therefore unlikely that you would be using the PC for any other tasks at that time.It is equally unlikely that you would have two scanners connected to the same PC as Access allows multiple users to modify data at the same time so you could just as easily connect a single scanner to multiple PCs all of which are configured in keystrokes mode and updating data in the same database.All of the lookups and updates to the data in our example are done using queries rather than DAO code. These are much easier to manage, and anybody with a basic understanding of Access should be able to see at a glance how they work and modify them to meet their needs. Those same people may have little or no understanding of how to use VBA, DAO and other programming knowledge.Above all else, why spend hours writing code when you can achieve exactly the same end result using a query that took just minutes to set up?
TablesOur example has only one table, tblProducts, which contains just four fields – Product ID, Description, List Price, Quantity In Stock. In the real world, most databases would use more than one table to take advantage of Access’ relational database capabilities, but the principles are the same.FormsfrmAddEdit is a simple form bound to tblProducts. This form allows you to add, edit and browse through the records in our table.frmLookup will look up the information in the table for the Product ID that you scanned in and display it in the format below:frmChangeStatus allows you to increment or decrement the number of the scanned/selected item currently in stock and displays the current number of in stock items. When the “Mode” is set to Increment, the number of in stock items will increase by one and when set to Decrement it will decrease by one.Note: While the value in the table is immediately changed, you may not see the form (or table if you have it open) update with the new stock value for up to 60 seconds due to the default refresh rate in Access. To change the refresh rate, go to Tools > Options > Advanced and change the “Refresh Interval (sec)” value to just 1 or 2 seconds.
frmAddEdit does not use any code and is simply bound directly to the table. This form was created using the New Form Wizard in Access and should not require any further explanation.frmLookup uses a simple query by form method to ‘look up’ and return the matching data from the table. If you open qryLookup in Design View, you will see that in the criteria section of the Product field it has a link to the drop-down box on the form:(If you try to run it without frmLookUp open, it will prompt you for a Product ID). Most of the code behind this form (and in the database as a whole) was written by the Access Wizards when the forms were designed, but to make it a little more robust we added some ourselves such as the code to highlight the text in the drop-down box ready for the next scan (to make sure the code is overwritten rather than having the next scan appear beside it). We used the After Update Event of the drop-down box on the form to run this query. Since the drop-down box is the only control that can receive focus on this form, it can be scanned into repeatedly without any special code or settings to move the focus to the right place after each scan.frmChangeStatus takes the query by form method a step further: as well as using criteria based on the value of the drop-down box it also uses an expression to add the value of the option group to the number of that item currently in stock. The “Mode” Option group has values of 1 and -1 so when added to the current number in stock it will increment or decrement it. You could of course change the values of the mode option group or add a text box allowing the user to type in the number to add or subtract from stock or simply to log an item’s status as in or out.The Change Status form has more than one control on it, so to prevent focus being shifted to any of the other controls only the drop-down box has its tab stop property set to yes. This prevents the cursor accidentally being shifted to another control between scans. The After Update Event of the drop-down box runs the query, seeks out the record for the selected product and displays the current stock count and then highlights the selected text ready for the next scan. Again, apart from highlighting the text, 90% of this code was written by the Access wizards.In an effort to ensure you receive as few errors or warnings as possible the warning that “You are about to run an action query, 1 row(s) will be affected…” is temporarily disabled at the top of the After Update subroutine and then re-enabled at the bottom.Finally, there is also some code to set the focus back to the combo box after changing the mode (to be sure that as little intervention as possible by the operator is required) in order to set it up ready for the next scan.There is only one module in this database and this contains a routine taken directly from the NorthWind Database example that ships with Access. Its purpose is simply to test to see if a form is loaded. We use it here to close the Add/Edit form before running the update query. This isn’t necessary, but if the Add/Edit form is open to the record that the update query is updating you may get a warning that the record you are editing is open by another user and may need re-editing.
While we recommend you start from scratch with your own database and just refer to our sample as a guide, if you fully understand how our sample works it is certainly possible that you could save a little time by simply deleting our data, adding your own field names and redesigning the forms and queries. In order to give you some idea of what would need changing, let’s assume you plan to make the following changes:
Add a Field to the table
Rename the Product Field to ProductID
Change the increment/decrement values to add and subtract 10 at a time.
This sounds easy enough, but take a look at how many items would need to be changed:After making your changes to the table design, you would need to open both of the queries and change the names of the Product field to ProductID and drag the new field onto the grid. Then you would need to open all three of the forms and change the Product Field’s control source property, change the row source property of the drop-down box, and drag the new field onto the Add/Edit Form. Assuming that you did not change the name of the drop-down box you should not have to modify the code behind it. Finally you would need to change the option values of the “Mode” Option group from 1 and -1 to 10 and -10 on the Change Status form.Missing any of these items would result in the database no longer working as it should and possibly tearing your hair out trying to figure out why. In many cases it would take longer to figure out what you missed than it would to have built a new database from scratch. For this reason, it is generally easier to start by building a new database to your own specifications rather than trying to bend and shape our sample to meet your needs.
When I scan the data into the Change Status form the stock number does not change.While the value in the table is immediately changed, you may not see the form (or table if you have it open) update with the new stock value for up to 60 seconds due to the default refresh rate in Access. To change the refresh rate, go to Tools > Options > Advanced and change the “Refresh Interval (sec)” value to just 1 or 2 seconds.When I scan the data into the Change Status form in quick succession I get the error: “The data has been changed. Another user edited this record and saved the changes before you attempted to save your changes. Re-edit the record.”This is also due to the default refresh rate in Access. To change the refresh rate, go to Tools > Options > Advanced and change the “Refresh Interval (sec)” value to just 1 or 2 seconds.
Last modified on November 3, 2026
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"TALtech Support","colors":{"primary":"#0764B9","light":"#0764B9","dark":"#0764B9"},"logo":{"light":"https://mintcdn.com/taltech-bdc45607/x77iB9KQeUuF5CKJ/images/brand/Logo.svg?fit=max\u0026auto=format\u0026n=x77iB9KQeUuF5CKJ\u0026q=85\u0026s=281267d1812ad821819e27a3fc4627a8","dark":"https://mintcdn.com/taltech-bdc45607/x77iB9KQeUuF5CKJ/images/brand/Logo.svg?fit=max\u0026auto=format\u0026n=x77iB9KQeUuF5CKJ\u0026q=85\u0026s=281267d1812ad821819e27a3fc4627a8","href":"/"},"favicon":"https://mintcdn.com/taltech-bdc45607/gxOKhYgaQPS-dWNs/images/TALFavicon.png?fit=max\u0026auto=format\u0026n=gxOKhYgaQPS-dWNs\u0026q=85\u0026s=9775c2f387b2a123e7c3f8e6bcdc7794","background":{"color":{"light":"#fafaf9","dark":"#0c0a09"}},"navbar":{"links":[{"href":"/contact","label":"Contact"},{"href":"https://taltech.com/ordering","label":"Ordering"},{"href":"/about","label":"About"}]},"footer":{"links":[{"header":"Software support","items":[{"label":"WinWedge","href":"/winwedge"},{"label":"TCP-Com","href":"/tcp-com"},{"label":"BC-Wedge","href":"/bc-wedge"},{"label":"HID-ScaleWedge","href":"/hid-scalewedge"},{"label":"B-Coder Pro","href":"/b-coder"},{"label":"Barcode ActiveX","href":"/barcode-activex"}]},{"header":"Resources","items":[{"label":"Trial downloads","href":"https://taltech.com/support-resources/free-trial-downloads"},{"label":"Software Manuals","href":"https://taltech.com/support-resources/software-manuals-brochures"},{"label":"Supplemental files","href":"https://taltech.com/support-resources/utilities-macros-and-supplemental-files"}]},{"header":"Ordering","items":[{"label":"Ordering options","href":"https://taltech.com/ordering"},{"label":"Online store","href":"https://store.taltech.com/"},{"label":"Purchase orders","href":"https://taltech.com/ordering"},{"label":"Guarantee","href":"https://taltech.com/ordering"},{"label":"Resellers","href":"https://taltech.com/ordering"}]},{"header":"About","items":[{"label":"Contact us","href":"/contact"},{"label":"About us","href":"https://taltech.com/about"},{"label":"Ordering","href":"https://taltech.com/ordering"},{"label":"Policies","href":"https://taltech.com/policies"},{"label":"Testimonials","href":"https://taltech.com/testimonials"},{"label":"Clients","href":"https://taltech.com/industries/clients"}]}]},"search":{"prompt":"Search articles…"},"seo":{"indexing":"all"},"fonts":{"family":"Public Sans"},"icons":{"library":"lucide"},"integrations":{"ga4":{"measurementId":"G-B9095B5PL0"}},"banner":{"content":"**Questions?** Call Sales at **(800) 722-6004** or Support at **(215) 496-0222**"},"contextual":{"options":["copy","chatgpt","view","claude","mcp"],"display":"header"},"thumbnails":{"fonts":{"family":"Public Sans"}},"interaction":{"drilldown":false},"metadata":{"timestamp":true},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Support home","icon":"house","href":"/"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"taltech-bdc45607","hasAudioNarration":false,"actualSubdomain":"taltech-bdc45607","customDomains":["support.taltech.com"],"gitSource":{"type":"github","owner":"taltechnologies","repo":"support-site","deployBranch":"master","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aea58b5cbdb6f4019025293","collectionId":"2220a919-ff2c-46e9-941f-4c9a1fac66ab","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aea58b5cbdb6f4019025293"},"feedback":{"agentFeedback":true},"entitlements":{},"buildId":"6aee232d584f2a80bf024fd2","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"Support articles","count":166},{"language":"default","tag":"WinWedge","count":113},{"language":"default","tag":"B-Coder Pro","count":55},{"language":"default","tag":"Advanced articles","count":54},{"language":"default","tag":"Barcode ActiveX \u0026 DLLs","count":42},{"language":"default","tag":"Troubleshooting","count":32},{"language":"default","tag":"Other DDE macros and code examples","count":20},{"language":"default","tag":"TCP-Com","count":19},{"language":"default","tag":"Excel DDE macro examples","count":18},{"language":"default","tag":"Barcode types","count":17}],"searchSettings":{"maxResults":8,"showContentSnippets":true}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@taltech.com","showHelpButton":true}},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"h1{text-wrap:balance}#content :is(h2,h3,h4,h5,h6){font-weight:650;opacity:0.85}#content .tooltip:has(a[href]){text-decoration:none}#content a:where([href]):not(:where(.card,[href^=\"#\"])){color:var(--support-link-color)}:root{--support-link-color: #09569a;--support-border-color: rgb(0 0 0 / 12%);--support-panel-radius: 12px;--support-raised-fill: linear-gradient(180deg, #f5f6f7 0%, #fff 100%);--support-raised-shadow: 0 0 0 1px rgb(38 49 59 / 14%),\n 0 2px 4px rgb(23 31 38 / 3%),\n 0 8px 24px rgb(23 31 38 / 5%),\n inset 0 1px 0 rgb(255 255 255 / 90%)}.dark{--support-link-color: #84bdfb;--support-border-color: rgb(255 255 255 / 18%);--support-raised-fill: linear-gradient(180deg, #1e2226 0%, #272b2f 100%);--support-raised-shadow: 0 0 0 1px rgb(255 255 255 / 14%),\n 0 2px 4px rgb(0 0 0 / 12%),\n 0 8px 24px rgb(0 0 0 / 18%),\n inset 0 1px 0 rgb(255 255 255 / 5%)}#content :is(.support-start-links a,a.chevron-link){display:inline-block;max-width:100%;border:0;background-image:none;text-decoration:none;font-weight:500}#content :is(.support-start-links a,a.chevron-link)::after{content:\"\\00a0›\";white-space:nowrap;font-size:1.125em;line-height:0;font-weight:400;opacity:0.8}#content :is(.support-start-links a,a.chevron-link):hover{opacity:0.8}#content :is(.support-start-links a,a.chevron-link):focus-visible{outline:2px solid currentColor;outline-offset:4px;border-radius:2px}.card .not-prose{font-size:1.125rem}.card .prose{margin-top:0.5rem}.article-byline{font-size:0.875em;margin-top:2.5rem}#pagination{display:none}:is(#mobile-nav,#sidebar-content) a[target=\"_blank\"]>div>div:has(>svg){flex:0 0 auto}[data-component-part=\"tooltip-content\"]{max-width:min(20rem, calc(100vw - 2rem))}[data-component-part=\"tooltip-tip\"]{color:#000;font-size:0.875rem;line-height:1.5}.dark [data-component-part=\"tooltip-tip\"]{color:#fff}#page-context-menu button[aria-haspopup=\"menu\"]>svg{width:0.875rem;height:0.875rem;color:#000}.dark #page-context-menu button[aria-haspopup=\"menu\"]>svg{color:#fff}#navbar{--nav-control-fill: rgb(0 0 0 / 3%);--nav-control-hover-fill: rgb(0 0 0 / 10%);--nav-search-outline: rgb(0 0 0 / 14%)}.dark #navbar{--nav-control-fill: rgb(255 255 255 / 3%);--nav-control-hover-fill: rgb(255 255 255 / 10%);--nav-search-outline: rgb(255 255 255 / 14%)}#navbar [data-component-part=\"products-selector-trigger\"]{color:#000;height:36px;padding:8px 14px;background-color:var(--nav-control-fill);border-radius:12px;font-weight:500}#navbar [data-component-part=\"products-selector-trigger\"] svg{color:inherit}.dark #navbar [data-component-part=\"products-selector-trigger\"]{color:#fff}#navbar [data-component-part=\"products-selector-trigger\"]:is(:hover,[aria-expanded=\"true\"]){background-color:var(--nav-control-hover-fill)!important}.accordion-group,details.accordion{border-color:var(--support-border-color)}#search-bar-entry,#search-bar-entry-mobile{min-height:38px;color:#000;background-color:var(--nav-control-fill);border:1px solid var(--nav-search-outline);border-radius:12px;font-weight:500}.article-search-trigger{display:flex;align-items:center;gap:0.75rem;width:100%;margin-bottom:1.5rem;padding:0.75rem 1rem;min-height:44px;color:#26313b;background:var(--support-raised-fill);border:0;border-radius:var(--support-panel-radius);box-shadow:var(--support-raised-shadow);font-size:1rem;font-weight:600;text-align:left;cursor:pointer;transition:box-shadow 160ms ease}.article-search-trigger:hover{box-shadow:0 0 0 1px rgb(38 49 59 / 22%),\n 0 2px 5px rgb(23 31 38 / 4%),\n 0 10px 28px rgb(23 31 38 / 7%),\n inset 0 1px 0 rgb(255 255 255 / 90%)}.article-search-trigger svg{flex-shrink:0}#search-bar-entry-mobile{min-width:38px}#search-bar-entry svg{color:inherit}#search-bar-entry-mobile svg{background-color:currentColor}#search-bar-entry:hover,#search-bar-entry-mobile:hover{background-color:var(--nav-control-hover-fill)}#search-bar-entry:focus-visible,#search-bar-entry-mobile:focus-visible,.article-search-trigger:focus-visible{outline:2px solid #0764b9;outline-offset:3px}.dark #search-bar-entry,.dark #search-bar-entry-mobile{color:#fff;filter:none}.dark .article-search-trigger{color:#f1f4f7}.dark .article-search-trigger:hover{box-shadow:0 0 0 1px rgb(255 255 255 / 22%),\n 0 2px 5px rgb(0 0 0 / 16%),\n 0 10px 28px rgb(0 0 0 / 24%),\n inset 0 1px 0 rgb(255 255 255 / 6%)}.dark #search-bar-entry:focus-visible,.dark #search-bar-entry-mobile:focus-visible,.dark .article-search-trigger:focus-visible{outline-color:#84bdfb}#content-area:has(.product-landing){position:relative}#content-area:has(.product-landing) #header{padding-top:3.5rem}#content-area:has(.product-landing) #header>.prose{margin-top:1rem;text-wrap:balance}#content-area:has(.product-landing) #page-title{max-width:30ch;font-size:clamp(2rem, 3vw, 2.5rem);line-height:1.15;letter-spacing:-0.025em}#content:has(.product-landing){position:static;margin-block-start:2.5rem;margin-block-end:0}#body-content:has(.product-landing) #footer>div{padding-block:4rem}#content .support-home-breadcrumb{position:absolute;display:flex;align-items:center;gap:0.625rem;top:0;inset-inline-start:0;font-size:0.875rem;font-weight:400;text-decoration:none;color:inherit}#content .support-home-breadcrumb a{border:0;background:none;text-decoration:none;font-weight:400;color:inherit}#content .support-home-breadcrumb a:hover{text-decoration:underline}#content .support-home-breadcrumb a::after{display:none}#content .support-home-breadcrumb [aria-hidden]{opacity:0.45}#content .support-home-breadcrumb [aria-current]{color:rgb(var(--gray-600))}.dark #content .support-home-breadcrumb [aria-current]{color:rgb(var(--gray-300))}#body-content:has(.product-landing,.support-home-landing) #sidebar-content{display:none}#body-content:has(.product-landing,.support-home-landing) #content-container{max-width:64rem;padding-inline:1.5rem}#content-area:has(.product-landing) #header::before{content:\"\";display:block;height:88px;margin-bottom:1.5rem;background:var(--support-product-artwork);filter:drop-shadow(0 1px 2px rgb(0 0 0 / 7%)) drop-shadow(0 3px 4px rgb(0 0 0 / 4%))}#content-area:has(.product-landing[data-product=\"winwedge\"]){--support-product-artwork:\n url(\"/images/product-icons/WinWedge.svg\") left bottom / 88px 88px no-repeat,\n url(\"/images/product-icons/WinWedge%20Pro.svg\") 104px bottom / 88px 88px no-repeat,\n url(\"/images/product-icons/TCP-Wedge.svg\") 208px bottom / 56px 56px no-repeat}#content-area:has(.product-landing[data-product=\"tcp-com\"]){--support-product-artwork: url(\"/images/product-icons/TCP-Com.svg\") left bottom / 88px 88px no-repeat}#content-area:has(.product-landing[data-product=\"bc-wedge\"]){--support-product-artwork: url(\"/images/product-icons/BC-Wedge.svg\") left bottom / 88px 88px no-repeat}#content-area:has(.product-landing[data-product=\"hid-scalewedge\"]){--support-product-artwork: url(\"/images/product-icons/HID-ScaleWedge.svg\") left bottom / 88px 88px no-repeat}#content-area:has(.product-landing[data-product=\"b-coder\"]){--support-product-artwork: url(\"/images/product-icons/B-Coder.svg\") left bottom / 88px 88px no-repeat}#content-area:has(.product-landing[data-product=\"barcode-activex\"]){--support-product-artwork: url(\"/images/product-icons/Barcode%20ActiveX.svg\") left bottom / 88px 88px no-repeat}.product-landing{display:none}.support-content-band{--support-band-fill: color-mix(in srgb, rgb(var(--background-light)) 98%, black);margin-top:0;padding-block:2.5rem 4rem;background:var(--support-band-fill);box-shadow:0 0 0 100vmax var(--support-band-fill);clip-path:inset(0 -100vmax)}.dark .support-content-band{--support-band-fill: color-mix(in srgb, rgb(var(--background-dark)) 98%, white)}#content .support-start-block{margin:0 0 3rem;display:grid;grid-template-columns:repeat(auto-fit, minmax(min(100%, 15rem), 1fr));gap:2rem;width:100%;max-width:100%;padding:1.5rem;border:0;border-radius:var(--support-panel-radius);background:#fff;box-shadow:var(--support-raised-shadow)}.dark #content .support-start-block{background:rgb(var(--background-dark))}#content .support-content-band>h2{margin:0 0 1rem;font-size:1.5rem;letter-spacing:-0.02em;line-height:1.3}#content .support-content-band>.accordion-group+h3{margin:2.5rem 0 1rem;font-size:1.25rem;letter-spacing:-0.015em;line-height:1.4}#content .support-start-block h3{margin:0 0 0.75rem;font-size:1.125rem;line-height:1.4}#content .support-start-links{display:grid;grid-template-columns:minmax(0, 1fr);gap:0.375rem;line-height:1.5;max-width:40rem;margin:0;padding:0;list-style:none}#content .support-start-links>p{margin:0;padding:0}#content .support-section-description{margin:0 0 1.5rem}#content .support-content-band>.video-collection{margin:0 0 3rem}#content .support-content-band>.article-search-trigger{margin:0 0 1.5rem}#content .support-content-band>.accordion-group{margin-block:0}#content .support-content-band>.accordion-group+.support-contact-panel{margin-block-start:1.5rem}@media (max-width: 639px){.support-content-band{padding-block:2.5rem}#content:has(.product-landing){margin-block-start:2.5rem}#body-content:has(.product-landing) #footer>div{padding-block:2.5rem}#content .support-start-block,#content .support-content-band>.video-collection{margin-block-end:2.5rem}}.support-contact-panel{display:grid;grid-template-columns:minmax(0, 1fr) minmax(0, 2fr);align-items:center;gap:1.25rem 2rem;margin-top:2rem;padding:1.5rem;border:1px solid var(--support-border-color);border-radius:var(--support-panel-radius);background:rgb(var(--background-light))}.dark .support-contact-panel{background:rgb(var(--background-dark))}#content .support-contact-panel h2{margin:0 0 0.25rem;font-size:1.125rem;line-height:1.4}.support-contact-availability{display:grid;gap:0.25rem;font-size:0.875rem;line-height:1.5}#content .philadelphia-time{font-variant-numeric:tabular-nums}.support-contact-availability .philadelphia-time{color:rgb(var(--gray-600))}.dark .support-contact-availability .philadelphia-time{color:rgb(var(--gray-400))}@media (max-width: 639px){.support-contact-panel{grid-template-columns:minmax(0, 1fr)}}.video-collection{--video-caption-background: #343a40;--video-border: var(--support-border-color);--video-fill: rgb(0 0 0 / 3%);--video-hover: rgb(0 0 0 / 6%);--video-selected: rgb(var(--primary) / 8%);--video-link: rgb(var(--primary));--video-muted: rgb(var(--gray-600));--video-background: rgb(var(--background-light));--video-color-scheme: light;--video-scrollbar: rgb(var(--gray-400));margin:1.25rem 0 2rem}.dark .video-collection{--video-caption-background: #1c2024;--video-fill: rgb(255 255 255 / 3%);--video-hover: rgb(255 255 255 / 7%);--video-selected: rgb(var(--primary) / 18%);--video-link: color-mix(in srgb, rgb(var(--primary)) 55%, rgb(var(--gray-100)));--video-muted: rgb(var(--gray-300));--video-background: rgb(var(--background-dark));--video-color-scheme: dark;--video-scrollbar: rgb(var(--gray-600))}.video-collection-layout{display:grid;grid-template-columns:minmax(15rem, 1fr) minmax(0, 2fr);overflow:hidden;border:1px solid var(--video-border);border-radius:var(--support-panel-radius)}.video-collection-list{display:flex;flex-direction:column;min-height:0;contain:size;background:var(--video-fill);border-right:1px solid var(--video-border)}.video-collection-scroll{min-height:0;overflow-y:auto;mask-image:linear-gradient(to bottom,\n transparent,\n black min(40px, var(--video-overflow-start, 0px)),\n black calc(100% - min(40px, var(--video-overflow-end, 0px))),\n transparent);mask-repeat:no-repeat;scrollbar-width:thin;color-scheme:var(--video-color-scheme);scrollbar-color:var(--video-scrollbar) var(--video-background)}.video-collection-scroll:has(:focus-visible){mask-image:none}.video-collection-list-header{flex-shrink:0;position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;padding:0.75rem 0.875rem;border-bottom:1px solid var(--video-border);background:var(--video-background);color:var(--video-muted);font-size:0.8125rem;font-weight:600}.video-collection-item{flex-shrink:0;display:flex;align-items:center;gap:0.75rem;width:100%;padding:0.875rem;border-bottom:1px solid var(--video-border);text-align:left;color:inherit;cursor:pointer;line-height:1.4}.video-collection-item:last-child{border-bottom:0}.video-collection-item:hover{background:var(--video-hover)}.video-collection-item[aria-pressed=\"true\"]{background:var(--video-selected)}.video-collection-item:focus-visible{position:relative;outline:2px solid var(--video-link);outline-offset:-3px;border-radius:4px}.video-collection-thumbnail{position:relative;display:grid;place-items:center;width:5rem;aspect-ratio:16 / 9;flex-shrink:0;overflow:hidden;border-radius:6px;background:#1c1917;color:#fff}.video-collection-thumbnail img{width:100%;height:100%;object-fit:cover}.video-collection-duration{position:absolute;right:3px;bottom:3px;padding:1px 4px;border-radius:3px;background:rgb(0 0 0 / 80%);color:#fff;font-size:0.75rem;line-height:1.4;font-variant-numeric:tabular-nums}.video-collection-item-title{flex:1;min-width:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:0.875rem;font-weight:500}.video-collection-selected{flex-shrink:0;color:var(--video-muted);font-size:0.625rem;visibility:hidden}.video-collection-item[aria-pressed=\"true\"] .video-collection-selected{visibility:visible}.video-collection-current{min-width:0;background:var(--video-caption-background)}.video-collection-player{display:block;width:100%;aspect-ratio:16 / 9;border:0;background:#000}.video-collection-caption{--support-link-color: #a8d2ff;padding:1rem 1.125rem;color:#f5f7fa}.video-collection-title{margin:0;font-size:1rem;font-weight:600;line-height:1.5}.video-collection-article,.video-collection-all{font-size:0.8125rem;line-height:1.5}.video-collection-article{margin-top:0.5rem}.video-collection-all{margin-top:0.875rem}@media (max-width: 767px){.video-collection-layout{grid-template-columns:minmax(0, 1fr)}.video-collection-list{contain:none;max-height:18rem;border-right:0;border-top:1px solid var(--video-border)}.video-collection-item{padding:0.75rem}.video-collection-thumbnail{width:5.5rem}.video-collection-selected{display:none}}#content a.support-product-link{color:inherit;border:0;text-decoration:none}#content a.support-product-link>span[aria-hidden]{filter:drop-shadow(0 1px 2px rgb(0 0 0 / 7%)) drop-shadow(0 3px 4px rgb(0 0 0 / 4%))}#content a.support-product-link:hover{color:var(--support-link-color)}#content a.support-product-link:focus-visible{outline:2px solid currentColor;outline-offset:4px;border-radius:4px}#content .support-product-subtitle{margin:0.125rem 0 0;line-height:1.35;color:rgb(var(--gray-600))}.dark #content .support-product-subtitle{color:rgb(var(--gray-300))}#content:has(.support-home-landing){margin-block-end:0}#content:has(.support-home-landing)>.support-content-band{margin-block-start:2.5rem}#content:has(.support-home-landing) .support-content-band>h2{margin-block-start:3rem}#body-content:has(.support-home-landing) #footer>div{padding-block:4rem}#content:has(.support-home-landing) .support-content-band>h2:first-child{margin-block-start:0}"}],"page":{"pagePath":"winwedge/basic-inventory-tracking-example-database","slug":"/winwedge/basic-inventory-tracking-example-database","pageMetadata":{"title":"Basic inventory tracking example database","description":"Try a sample Access database that uses WinWedge and a barcode scanner to look up products and update stock counts.","source_url":"https://www.taltech.com/support/basic_inventory_tracking_example_database/","products":["WinWedge","Barcode ActiveX"],"keywords":["WinWedge Access inventory sample","barcode scanner stock lookup","increment decrement inventory quantity","Access barcode inventory refresh interval"],"href":"/winwedge/basic-inventory-tracking-example-database"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Try a sample Access database that uses WinWedge and a barcode scanner to look up products and update stock counts.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,em:`em`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,OptimizedImage}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`setup-for-winwedge`,children:`Setup for WinWedge`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Select “Send Keystrokes to…” from the “Mode” menu in the Wedge, then enter: “`,_jsx(_components.strong,{children:`Microsoft Access`}),`” as the Application Name and leave the “Command Line” box blank.`]}),`\n`,_jsx(_components.li,{children:`Set up the rest of the Wedge as needed for your barcode scanner and then activate it.`}),`\n`,_jsx(_components.li,{children:`Note: You could also use BC-Wedge or a barcode scanner with a keyboard Wedge with this application.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`using-the-access-sample`,children:`Using the Access sample`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`What does this example do?`})}),`\n`,_jsx(_components.p,{children:`This example demonstrates how to use Access in conjunction with a barcode scanner to look up product information and increment/decrement how many of that product are currently in stock.`}),`\n`,_jsx(_components.p,{children:`It is important to realize that this is just a sample of how you could implement an application of this sort. It is extremely unlikely that you would be able to use it “out of the box” to manage your inventory. While it is of course possible to change the values of the table (which currently lists TALtech’s products) to display your own products, the addition of new fields or renaming of existing fields will require a number of modifications to each of the forms, queries and subroutines in the database.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://www.taltech.com/files/Inventory2000.zip`,children:`Download the Inventory Sample for Access`}),`.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Why use keystrokes mode instead of DDE?`})}),`\n`,_jsx(_components.p,{children:`While it is possible to do this entirely through code and using DDE, there is really no advantage to doing so. The main advantage of using DDE with Access is simply to allow the operation to run reliably in the background (allowing you to work in other applications in the foreground while the data is quietly logged into a table for you to look at and analyze later), or to use multiple serial devices that transmit data at the same time.`}),`\n`,_jsx(_components.p,{children:`In an inventory application where you are scanning a barcode into your computer simply to retrieve information about a product, the Access application will need to be in the foreground to display the result and it is therefore unlikely that you would be using the PC for any other tasks at that time.`}),`\n`,_jsx(_components.p,{children:`It is equally unlikely that you would have two scanners connected to the same PC as Access allows multiple users to modify data at the same time so you could just as easily connect a single scanner to multiple PCs all of which are configured in keystrokes mode and updating data in the same database.`}),`\n`,_jsx(_components.p,{children:`All of the lookups and updates to the data in our example are done using queries rather than DAO code. These are much easier to manage, and anybody with a basic understanding of Access should be able to see at a glance how they work and modify them to meet their needs. Those same people may have little or no understanding of how to use VBA, DAO and other programming knowledge.`}),`\n`,_jsx(_components.p,{children:`Above all else, why spend hours writing code when you can achieve exactly the same end result using a query that took just minutes to set up?`}),`\n`,_jsx(Heading,{level:`2`,id:`how-it-works`,children:`How it works`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Tables`})}),`\n`,_jsxs(_components.p,{children:[`Our example has only one table,\\xA0`,_jsx(_components.em,{children:`tblProducts`}),`, which contains just four fields – Product ID, Description, List Price, Quantity In Stock. In the real world, most databases would use more than one table to take advantage of Access’ relational database capabilities, but the principles are the same.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Forms`})}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/taltech-bdc45607/EjQcUno1Qb-6jNfg/images/frmAddEdit.gif?s=26571caeb074937fafd1177f6a3adfdd`,alt:`frmAddEdit form showing Product, Description, List Price, and In Stock fields for record AX1D10`,\"data-og-width\":`330`,width:`330`,\"data-og-height\":`153`,height:`153`,\"data-path\":`images/frmAddEdit.gif`,\"data-optimize\":`true`,\"data-opv\":`3`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.em,{children:`frmAddEdit`}),`\\xA0is a simple form bound to `,_jsx(_components.em,{children:`tblProducts`}),`. This form allows you to add, edit and browse through the records in our table.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/taltech-bdc45607/EjQcUno1Qb-6jNfg/images/frmLookup.gif?s=7d2430c5e6e3c476be24fc243b9d2ec0`,alt:`frmLookup form in Keystrokes Mode with an Enter Product Number field ready for a scanned barcode`,\"data-og-width\":`325`,width:`325`,\"data-og-height\":`197`,height:`197`,\"data-path\":`images/frmLookup.gif`,\"data-optimize\":`true`,\"data-opv\":`3`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.em,{children:`frmLookup`}),` will look up the information in the table for the Product ID that you scanned in and display it in the format below:`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/taltech-bdc45607/EjQcUno1Qb-6jNfg/images/qryLookup.gif?s=d552104f408861ee7bd781e3506d5b6f`,alt:`qryLookup query results showing Product, Description, List Price, and InStock columns for the scanned item`,\"data-og-width\":`477`,width:`477`,\"data-og-height\":`125`,height:`125`,\"data-path\":`images/qryLookup.gif`,\"data-optimize\":`true`,\"data-opv\":`3`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.em,{children:`frmChangeStatus`}),`\\xA0allows you to increment or decrement the number of the scanned/selected item currently in stock and displays the current number of in stock items. When the “Mode” is set to Increment, the number of in stock items will increase by one and when set to Decrement it will decrease by one.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/taltech-bdc45607/EjQcUno1Qb-6jNfg/images/frmChangeStatus.gif?s=156c4e5fd3b9dbda898ff4059ec9c0c9`,alt:`frmChangeStatus form with a Product Number field and Increment or Decrement mode options`,\"data-og-width\":`331`,width:`331`,\"data-og-height\":`246`,height:`246`,\"data-path\":`images/frmChangeStatus.gif`,\"data-optimize\":`true`,\"data-opv\":`3`}),`\n`,_jsx(_components.p,{children:`Note: While the value in the table is immediately changed, you may not see the form (or table if you have it open) update with the new stock value for up to 60 seconds due to the default refresh rate in Access. To change the refresh rate, go to Tools > Options > Advanced and change the “Refresh Interval (sec)” value to just 1 or 2 seconds.`}),`\n`,_jsx(Heading,{level:`2`,id:`how-it-works-behind-the-scenes`,children:`How it works (behind the scenes)`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.em,{children:`frmAddEdit`}),`\\xA0does not use any code and is simply bound directly to the table. This form was created using the New Form Wizard in Access and should not require any further explanation.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.em,{children:`frmLookup`}),`\\xA0uses a simple query by form method to ‘look up’ and return the matching data from the table. If you open qryLookup in Design View, you will see that in the criteria section of the Product field it has a link to the drop-down box on the form:`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/taltech-bdc45607/90dE9DPyCdPJ5zuC/images/DqryLookup.gif?s=47b89cad2f4a6609441467f74f207ec4`,alt:`qryLookup in Design View with the Product field criteria linked to the frmLookup drop-down box`,\"data-og-width\":`467`,width:`467`,\"data-og-height\":`282`,height:`282`,\"data-path\":`images/DqryLookup.gif`,\"data-optimize\":`true`,\"data-opv\":`3`}),`\n`,_jsx(_components.p,{children:`(If you try to run it without frmLookUp open, it will prompt you for a Product ID). Most of the code behind this form (and in the database as a whole) was written by the Access Wizards when the forms were designed, but to make it a little more robust we added some ourselves such as the code to highlight the text in the drop-down box ready for the next scan (to make sure the code is overwritten rather than having the next scan appear beside it). We used the After Update Event of the drop-down box on the form to run this query. Since the drop-down box is the only control that can receive focus on this form, it can be scanned into repeatedly without any special code or settings to move the focus to the right place after each scan.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.em,{children:`frmChangeStatus`}),`\\xA0takes the query by form method a step further: as well as using criteria based on the value of the drop-down box it also uses an expression to add the value of the option group to the number of that item currently in stock. The “Mode” Option group has values of 1 and -1 so when added to the current number in stock it will increment or decrement it. You could of course change the values of the mode option group or add a text box allowing the user to type in the number to add or subtract from stock or simply to log an item’s status as in or out.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/taltech-bdc45607/EjQcUno1Qb-6jNfg/images/qryChangeStat.gif?s=2fb52bfffc6589b9e07b2ff79e000853`,alt:`qryChangeStatus update query in Design View updating the InStock field for the selected product`,\"data-og-width\":`523`,width:`523`,\"data-og-height\":`285`,height:`285`,\"data-path\":`images/qryChangeStat.gif`,\"data-optimize\":`true`,\"data-opv\":`3`}),`\n`,_jsx(_components.p,{children:`The Change Status form has more than one control on it, so to prevent focus being shifted to any of the other controls only the drop-down box has its tab stop property set to yes. This prevents the cursor accidentally being shifted to another control between scans. The After Update Event of the drop-down box runs the query, seeks out the record for the selected product and displays the current stock count and then highlights the selected text ready for the next scan. Again, apart from highlighting the text, 90% of this code was written by the Access wizards.`}),`\n`,_jsx(_components.p,{children:`In an effort to ensure you receive as few errors or warnings as possible the warning that “You are about to run an action query, 1 row(s) will be affected…” is temporarily disabled at the top of the After Update subroutine and then re-enabled at the bottom.`}),`\n`,_jsx(_components.p,{children:`Finally, there is also some code to set the focus back to the combo box after changing the mode (to be sure that as little intervention as possible by the operator is required) in order to set it up ready for the next scan.`}),`\n`,_jsx(_components.p,{children:`There is only one module in this database and this contains a routine taken directly from the NorthWind Database example that ships with Access. Its purpose is simply to test to see if a form is loaded. We use it here to close the Add/Edit form before running the update query. This isn’t necessary, but if the Add/Edit form is open to the record that the update query is updating you may get a warning that the record you are editing is open by another user and may need re-editing.`}),`\n`,_jsx(Heading,{level:`2`,id:`customizing-the-sample-database`,children:`Customizing the sample database`}),`\n`,_jsx(_components.p,{children:`While we recommend you start from scratch with your own database and just refer to our sample as a guide, if you fully understand how our sample works it is certainly possible that you could save a little time by simply deleting our data, adding your own field names and redesigning the forms and queries. In order to give you some idea of what would need changing, let’s assume you plan to make the following changes:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Add a Field to the table`}),`\n`,_jsx(_components.li,{children:`Rename the Product Field to ProductID`}),`\n`,_jsx(_components.li,{children:`Change the increment/decrement values to add and subtract 10 at a time.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`This sounds easy enough, but take a look at how many items would need to be changed:`}),`\n`,_jsx(_components.p,{children:`After making your changes to the table design, you would need to open both of the queries and change the names of the Product field to ProductID and drag the new field onto the grid. Then you would need to open all three of the forms and change the Product Field’s control source property, change the row source property of the drop-down box, and drag the new field onto the Add/Edit Form. Assuming that you did not change the name of the drop-down box you should not have to modify the code behind it. Finally you would need to change the option values of the “Mode” Option group from 1 and -1 to 10 and -10 on the Change Status form.`}),`\n`,_jsx(_components.p,{children:`Missing any of these items would result in the database no longer working as it should and possibly tearing your hair out trying to figure out why. In many cases it would take longer to figure out what you missed than it would to have built a new database from scratch. For this reason, it is generally easier to start by building a new database to your own specifications rather than trying to bend and shape our sample to meet your needs.`}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`When I scan the data into the Change Status form the stock number does not change.`})}),`\n`,_jsx(_components.p,{children:`While the value in the table is immediately changed, you may not see the form (or table if you have it open) update with the new stock value for up to 60 seconds due to the default refresh rate in Access. To change the refresh rate, go to Tools > Options > Advanced and change the “Refresh Interval (sec)” value to just 1 or 2 seconds.`}),`\n`,_jsx(_components.p,{children:_jsxs(_components.strong,{children:[`When I scan the data into the Change Status form in quick succession I get the error:\\xA0`,_jsx(_components.em,{children:`“The data has been changed. Another user edited this record and saved the changes before you attempted to save your changes. Re-edit the record.”`})]})}),`\n`,_jsx(_components.p,{children:`This is also due to the default refresh rate in Access. To change the refresh rate, go to Tools > Options > Advanced and change the “Refresh Interval (sec)” value to just 1 or 2 seconds.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Basic inventory tracking example database","description":"Try a sample Access database that uses WinWedge and a barcode scanner to look up products and update stock counts.","source_url":"https://www.taltech.com/support/basic_inventory_tracking_example_database/","products":["WinWedge","Barcode ActiveX"],"keywords":["WinWedge Access inventory sample","barcode scanner stock lookup","increment decrement inventory quantity","Access barcode inventory refresh interval"],"href":"/winwedge/basic-inventory-tracking-example-database"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Setup for WinWedge","slug":"setup-for-winwedge","depth":2,"children":[]},{"title":"Using the Access sample","slug":"using-the-access-sample","depth":2,"children":[]},{"title":"How it works","slug":"how-it-works","depth":2,"children":[]},{"title":"How it works (behind the scenes)","slug":"how-it-works-behind-the-scenes","depth":2,"children":[]},{"title":"Customizing the sample database","slug":"customizing-the-sample-database","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/taltech-bdc45607/eec41a6a835842e1/search.js"],"subdomain":"taltech-bdc45607","siteName":"TALtech Support","title":"Basic inventory tracking example database - TALtech Support","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-03T21:57:22.530Z","gitLastModified":"2026-11-03T21:57:05.000Z","originalFileLocation":"winwedge/basic-inventory-tracking-example-database.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Try a sample Access database that uses WinWedge and a barcode scanner to look up products and update stock counts.\">\u003cmeta data-mint-head name=\"application-name\" content=\"TALtech Support\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/taltech-bdc45607/YFqszPMCzxP0Sxv6/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/taltech-bdc45607/YFqszPMCzxP0Sxv6/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/taltech-bdc45607/YFqszPMCzxP0Sxv6/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/taltech-bdc45607/YFqszPMCzxP0Sxv6/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/taltech-bdc45607/YFqszPMCzxP0Sxv6/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/taltech-bdc45607/YFqszPMCzxP0Sxv6/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/taltech-bdc45607/YFqszPMCzxP0Sxv6/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/taltech-bdc45607/YFqszPMCzxP0Sxv6/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/taltech-bdc45607/YFqszPMCzxP0Sxv6/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Basic inventory tracking example database - TALtech Support\">\u003cmeta data-mint-head property=\"og:description\" content=\"Try a sample Access database that uses WinWedge and a barcode scanner to look up products and update stock counts.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"TALtech Support\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://support.taltech.com/winwedge/basic-inventory-tracking-example-database\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://taltech-bdc45607.mintlify.site/_mintlify/api/og/v2?division=Access+DDE+macro+examples\u0026amp;title=Basic+inventory+tracking+example+database\u0026amp;description=Try+a+sample+Access+database+that+uses+WinWedge+and+a+barcode+scanner+to+look+up+products+and+update+stock+counts.\u0026amp;theme=f8e61b9561bcdbc21b6abc28\u0026amp;signature=bd2bd0135f0a5f0936ab14d8981e44af402a819b4dbad61a2576bde200a20adf\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Basic inventory tracking example database - TALtech Support\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Try a sample Access database that uses WinWedge and a barcode scanner to look up products and update stock counts.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://taltech-bdc45607.mintlify.site/_mintlify/api/og/v2?division=Access+DDE+macro+examples\u0026amp;title=Basic+inventory+tracking+example+database\u0026amp;description=Try+a+sample+Access+database+that+uses+WinWedge+and+a+barcode+scanner+to+look+up+products+and+update+stock+counts.\u0026amp;theme=f8e61b9561bcdbc21b6abc28\u0026amp;signature=bd2bd0135f0a5f0936ab14d8981e44af402a819b4dbad61a2576bde200a20adf\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/taltech-bdc45607/YFqszPMCzxP0Sxv6/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"TALtech Support\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0764B9\">\u003clink data-mint-head rel=\"canonical\" href=\"https://support.taltech.com/winwedge/basic-inventory-tracking-example-database\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/winwedge/basic-inventory-tracking-example-database.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://support.taltech.com/#organization\",\"name\":\"TALtech Support\",\"url\":\"https://support.taltech.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/taltech-bdc45607/x77iB9KQeUuF5CKJ/images/brand/Logo.svg?fit=max\u0026auto=format\u0026n=x77iB9KQeUuF5CKJ\u0026q=85\u0026s=281267d1812ad821819e27a3fc4627a8\"}},{\"@type\":\"WebSite\",\"@id\":\"https://support.taltech.com#website\",\"name\":\"TALtech Support\",\"url\":\"https://support.taltech.com\",\"publisher\":{\"@id\":\"https://support.taltech.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://support.taltech.com/winwedge/basic-inventory-tracking-example-database#webpage\",\"url\":\"https://support.taltech.com/winwedge/basic-inventory-tracking-example-database\",\"name\":\"Basic inventory tracking example database\",\"description\":\"Try a sample Access database that uses WinWedge and a barcode scanner to look up products and update stock counts.\",\"dateModified\":\"2026-11-03T21:57:05.000Z\",\"isPartOf\":{\"@id\":\"https://support.taltech.com#website\"},\"breadcrumb\":{\"@id\":\"https://support.taltech.com/winwedge/basic-inventory-tracking-example-database#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://support.taltech.com/winwedge/basic-inventory-tracking-example-database#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Advanced articles\",\"item\":\"https://support.taltech.com/winwedge/keystrokes-vs-dde\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Basic inventory tracking example database\",\"item\":\"https://support.taltech.com/winwedge/basic-inventory-tracking-example-database\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://support.taltech.com/winwedge/basic-inventory-tracking-example-database#article\",\"headline\":\"Basic inventory tracking example database\",\"name\":\"Basic inventory tracking example database\",\"description\":\"Try a sample Access database that uses WinWedge and a barcode scanner to look up products and update stock counts.\",\"url\":\"https://support.taltech.com/winwedge/basic-inventory-tracking-example-database\",\"mainEntityOfPage\":{\"@id\":\"https://support.taltech.com/winwedge/basic-inventory-tracking-example-database#webpage\"},\"dateModified\":\"2026-11-03T21:57:05.000Z\",\"keywords\":\"WinWedge Access inventory sample, barcode scanner stock lookup, increment decrement inventory quantity, Access barcode inventory refresh interval\",\"publisher\":{\"@id\":\"https://support.taltech.com/#organization\"},\"isPartOf\":{\"@id\":\"https://support.taltech.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"TALtech Support\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"TALtech Support","nav":{"global":{"anchors":[{"anchor":"Support home","icon":"house","href":"/"}]},"products":[{"product":"Support home","icon":"life-buoy","color":{"light":"#0F52BA","dark":"#3271D0"},"pages":[{"title":"Support home","href":""}]},{"product":"WinWedge","icon":"https://mintlify.s3.us-west-1.amazonaws.com/taltech-bdc45607/images/product-icons/WinWedge.svg","color":{"light":"#a38915","dark":"#a38915"},"pages":[{"title":"WinWedge, WinWedge Pro, and TCP‑Wedge Support","sidebarTitle":"WinWedge / TCP-Wedge support home","mode":"center","href":"/winwedge"},{"group":"Support articles","pages":[{"group":"Quick start","expanded":false,"pages":[{"title":"WinWedge setup and quick start guide","sidebarTitle":"WinWedge quick start guide","href":"/winwedge/winwedge-quick-start"},{"title":"TCP-Wedge setup and quick start guide","sidebarTitle":"TCP-Wedge quick start guide","href":"/winwedge/tcp-wedge-quick-start-guide"},{"title":"The difference between WinWedge and TCP-Wedge","sidebarTitle":"The difference between WinWedge and TCP-Wedge","href":"/winwedge/tcpwedge-winwedge-differences"},{"title":"Common device settings for WinWedge configuration","sidebarTitle":"Common device settings for WinWedge configuration","href":"/winwedge/device-settings-and-saved-configuration-files"},{"title":"How to move WinWedge or WinWedge Pro to a new PC","sidebarTitle":"Move WinWedge to a new PC","href":"/winwedge/move-winwedge-to-a-new-pc"},{"title":"WinWedge video tutorials","sidebarTitle":"Video tutorials","href":"/winwedge/video-tutorials"},{"title":"What is WinWedge?","href":"/winwedge/what-is-winwedge"},{"title":"WinWedge compatible devices","href":"/winwedge/winwedge-compatible-devices"},{"title":"WinWedge “start here” tutorial","mode":"wide","href":"/winwedge/winwedge-start-here-tutorial"}]},{"group":"Windows 11","boost":2,"expanded":false,"pages":[{"title":"WinWedge Windows 11 compatibility guide","href":"/winwedge/winwedge-windows-11-compatibility-guide"},{"title":"WinWedge stopped typing data into applications after a Windows 11 update","sidebarTitle":"No keystrokes after Windows 11 update","href":"/winwedge/winwedge-stopped-sending-keystrokes-after-windows-11-update"}]},{"group":"Troubleshooting","boost":2,"expanded":false,"pages":[{"title":"Device data is missing or unreadable","sidebarTitle":"Device data is missing or unreadable","href":"/winwedge/device-data-is-missing-or-unreadable"},{"title":"WinWedge not sending data to Excel or another application","sidebarTitle":"Data appears in Analyze window but does not show up after activation","href":"/winwedge/data-appears-in-analyze-window-but-does-not-show-up-after-activation"},{"title":"Unrecognizable data in the Analyze window","sidebarTitle":"Unrecognizable data in the Analyze window","href":"/winwedge/unrecognizable-data-in-the-analyze-window"},{"title":"No data appears in the Analyze window","sidebarTitle":"No data appears in the Analyze window","href":"/winwedge/no-data-appears-in-the-analyze-window"},{"title":"Data is automatically entered into Notepad","sidebarTitle":"Data is automatically entered into Notepad","href":"/winwedge/data-is-automatically-entered-into-notepad"},{"title":"COM port does not exist","href":"/winwedge/com-port-does-not-exist"},{"title":"COM port from adapter no longer works after upgrading to Windows 11","sidebarTitle":"COM port from adapter no longer works after upgrading to Windows 11","href":"/winwedge/com-port-from-adapter-no-longer-works-after-upgrading-to-windows-11"},{"title":"Data cannot be entered into a userform in Excel","sidebarTitle":"Data cannot be entered into a user form in Excel","href":"/winwedge/data-cannot-be-entered-into-a-userform-in-excel"},{"title":"Disabling Windows detection of serial mice to fix “COM port not available” errors","sidebarTitle":"Disabling Windows detection of serial mice to fix “COM port not available” errors","href":"/winwedge/windows-2000-nt-serial-mice-and-missing-com-port"},{"title":"Lost data when running multiple instances of WinWedge in Microsoft Access","sidebarTitle":"Lost data when running multiple instances of WinWedge in Microsoft Access","href":"/winwedge/lost-data-when-running-multiple-instances-of-winwedge-in-microsoft-access"},{"title":"Leading zeroes are truncated when using WinWedge in DDE mode with Excel","sidebarTitle":"Leading zeroes are truncated when using WinWedge in DDE mode with Excel","href":"/winwedge/leading-zeroes-are-truncated-when-using-winwedge-in-dde-mode-with-excel"},{"title":"WinWedge error messages index","sidebarTitle":"WinWedge error messages index","href":"/winwedge/winwedge-error-messages-index"},{"title":"Custom hotkey or keyboard shortcut not working","href":"/winwedge/custom-hotkey-or-keyboard-shortcut-not-working"},{"title":"First character is removed while using WinWedge in keystrokes mode","href":"/winwedge/first-character-is-removed-while-using-winwedge-in-keystrokes-mode"},{"title":"Installation error: “setup cannot copy the file setup1.ex_ …”","href":"/winwedge/installation-error-setup-cannot-copy-the-file-setup1-ex2"}]},{"group":"Filtering and formatting your data","boost":2,"expanded":false,"pages":[{"title":"Understanding your scale or device data structure for WinWedge configuration","sidebarTitle":"Understanding your device’s data","href":"/winwedge/understanding-your-scale-or-device-data-structure-for-winwedge-configuration"},{"title":"Adding a date and time stamp to data","sidebarTitle":"Adding date and time stamps to your data","href":"/winwedge/adding-a-date-and-time-stamp-to-data"},{"title":"Using the pre-input character translation table","sidebarTitle":"Using the pre-input character translation table","href":"/winwedge/using-the-pre-input-character-translation-table"},{"title":"Defining fewer data fields than are actually received","sidebarTitle":"Defining fewer data fields than are actually received","href":"/winwedge/defining-fewer-data-fields-than-are-actually-recieved"},{"title":"Defining more data fields than are actually received","sidebarTitle":"Defining more data fields than are actually received","href":"/winwedge/defining-more-data-fields-than-are-actually-received"},{"title":"Dealing with devices that output data continuously","sidebarTitle":"Dealing with devices that output data continuously","href":"/winwedge/dealing-with-devices-that-output-data-continuously"},{"title":"Converting binary data to decimal","sidebarTitle":"Converting binary data to decimal","href":"/winwedge/coverting-binary-data-to-decimal"},{"title":"Defining keystrokes and keystroke macros in WinWedge","href":"/winwedge/defining-keystrokes-and-keystroke-macros-in-winwedge"}]},{"group":"Hotkeys and device commands","boost":2,"expanded":false,"pages":[{"title":"Sending output commands to your device","sidebarTitle":"Sending output commands to your device","href":"/winwedge/setting-up-output-commands-to-your-device"},{"title":"Defining hot keys and actions","sidebarTitle":"Defining hot keys and actions","href":"/winwedge/defining-hotkeys"},{"title":"Invoking hot keys in other applications","sidebarTitle":"Invoking hot keys in other applications","href":"/winwedge/invoking-hot-keys-in-other-applications"},{"title":"Copy and paste from ‘output field’ in Analyze window","sidebarTitle":"Copy and paste from ‘output field’ in Analyze window","href":"/winwedge/copy-and-paste-from-output-field-in-analyze-window"}]},{"group":"Serial and network connections","boost":2,"expanded":false,"pages":[{"title":"RS232 and serial communications","sidebarTitle":"RS232 and serial communications","href":"/winwedge/serial-intro"},{"title":"What to do if your PC has no RS232 ports","sidebarTitle":"What to do if your PC has no RS232 ports","href":"/winwedge/what-to-do-if-your-pc-has-no-rs232-ports"},{"title":"Identify your device’s COM port with Device Manager","sidebarTitle":"Identify your device’s COM port with Device Manager","href":"/winwedge/identify-com-port"},{"title":"Connecting scales, balances, and other devices to PCs","sidebarTitle":"Connecting scales, balances, and other devices to PCs","href":"/winwedge/connecting-scales-balances-and-other-devices-to-pcs"},{"title":"A brief overview of TCP/IP communications","sidebarTitle":"A brief overview of TCP/IP communications","href":"/winwedge/a-brief-overview-of-tcp-ip-communications"},{"title":"Connecting a serial device to a TCP/IP network","sidebarTitle":"Connecting a serial device to a TCP/IP network","href":"/winwedge/interfacing-rs232-to-tcp-ip"},{"title":"Connecting to a serial or networked device over the Internet","sidebarTitle":"Connecting to a serial or networked device over the internet","href":"/winwedge/sending-and-receiving-serial-data-over-the-internet"},{"title":"Recommended hardware","sidebarTitle":"Recommended hardware","href":"/winwedge/recommended-hardware"},{"title":"Sartorius balance cable pinouts","href":"/winwedge/sartorius-balance-cable-pinouts"}]},{"group":"Other articles","expanded":false,"pages":[{"title":"Delaying WinWedge startup when using with TCP-Com","sidebarTitle":"Delaying WinWedge startup when using with TCP-Com","href":"/winwedge/delaying-winwedge-startup-when-using-with-tcp-com"},{"title":"21 CFR 11 compliance with WinWedge","sidebarTitle":"21 CFR 11 compliance with WinWedge","href":"/winwedge/21-cfr-11"},{"title":"Quality control automation","sidebarTitle":"Quality control automation","href":"/winwedge/quality-control-auto"},{"title":"Running WinWedge as a Windows service","sidebarTitle":"Running WinWedge as a Windows service","href":"/winwedge/running-winwedge-as-a-windows-nt-service"},{"title":"Automatically running WinWedge on PC startup or with a specific configuration","href":"/winwedge/automatically-running-winwedge-on-pc-startup-or-with-a-specific-configuration"},{"title":"Can WinWedge be used to implement Modbus protocols?","href":"/winwedge/can-winwedge-be-used-to-implement-modbus-protocols"},{"title":"Capturing data to CSV files with WinWedge","href":"/winwedge/capturing-data-to-csv-files-with-winwedge"}]}]},{"group":"Advanced articles","pages":[{"group":"Dynamic Data Exchange (DDE)","boost":2,"expanded":false,"pages":[{"title":"Keystrokes mode and DDE mode","sidebarTitle":"Keystrokes mode and DDE mode","href":"/winwedge/keystrokes-vs-dde"},{"title":"Running WinWedge in the background","sidebarTitle":"Running WinWedge in the background","href":"/winwedge/running-winwedge-in-the-background"},{"title":"Understanding DDE","sidebarTitle":"Understanding DDE","href":"/winwedge/understanding-dynamic-data-exchange"},{"title":"Overview of DDE and WinWedge","sidebarTitle":"Overview of DDE and WinWedge","href":"/winwedge/dde-winwedge"},{"title":"DDE Server Mode setup guide","sidebarTitle":"“DDE server mode” setup guide","href":"/winwedge/dde-server-mode-setup-guide"},{"title":"WinWedge DDE commands","sidebarTitle":"WinWedge DDE commands","href":"/winwedge/winwedge-dde-comm"},{"title":"DDE command tester","sidebarTitle":"DDE command tester","href":"/winwedge/dde-command-tester"},{"title":"Logging to a file while passing data to other programs via DDE","sidebarTitle":"Logging to a file while passing data to other programs via DDE","href":"/winwedge/logging-to-a-file-while-passing-data-to-other-programs-via-dde"},{"title":"Collecting data from multiple devices simultaneously","href":"/winwedge/collecting-data-from-multiple-devices"},{"title":"Continually polling multiple devices in sequence","href":"/winwedge/continually-polling-multiple-devices"},{"title":"Requesting data from WinWedge using SetLinkOnData method","href":"/winwedge/requesting-data-while-in-keystrokes-mode"}]},{"group":"Excel DDE macro examples","boost":2,"expanded":false,"pages":[{"title":"Collect data into Excel using WinWedge DDE mode","href":"/winwedge/collect-data-into-excel-using-winwedge-dde-mode"},{"title":"Finding the first empty cell in a column","sidebarTitle":"Finding the first empty cell in a column","href":"/winwedge/finding-the-first-empty-cell-in-a-column"},{"title":"Creating a dynamic chart in Excel","sidebarTitle":"Creating a dynamic chart in Excel","href":"/winwedge/creating-a-dynamic-chart-in-excel"},{"title":"Introduction to Excel (and VBA) macros","sidebarTitle":"Introduction to Excel (and VBA) macros","href":"/winwedge/introduction-to-excel-and-vba-macros"},{"title":"How to enable the Developer tab in Microsoft Excel","sidebarTitle":"How to enable the Developer tab in Microsoft Excel","href":"/winwedge/how-to-enable-the-developer-tab-in-microsoft-excel"},{"title":"Advanced Excel tricks: reading large arrays of data into Excel","sidebarTitle":"Advanced Excel tricks: reading large arrays of data into Excel","href":"/winwedge/advanced-excel-tricks-reading-large-arrays-of-data-into-excel"},{"title":"Creating a dynamic chart in Excel 97 – 2003","sidebarTitle":"Creating a dynamic chart in Excel 97 – 2003","href":"/winwedge/creating-a-chart"},{"title":"Collecting a single field of data into Excel","href":"/winwedge/collecting-a-single-field-of-data-into-excel"},{"title":"Collecting multiple consecutive fields of data into Excel","href":"/winwedge/collecting-multiple-fields-of-data-into-excel"},{"title":"Getting past the 40 field limit in WinWedge","href":"/winwedge/getting-past-the-40-field-limit-in-winwedge"},{"title":"Insert data into top row and move previous readings down","href":"/winwedge/insert-top-row"},{"title":"Introduction to VBA (and VBScript)","href":"/winwedge/introduction-to-vba-and-vbscript"},{"title":"Launch a program from a macro in Excel","href":"/winwedge/launch-a-program-from-a-macro-in-excel"},{"title":"Launching WinWedge from within Excel","href":"/winwedge/launching-winwedge-from-an-excel-macro"},{"title":"Passing data from WinWedge to Excel using DDE with multiple open workbooks","href":"/winwedge/passing-data-from-winwedge-to-excel-using-dde-with-multiple-open-workbooks"},{"title":"Sending commands from Excel to a device","href":"/winwedge/sending-dde-commands-from-excel"},{"title":"VBA if statements: using control structures to make decisions","href":"/winwedge/vba-if-statements-using-control-structures-to-make-decisions"},{"title":"VBA: repeating code with control structures","description":"Learn how loop statements let a VBA macro repeat steps, for macros used with WinWedge's more advanced DDE mode.","href":"/winwedge/vba-repeating-code-with-control-structures"}]},{"group":"Access DDE macro examples","boost":2,"expanded":false,"pages":[{"title":"Basic inventory tracking example database","href":"/winwedge/basic-inventory-tracking-example-database"},{"title":"Opening and closing WinWedge in Access","description":"Open and close WinWedge automatically from a Microsoft Access database, for setups that use WinWedge's more advanced DDE mode.","href":"/winwedge/closing-and-opening-winwedge-access"},{"title":"Collecting data directly into a form in Access","href":"/winwedge/collecting-data-directly-into-a-form-in-access"},{"title":"Collecting data directly into a table in Access","href":"/winwedge/collecting-data-directly-into-a-table-in-access"},{"title":"Transmitting commands to devices from Access","href":"/winwedge/transmitting-commands-to-devices-from-access"}]},{"group":"Other DDE macros and code examples","boost":2,"expanded":false,"pages":[{"title":"Macros for Excel, Access, and Word","sidebarTitle":"Macros for Excel, Access, and Word","href":"/winwedge/macros-for-excel-access-and-word"},{"title":"Macros for other applications","sidebarTitle":"Macros for other applications","href":"/winwedge/macros-for-other-applications"},{"title":"Code samples for WinWedge (Visual Basic, C++, and .NET)","sidebarTitle":"Code samples for WinWedge (Visual Basic, C++, and .NET)","href":"/winwedge/code-samples-for-winwedge-visual-basic-c-and-net"},{"title":"Using WinWedge with Visual Basic to pass serial data to an active server page","sidebarTitle":"Using WinWedge with Visual Basic to pass serial data to an active server page","href":"/winwedge/using-winwedge-with-visual-basic-to-pass-serial-data-to-an-active-server-pa"},{"title":"Using an ASP page to send data out the serial port","sidebarTitle":"Using an ASP page to send data out the serial port","href":"/winwedge/using-an-asp-page-to-send-data-out-the-serial-port"},{"title":"Detecting if WinWedge is running from a VB6 program","href":"/winwedge/detecting-if-winwedge-is-running-from-a-vb-program"},{"title":"Intellution FIXDMACS: input serial data using DDE","href":"/winwedge/intellution-fixdmacs-input-serial-data-using-dde"},{"title":"Launching WinWedge from a VB6 application","href":"/winwedge/launching-winwedge-from-a-vb"},{"title":"Linking a VB 6 text box to a WinWedge data field","href":"/winwedge/linking-a-vb-text-box-to-a-winwedge-data-field"},{"title":"Wonderware InTouch: linking serial data from WinWedge","href":"/winwedge/linking-serial-data-from-winwedge-to-intouch"},{"title":"MATLAB: launching, requesting data, and closing WinWedge from MATLAB","href":"/winwedge/matlab-launching-requesting-data-and-closing-winwedge-from-matlab"},{"title":"Opening and closing an application from VBA","href":"/winwedge/opening-and-closing-an-application-from-vba"},{"title":"Origin: launching the WinWedge and collecting data to a column","href":"/winwedge/origin-launching-the-winwedge-and-collecting-data-to-a-column"},{"title":"Reading serial data into Word using DDE","href":"/winwedge/reading-serial-data-into-word-using-dde-word-95-and-later"},{"title":"Send WinWedge data to Minitab via DDE","href":"/winwedge/send-serial-data-to-minitab-via-dde"},{"title":"Wonderware InTouch: sending commands to your device","href":"/winwedge/sending-commands-to-your-device-from-intouch"},{"title":"Using DDE in .NET to communicate with WinWedge","href":"/winwedge/using-dde-in-dotnet"},{"title":"Sending DDE commands to WinWedge from a VB6 app","href":"/winwedge/vb-6-sending-dde-commands-to-devices"},{"title":"Visual FoxPro: collecting data using WinWedge","href":"/winwedge/visual-fox-pro-collecting-data-using-winwedge"},{"title":"Visual FoxPro: communicating with devices through WinWedge","href":"/winwedge/visual-fox-pro-communicating-with-devices-through-winwedge"}]}]},{"group":"Legacy articles","boost":0.3,"expanded":false,"pages":[{"title":"Error: the setup.exe file is linked to missing export oleaut32.dll:185","href":"/winwedge/error-the-setup-exe-file-is-linked-to-missing-export-oleaut32-dll1852"},{"title":"Reading serial data into Word using DDE (Word 2.0-6.0)","href":"/winwedge/reading-serial-data-into-word-using-dde-word-2-0-6-0"},{"title":"Microsoft Office 2010 starter edition","href":"/winwedge/microsoft-office-2010-starter-edition"}]},{"group":"Resources","boost":0.5,"expanded":false,"pages":[{"title":"WinWedge product page","url":"https://taltech.com/winwedge-pro","href":"/external/winwedge-product"},{"title":"Trial downloads","url":"https://taltech.com/support-resources/free-trial-downloads","href":"/external/trial-downloads"},{"title":"Manuals and brochures","url":"https://taltech.com/support-resources/software-manuals-brochures","href":"/external/manuals"},{"title":"Online orders","url":"https://store.taltech.com/myaccount","href":"/external/store-account"},{"title":"Order and licensing info","url":"https://taltech.com/ordering","href":"/external/ordering"},{"title":"TALtech main site","url":"https://taltech.com","href":"/external/main-site"}]}]},{"product":"HID-ScaleWedge","icon":"https://mintlify.s3.us-west-1.amazonaws.com/taltech-bdc45607/images/product-icons/HID-ScaleWedge.svg","pages":[{"title":"HID-ScaleWedge","href":"/hid-scalewedge"}]},{"product":"BC-Wedge","icon":"https://mintlify.s3.us-west-1.amazonaws.com/taltech-bdc45607/images/product-icons/BC-Wedge.svg","pages":[{"title":"BC-Wedge","href":"/bc-wedge"}]},{"product":"TCP-Com","icon":"https://mintlify.s3.us-west-1.amazonaws.com/taltech-bdc45607/images/product-icons/TCP-Com.svg","pages":[{"title":"TCP-Com","href":"/tcp-com"}]},{"product":"B-Coder Pro","icon":"https://mintlify.s3.us-west-1.amazonaws.com/taltech-bdc45607/images/product-icons/B-Coder.svg","pages":[{"title":"B-Coder Pro","href":"/b-coder"}]},{"product":"Barcode ActiveX \u0026 DLLs","icon":"https://mintlify.s3.us-west-1.amazonaws.com/taltech-bdc45607/images/product-icons/Barcode%20ActiveX.svg","pages":[{"title":"Barcode ActiveX \u0026 DLLs","href":"/barcode-activex"}]}]},"basePath":"","title":"Basic inventory tracking example database - TALtech Support","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["10e4515597","a74be98ba7"],"chunks":["BannerMarkdown-BcDCEkh6.js","dist-CwjSCXIK.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-eKJ4rcii.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","zoom-image-lightbox-DMoL6lHz.js","lightbox-handle-r17bVUz3.js"]}