Advertisement

02.06.2008 at 07:53AM PST, ID: 23141569
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

Using VBA to edit record and delete records
Tags: Microsoft, Access, 2007
I have table (supplier) which simply combines two primary keys from two other tables Contacts and Items, supplier uses the primary key from items as its own primary key. In a certain form there are two list boxes and an option box with 3 radio buttons. The 3 options are, Do nothing, Change to another free item and delete item. The first list box uses a query to show all items that are currently attached to the contact which is in question (as a contact can have more than one different item) from the supplier table.  The other list box runs a similar query that compares the items in the supplier table and those that are in the items table, and displays those that are not in supplier. These are free items and are awaiting to be combined with a contact in the supplier table. When the first and third options are selected the second list box is disabled, when  the second option is selected the second list box is enabled. What I want to happen is the user selects an option from the first list box, then choose an option, should that be option 1, nothing should happen. When option 2 is selected, the itemID from the first list box is replaced by that in the second list box. When the third option is selected the record selected in the first list box should be deleted. These events are triggered by a button click. I am currently using the code shown to achieve this, nothing happens to any records although there is no errors. Any suggestions?
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
Private Sub btnSaveChange_Click()
Select Case Me!FrameOptions
Case 1
DoCmd.Close
 
Case 2
    If [LstItems].Value <> 0 Then
    
        Dim OldItems As New ADODB.Recordset
    
        OldItems.Open "Supplier", CurrentProject.Connection, _
            CursorType:=adOpenKeyset, LockType:=adLockBatchOptimistic
            
        Do While Not OldItems.EOF
            If OldItems("ItemID") = [LstItems].Value Then
                OldItems("ItemID") = [lstFreeItems].Value
                OldItems.Update
            End If
            OldItems.MoveNext
        Loop
    Else
        MsgBox ("No items are assigned to this contact")
    End If
    DoCmd.Close
Case 3
    Dim Items As New ADODB.Recordset
    
    Items.Open "Supplier", CurrentProject.Connection, _
        CursorType:=adOpenKeyset, LockType:=adLockBatchOptimistic
        
    Do While Not Items.EOF
        If Items("ItemID") = [LstItems].Value Then
            Items.Delete
            Items.Update
        End If
        Items.MoveNext
    Loop
    DoCmd.Close
End Select
End Sub
Start your free trial to view this solution
Question Stats
Zone: Microsoft
Question Asked By: Dan89
Solution Provided By: LSMConsulting
Participating Experts: 2
Solution Grade: A
Views: 428
Translate:
Loading Advertisement...
02.06.2008 at 08:01AM PST, ID: 20833052

Rank: Master

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
02.06.2008 at 08:19AM PST, ID: 20833244

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
02.06.2008 at 08:26AM PST, ID: 20833305

Rank: Master

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
02.06.2008 at 08:38AM PST, ID: 20833410

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
02.06.2008 at 08:50AM PST, ID: 20833513

Rank: Sage

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
02.06.2008 at 09:11AM PST, ID: 20833722

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
Loading Advertisement...
Microsoft
  • Internet Protocols
  • Applications
  • Development
  • OS
  • Hardware
  • Windows Security
Apple
  • Operating Systems
  • Hardware
  • Programming
  • Networking
  • Software
Internet
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Spy / Ad Blockers
  • Web Browsers
  • New Net Users
  • Web Development
  • Chat / IM
  • Anti Spam
  • Web Servers
  • Anti-Virus
  • Email Clients
Gamers
  • Tips
  • Online / MMORPG
  • Puzzle
  • Emulators
  • Action / Adventure
  • Role Playing
  • Consoles
  • Game Programming
  • Strategy
  • Sports
  • Misc
  • Computer Games
Digital Living
  • Hardware
  • New Net Users
  • New Users
  • Software
  • Digital Music
  • Gaming World
  • Home Security
  • Apple
  • Networking Hardware
Virus & Spyware
  • Vulnerabilities
  • IDS
  • Encryption
  • Anti-Virus
  • Operating Systems Security
  • Software Firewalls
  • WebApplications
  • Cell Phones
  • Operating Systems
  • Internet
  • Hardware Firewalls
Hardware
  • Handhelds / PDAs
  • Displays / Monitors
  • Components
  • Networking Hardware
  • Peripherals
  • Laptops/Notebooks
  • Storage
  • Servers
  • Desktops
  • New Users
  • Misc
  • Apple
Software
  • System Utilities
  • Industry Specific
  • Network Management
  • Photos / Graphics
  • Page Layout
  • VMWare
  • Misc
  • Web Development
  • OS
  • CYGWIN
  • Voice Recognition
  • Message Queue
  • Quality Assurance
  • Security
  • Firewalls
  • MultiMedia Applications
  • Development
  • Database
  • Office / Productivity
  • Business Management
  • OS/2 Apps
  • Server Software
  • Internet / Email
ITPro
  • OS
  • Storage
  • Encryption
  • Operating Systems Security
  • Apple Hardware
  • Laptops & Notebooks
  • Servers
  • Networking Hardware
  • Peripherals
  • Devices
  • Displays / Monitors
  • WebTrends / Stats
  • Search Engines
  • Firewalls
  • WebApplications
  • IDS
  • Vulnerabilities
  • Email Clients
  • File Sharing
  • Spy / Ad Blockers
  • Web Browsers
  • Web Servers
  • Networking
  • Anti-Virus
  • Chat / IM
  • Anti Spam
Developer
  • Web Servers
  • Web Browsers
  • Game Programming
  • Dev Tools
  • Industry Specific
  • Office / Productivity
  • Database
  • CYGWIN
  • Web Development
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Programming
  • Content Management
  • Application Servers
  • Protocols
Storage
  • Removable Backup Media
  • Storage Technology
  • Servers
  • Grid
  • Remote Access
  • Backup / Restore
  • Misc
  • Hard Drives
OS
  • Miscellaneous
  • Security
  • Development
  • Linux
  • VMWare
  • MainFrame OS
  • Unix
  • Apple
  • OS / 2
  • AS / 400
  • BeOS
  • Microsoft
  • VMS / OpenVMS
Database
  • Oracle
  • Miscellaneous
  • MySQL
  • Software
  • Sybase
  • Contact Management
  • PostgreSQL
  • Data Manipulation
  • Clarion
  • InterSystems Cache
  • Siebel
  • MUMPS
  • OLAP
  • SQLBase
  • SAS
  • GIS & GPS
  • 4GL
  • Berkeley DB
  • DB2
  • Informix
  • Interbase / Firebird
  • FoxPro
  • Reporting
  • LDAP
  • Filemaker Pro
  • MS SQL Server
  • dBase
  • MS Access
Security
  • Misc
  • Web Browsers
  • Software Firewalls
  • Operating Systems Security
  • File Sharing
  • Spy / Ad Blockers
  • Vulnerabilities
  • WebApplications
  • IDS
  • Anti-Virus
  • Encryption
  • Anti Spam
  • Email Clients
  • VPN
  • Chat / IM
Programming
  • Editors IDEs
  • Installation
  • Handhelds / PDAs
  • Multimedia Programming
  • System / Kernel
  • Algorithms
  • Game
  • Signal Processing
  • Project Management
  • Open Source
  • Database
  • Misc
  • Languages
  • Processor Platforms
  • Theory
Web Development
  • Scripting
  • Blogs
  • Web Servers
  • Software
  • Search Engines
  • Web Graphics
  • Images
  • Internet Marketing
  • Images and Photos
  • Components
  • Document Imaging
  • Web Languages/Standards
  • Illustration
  • WebApplications
  • Fonts
  • WebTrends / Stats
  • Authoring
  • Digital Camera Software
  • Miscellaneous
Networking
  • Protocols
  • Apple Networking
  • Network Management
  • Message Queue
  • Application Servers
  • Content Management
  • File Servers
  • Email Servers
  • Misc
  • Java Editors & IDEs
  • Wireless
  • Networking Hardware
  • Backup / Restore
  • System Utilities
  • ISPs & Hosting
  • Web Servers
  • Storage Technology
  • Removable Backup Media
  • Servers
  • Broadband
  • Grid
  • OS / 2
  • Novell Netware
  • Unix Networking
  • Windows Networking
  • Security
  • Telecommunications
  • Operating Systems
  • Linux Networking
Other
  • Community Advisor
  • Lounge
  • Community Support
  • New Net Users
  • Philosophy / Religion
  • Math / Science
  • Miscellaneous
  • URLs
  • Expert Lounge
  • Politics
  • Puzzles / Riddles
Community Support
  • Suggestions
  • New to EE
  • New Topics
  • Community Advisor
  • CleanUp
  • Announcements
  • General
  • Feedback
  • Input
  • EE Bugs
 
02.06.2008 at 08:01AM PST, ID: 20833052

Rank: Master

try this
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
Private Sub btnSaveChange_Click()
Select Case Me!FrameOptions
Case 1
DoCmd.Close
 
Case 2
    If [LstItems].Value <> 0 Then
    
        Dim OldItems As New ADODB.Recordset
    
        OldItems.Open "Supplier", CurrentProject.Connection, _
            CursorType:=adOpenKeyset, LockType:=adLockBatchOptimistic
            
        Do While Not OldItems.EOF
            If OldItems("ItemID") = [LstItems].Value Then
                OldItems.Edit
                OldItems("ItemID") = [lstFreeItems].Value
                OldItems.Update
            End If
            OldItems.MoveNext
        Loop
    Else
        MsgBox ("No items are assigned to this contact")
    End If
    DoCmd.Close
Case 3
    Dim Items As New ADODB.Recordset
    
    Items.Open "Supplier", CurrentProject.Connection, _
        CursorType:=adOpenKeyset, LockType:=adLockBatchOptimistic
        
    Do While Not Items.EOF
        If Items("ItemID") = [LstItems].Value Then
            Items.Delete
        End If
        Items.MoveNext
    Loop
    DoCmd.Close
End Select
End Sub
Open in New Window
 
02.06.2008 at 08:19AM PST, ID: 20833244
ee

That brings up an error message saying "Method or Data member not found" and highlights the line      .
.Edit
?
Cheers
Dan
 
02.06.2008 at 08:26AM PST, ID: 20833305

Rank: Master

just delete rs.edit and try again
 
02.06.2008 at 08:38AM PST, ID: 20833410
That doesnt work either, no error message but the original problem remains.

Cheers
Dan
 
02.06.2008 at 08:50AM PST, ID: 20833513

Rank: Sage

What are the "Data Value" for the 3 options in your Option Group? Open your form in Design view, the select the option button or checkbox you're using and make sure that the Data Values for those controls correspond to the values you are using in your Select Case.

Are you sure you're referring to the lstItems listbox correctly? Generally you use Me.lstItems.Column(0) to refer to a specific value in the listbox (note that Columns are zero-based, so Column(0) is the first column). The "value" of your listbox may not be the actual value you expect.

Are your listboxes set to multiselect? If so, you'll have to modify this code.

Easiest way to verify this is to set a breakpoint in your code, then "run" it by clicking your command button. To set a breakpoint, place your cursor in the first or second line of your code and press F9 ... then click the button and you should be thrown into the Editor window. Use the F8 key to step through your code. You can also use the Immediate window to examine the values of the various items ... for example to see the value of the first column in your lstItems listbox type this in the Immediate window and press Enter:

?Me.lstItems.Column(0)

Also: I don't see the need to use Recordsets to do this ... straight SQL would be faster, assuming you don't need a "handle" on the data afterwards.

For the Second Case:

CurrentProject.Connection.Execute "UPDATE Supplier SET ItemID=" & Me.lstFreeItems & " WHERE ItemID=" & Me.lstItems

Third Case:

CurrentProject.Connection.Execute "DELETE * FROM Supplier WHERE ItemID =" & Me.LstItems

Accepted Solution
 
02.06.2008 at 09:11AM PST, ID: 20833722
Perfect solution, used the SQL statements in the end as wouldnt work the other way.
Cheers
Dan
 
 
20080236-EE-VQP-29 / EE_QW_2_20070628