Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
REAL PROBLEM: I am making a admin control panel for my mysql database. I just learned the most of the stuff in vb.net i know everything now learning query language and i run into this question. I want that there would be a user validator(detector) what i mean is lets say someone is creating an account and the username exist it would show a messagebox that the username already exist and cancel creating the account.
Here is my code:
Imports MySql.Data.MySqlClient
Public Class Deathlairregnu
Dim MySqlConn As MySqlConnection
Dim MySqlCmd As MySqlCommand
Private Sub ButtonNUS_Click(sender As Object, e As EventArgs) Handles ButtonNUS.Click
MySqlConn = New MySqlConnection
MySqlConn.ConnectionString =
"server=localhost;userid=root;password=CONSORED;database=syscore"
Dim MySqlRea As MySqlDataReader
Try
MySqlConn.Open()
Dim Query As String
Query = "insert into syscore.normaluser (nusername,nemail,npass,nphone,ncity) values ('" & TextBoxNUsern.Text & "','" & TextBoxNEmail.Text & "','" & TextBoxNPass.Text & "','" & TextBoxNPhone.Text & "','" & TextBoxNCity.Text & "')"
MySqlCmd = New MySqlCommand(Query, MySqlConn)
MySqlRea = MySqlCmd.ExecuteReader
MessageBox.Show("Registration has been completed")
MySqlConn.Close()
Catch ex As MySqlException
MessageBox.Show(ex.Message)
Finally
MySqlConn.Dispose()
End Try
End Sub
End Class
OPTIONAL: Ok. I have another question maybe you can solve at the same time. How could i add guid generator when the register submit button is pressed if you know what i mean? i have it in my website asp.net that i made myself. Would be very nice and helpful.
Big thanks for those who will try to help me. I will check this topic every 5 minutes.
Adding a uniqueidentifier column and adding the default to generate new guid
Downvotes probably because you didn't paste your code here, plus the fact that the question has been asked and answered many times. Did you search before asking?
I did the important part. Optional is not needed for me but would've been good. Here: https://www.youtube.com/watch?v=ovoVfHW3Q8Y.
Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 8 years ago.
Improve this question
I'm working on an application which I intend on protecting with Usernames & Passwords stored on a MS SQL Server. I've been trying for a number of days to get Visual Basics to compare the text entered in the two text boxes with the Username and Password on the SQL Database but I can't figure out a way to do it. The connection to the databse is already established and I'm able to manipulate the data on the Server from my Application, but I just can't figure out the code for 'comparing' the credentials.
The database that I'm connecting to is called Members_Details and the Table is called Logins. The logins table only holds two columns Name & Passkey (Username & Password.)
What I've tried so far is this:
SQL = "Select * from logins " & _
"where Name like '%" & Me.Usernametxt.Text.Trim & "%' AND Passkey LIKE Me.Passwordtxt.Text.Trim & "%'"
But I don't know where to go after that :/
Any help would be appreciated, and please not security is not an issue at the moment.
The problem is caused by the embedding of the Passwordtxt textbox value inside the sql text.
SQL = "Select * from logins " & _
"where Name like '%" & Me.Usernametxt.Text.Trim & _
"%' AND Passkey LIKE '" & Me.Passwordtxt.Text.Trim & "'"
However, also if you don't want advice on security, do a little step forward and write
SQL = "Select * from logins " & _
"where Name like #uname " & _
"AND Passkey = #pass"
Dim sqlCommand = new SqlCommand(SQL, con)
sqlCommand.Parameters.AddWithValue("#uname", "%" & Me.Usernametxt.Text.Trim & "%")
sqlCommand.Parameters.AddWithValue("#pass", Me.Passwordtxt.Text.Trim )
Using reader = cmd.ExecuteReader()
if reader.HasRows Then
' user authenticated
Also, usually, the passwords are required to be typed exactly (case sensitive) and thus not retrieved using a LIKE operator and wildcards.
The wildcard is also a bit strange for the username while it is acceptable to use the LIKE operator to allow the username to be case insensitive
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
I would like to create and run a list of predefined queries on several similar databases.
The idea is open the database, run the queries, and then close.
Now I create each of them manually, run and then delete them from each database.
I don't know how to do it in VBA code.
Can anyone drop me a line on how to do it with a simple example?
You can use the Name property for each item in your database's QueryDefs collection to make a list of your saved queries. I think that addresses the title of your question. However the body of your question seems to ask for a lot more as far as I can tell.
You can load a string variable with the text from the SQL property of a QueryDef in your current database. Then use the OpenDatabase method to open another db file, and Execute that string there.
Public Sub RunQueryOnAnotherDb(ByVal pQuery As String, _
ByVal pRemoteDb As String)
Dim dbRemote As DAO.Database
Dim strSql As String
strSql = CurrentDb.QueryDefs(pQuery).SQL
'Debug.Print strSql
Set dbRemote = OpenDatabase(pRemoteDb)
dbRemote.Execute strSql, dbFailOnError
Debug.Print "RecordsAffected: " & dbRemote.RecordsAffected
dbRemote.Close
Set dbRemote = Nothing
End Sub
There's plenty of room to refine that one. You should add error handling for example. But, though quick & dirty, I hope it points you in a useful direction.
I tested it on my system like this, and it works with my db and query names.
Public Sub test_RunQueryOnAnotherDb()
Const cstrQuery As String = "qryTestDelete"
Const cstrRemoteDb As String = "C:\share\Access\0NewScratch.mdb"
RunQueryOnAnotherDb cstrQuery, cstrRemoteDb
End Sub
Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 8 years ago.
Improve this question
I am required to provide a way for users to choose which column they want to display from a table. The user has a combo box of column names in a form which they can select one of and then hit a button which opens a report. I wrote some code which creates an SQL query based on the user's input, but it's not being called. I've tried inserting MsgBox statements, asserts, etc., but it never gets called. If I use a macro instead, that will be run, but not this sub...
Private Sub Report_Open(Cancel As Integer)
Dim field As String
Dim sqlQuery As String
Dim ctl As Control
ctl = "Forms![RuleGroupForm]![selectRuleFieldCombo]"
field = "rules.[" & ctl & "]"
' E.g. if the field was "Source File", the final query should look like this:
'SELECT overview.ID, relationship.rulesID, rules.[Source File], overview.[Rule Group], rules.RulegroupID
'FROM (overview INNER JOIN relationship ON overview.id=relationship.id)
'INNER JOIN rules ON relationship.rulesID=rules.ID
'WHERE rules.[Source File] IS NOT NULL;
sqlQuery = "SELECT overview.ID, relationship.rulesID, " & field
sqlQuery = sqlQuery & ", overview.[Rule Group], rules.RulegroupID"
sqlQuery = sqlQuery & "FROM (overview INNER JOIN relationship ON overview.id=relationship.id) "
sqlQuery = sqlQuery & "INNER JOIN rules ON relationship.rulesID=rules.ID"
sqlQuery = sqlQuery & "WHERE " & field & " IS NOT NULL;"
Me.RecordSource = sqlQuery
Requery
debugText = "New SQL Query = " & sqlQuery
End Sub
Thanks.
Edit: Resolved, not sure how to respond to own question...
There are a few things to check, apart from close and open, when you get odd behaviour such as this in Access. One is to see if the event on the properties sheet for the form or report, Open in this case, still contains [Event Procedure] - occasionally a form or report can have the code, but the event is not marked. When developing, that is, adding forms, reports and code, it is a good idea to run Compact and Repair on a regular basis, this also means regular back-ups - a simple copy saves a lot of grief. Finally, when developing fairly regular Decompiles are a good idea. I keep a small script that I can drop the Access file on to run decompile.
I'm currently working on a database which is rather complex, at least for my ability level. Essentially it is a database of projects, structures and contacts. Within these structures there are sub structures each with unique attributes.
Projects, structures and contacts are joined together in one main control form with a tabbed pane. And within these panes are the forms which have multiple subforms. I am trying to write a search function which I can place on each form that will allow the user to select multiple criteria to filter results. However, some of the criteria or on the forms and other criteria are drawn from multiple subforms and to top it off some fields in the subforms have multiple entries. I understand that this may not sound like very sound database design, but I've been told to adhere to a specific structure and layout which I am not skilled enough to work through.
I've been looking through allen browne's website regarding search criteria, but that is only one a single form. I've attempted to piece together the Subquery tutorial page as well, but to no avail. Essentially, I'm wondering if it is at all possible to filter information say.. the type of structure which is on the main form and then for example.. a range of numbers such as length which exists in a subform and an object proximity which exists in another subform, and have it so that the main form only displays records which fulfill that combination of criteria from the subforms and main form.
My apologies if this is vague, and if it'll help I can post up the general framework I have for my database thus far. Thank you for any assistance you can provide.
EDIT--- Added screenshots for more information
I can't post images since my rep is below 10 but hopefully I can include links
http://img829.imageshack.us/img829/1594/99258898.png
http://img40.imageshack.us/img40/2186/27578829.png
It's difficult to see here, but within the combo boxes some are multi-valued lists. And the combo box on the first image to the right, is switched based on the selection of Type from the upper left combo box, which has different attributes. Ideally I'd like to be able to search through primary forms and subforms. and result in records which only fulfill all the user inputted data. Right now I've tried using filters, one for each criteria, but all that does is blank out information in the subforms which doesn't correspond to the filter criteria.
Do you have any screenshots you could possibly post?
This sounds to me like a larger design issue, perhaps mostly in your UI but possibly in your table structure as well. One my own principles I try to follow is to limit how many things a single screen/form does or shows. What your describing sounds quite confusing to me and I think the average user could easily be overwhelmed by it.
Normally subforms are the result of a main form. That is, they contain child records and are linked to records in the main form via the child records foreign key and the main forms primary key. It isn't that there aren't other ways to design your forms but this is considered "normal" or "standard" design. Your description indicates that filtering the main form is determine by filters set on the subforms. I guess I can't think of any problem that could possibly need solving through something as confusing and clumsy as this. I leave the possibility open that I haven't encountered something as difficult or complex as you're dealing with.
I think you may have some difficulty getting better help here as your question is really better suited to a discussion forum such as UtterAccess.com. You may consider posting a copy of your database on such a site so the users can review your design and possibly recommend a more solid and standard approach.
Edit1:
1) Based on your screenshots, I think you're trying to do too many things in one form. I would normally take each of your top tabs (Projects, Structures, Companies, Contacts) and make each of those their own form. Access 2007 and 2010 allow you to use a tabbed interface natively and I can't think of any real benefit to using the tabbed container control to develop your own tabbed interface.
2) It's my opinion that searches should normally be performed in a single main form that has a single listbox, datasheet view subform, or continuous forms subform. Whichever of these three you choose is not overly important. After performing the search, the user should be able to click in the resulting records in the listbox or subform to select that record and move to it on a details view form similar to what you've already built here. It might take several different search screens to allow your users to search all of the different ways you'd like them to. For example, you might build a screen to search projects, one to search structures, another to search contacts, and a fourth one to search companies. It should be possible to combine some of these in a query and allow the user to search by more than one criteria but it can get confusing if you try to allow them to search too many fields at once, especially if the fields they are searching are in separate tables. For example, if you build a query that shows all projects, structures, and companies together and use this as the recordsource for a datasheet subform, this could allow users to search by project, structure, or company. However, if a project has 10 structures that project will be listed 10 times in the query/form which could confuse users if they are thinking about searching by project. If they are instead searching by structure, it will make perfect sense to them that there are 10 entries for the same project since they'll see 10 different structures.
My basic recommendation is, be careful about trying to build too many functions into a single form. There are some types of tasks or sets of data that do require complex forms with multiple subforms and lots of controls, but in general you want to try to avoid this. It's better to build each form with a very focused task and just simply build more forms to accomplish all of the necessary tasks. Of course, you can take this approach too far as well but you do really need to try to minimize complexity to save yourself from headaches in the future.
As far as filtering based on multiple criteria, I'll see if I can find any good examples or maybe put one together and make it available. It isn't so difficult but it is a multi-step process to build and experience has led me to a general design that I'm happy with and that works almost flawlessly in every possible situation.
Edit2:
Here's how you can create a multi-field filter/search.
1) Build your query. Include all tables and fields which need to viewed by the user or searched on by the user. You can include fields here that will be searched on but not viewable by the user, although that could be confusing to the user. Save your query and give it an appropriate name. Be sure to include your id/primary key fields since those will be needed in step number 4.
2) Now Highlight your query in the navigation pane, go to the top menu and choose Create > More Forms > Datasheet (I'm using Access 2007). Allow access to create and show you a datasheet form which we will use as a subform. Save this and give it an appropriate name like subformProjectSearch of fsubProjectSearch.
3) Get the design view for the new form you just created. Change the properties to disallow additions, deletions, and edits unless you'd really like to allow any of these operations. In general, I don't allow any data entry in these kinds of search forms unless I have it well planned out and tested.
4) Go to the code for this form and add code to popup relevant detail forms on double click. For example, in the projectid or project name field, allow your user to double click to bring up the project details form. Add double click routines to any other textbox where the user might want to pop up a structure, company or contact, assuming you've chosen to include one or more of those in your query. You're code will look something like DoCmd.OpenForm "ProjectDetails", , , "ProjectID = " & Me!ProjectID Now save your form again and close it.
5) Now create a new blank form and add your first form as a subform. Leave room at the top to add controls for filtering. This form does not need to have any recordsource set.
Diversion: I usually take one of two different approaches to filtering. Number one is to give the user one textbox that they can type into. I think do fuzzy searches in a whole bunch of different fields using the data they've typed in. It's a perfectly awful approach performance wise, especially once the database grows past about 20,000 records. It can also lead to some confusion since too many results will likely come up for a short generic search. If they only type in the letter s and search for it they will likely get almost all records.
The second approach I use is probably more common. Give them a different textbox for every field they are likely to want to search by. You an also make it a checkbox or combobox if that fits the field they are searching on. These will not be bound controls. This allows the user to get fairly specific and it also is most likely to return the exact results they are looking for. As far as the code goes, I don't think that one approach is really much simpler than the other. With either approach that I've listed here you really need to check the type of data they've entered before you put it in your filter statement for certain fields. For example, you wouldn't want to try to filter a date field using their non-date, text input. On this second approach you can possibly eliminate more of this problem by using validation rules, input masks, or by setting the textboxes format property. Combos also help to prohibit incorrect data from being entered.
Yet a third option is somewhat of a hybrid approach. You can create one text box that searches on more than one field but not necessarily on all fields. For example, you might create one textbox that will be used to search on Company, FirstName, or LastName. You can create as many of these textboxes as you need. How the input in these textboxes gets used will be totally determined by you in your VBA code.
6) Now that you've decided which approach you want to take, you can go ahead and add your controls. Give them appropriate names and labels.
7) Now it's time to create the function that will build the filtering statement. Use one of the two ideas I listed below. Make sure you run these when the user presses your search button or on the controls AfterUpdate event.
Private Sub txtSearch_AfterUpadate()
Call FilterSubformOption1
End Sub
Private Sub FilterSubformOption1()
Dim strFilter as String
Dim sSearch as String
sSearch = Replace(Nz(Me.txtSearch, ""), "'", "''")
If sSearch <> "" Then
If IsDate(sSearch) = False Then
strFilter = "(ProjectName LIKE '*" & sSearch & "*' OR "
strFilter = strFilter & "StructureName LIKE '*" & sSearch & "*' OR "
strFilter = strFilter & "CompanyName LIKE '*" & sSearch & "*')"
Else
strFilter = "ProjectDate = #" & CDate(sSearch) & "#"
End If
End If
If strFilter <> "" Then
Me.fsubProjectSearch.Form.Filter = strFilter
Me.fsubProjectSearch.Form.FilterOn = True
Else
Me.fsubProjectSearch.Form.Filter = ""
Me.fsubProjectSearch.Form.FilterOn = False
End If
End Sub
Private Sub FilterSubformOption2()
Dim strFilter as String
If Nz(Me.txtProjectName, "") <> "" Then
strFilter = "ProjectName LIKE '*" & Replace(Me.txtProjectName, "'", "''") & "*' AND "
End If
If Nz(Me.txtStructureName, "") <> "" Then
strFilter = strFilter & "StructureName LIKE '*" & Replace(Me.txtStructureName, "'", "''") & "*' AND "
End If
If Nz(Me.txtCompanyName, "") <> "" Then 'Search on multiple fields from one textbox
strFilter = strFilter & "CompanyName LIKE '*" & Replace(Me.txtCompanyName, "'", "''") & "*' AND "
End If
If IsNull(Me.txtProjectDate) = False Then
If IsDate(Me.txtProjectDate) = True Then
strFilter = strFilter & "ProjectDate = #" & Me.txtProjectDate & "#"
End If
End If
If Right(strFilter, 5) = " AND " THEN strFilter = Left(strFilter, Len(strFilter) - 5)
If strFilter <> "" Then
Me.fsubProjectSearch.Form.Filter = strFilter
Me.fsubProjectSearch.Form.FilterOn = True
Else
Me.fsubProjectSearch.Form.Filter = ""
Me.fsubProjectSearch.Form.FilterOn = False
End If
End Sub
Private Sub FilterSubformOption3()
Dim strFilter as String
If Nz(Me.txtProjectName, "") <> "" Then
strFilter = "ProjectName LIKE '*" & Replace(Me.txtProjectName, "'", "''") & "*' AND "
End If
If Nz(Me.txtStructureName, "") <> "" Then
strFilter = strFilter & "StructureName LIKE '*" & Replace(Me.txtStructureName, "'", "''") & "*' AND "
End If
If Nz(Me.txtName, "") <> "" Then 'Search on multiple fields from one textbox, the "hybrid" solution
strFilter = strFilter & "(CompanyName LIKE '*" & Replace(Me.txtName, "'", "''") & "*' OR "
strFilter = strFilter & "FirstName LIKE '*" & Replace(Me.txtName, "'", "''") & "*' OR "
strFilter = strFitler & "LastName LIKE '*" & Replace(Me.txtName, "'", "''") & "*') AND "
End If
If IsNull(Me.txtProjectDate) = False Then
If IsDate(Me.txtProjectDate) = True Then
strFilter = strFilter & "ProjectDate = #" & Me.txtProjectDate & "#"
End If
End If
If Right(strFilter, 5) = " AND " THEN strFilter = Left(strFilter, Len(strFilter) - 5)
If strFilter <> "" Then
Me.fsubProjectSearch.Form.Filter = strFilter
Me.fsubProjectSearch.Form.FilterOn = True
Else
Me.fsubProjectSearch.Form.Filter = ""
Me.fsubProjectSearch.Form.FilterOn = False
End If
End Sub
And that pretty much completes the multiple criteria filtering solution I typically use.
I create complex query-by-form interfaces for nearly all my Access apps. Why? Because my users want them! There are some screenshots of some older examples on my website, but none really is very clear. The point is that I'm writing SQL on-the-fly, and choosing whether to query particular tables based on whether there are criteria sought for that table.
I can say a lot more about, but it quickly shades into proprietary information. If these look like the direction you want to go, why don't you create a new question with enough information to suggest how it could be done based on these principles.