Hi,
I am just starting to learn ASP.NET and sqlserver.
I am creating a web application that will allow a client to enter statistics into a database after they have logged into the website.
The insert query I've gotten working.
However, before I allow the insert to go through, I want to verify that the statistic hasn't already been entered into the database.
This is the error message I'm getting when I try to determine if the stat has already been entered by using a Select Count query
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click If IsPostBack Then Dim clientid As String = Membership.GetUser().ProviderUserKey.ToString() Dim reccount As Integer Dim downloaded As Boolean downloaded = False Dim strConn As String = "xxxxx; " """" Dim strsql1 As String = "Select count(statid) from tblClients where [client]=@clientid And [tblclients.datestat]=@datestats" Dim strsql2 As String = "insert into tblhestats ([Client], [Stat], [Amt], [Datestat], [Downloaded]) Values (@clientid, @stattype, @statvalue, @datestats, @downloaded )" Dim sqlconn As New SqlClient.SqlConnection sqlconn.ConnectionString = strConn sqlconn.Open() Dim mycommand2 As New SqlCommand(strsql1, sqlconn) Dim mycommand As New SqlCommand(strsql2, sqlconn) If (Page.IsValid) Then With mycommand2.Parameters .AddWithValue("@clientid", clientid) .AddWithValue("@datestats", CDate(datestat.Text)) Try reccount = Convert.ToInt32(mycommand2.ExecuteScalar) lblMessage.Text = reccount Catch ex As Exception lblMessage.Text = (ex.Message) ‘THIS IS WHERE I GET THE ERROR End Try End With With mycommand.Parameters .AddWithValue("@clientid", clientid) .AddWithValue("@stattype", CLng(Me.ddstat.Text)) .AddWithValue("@statvalue", CLng(statval.Text)) .AddWithValue("@datestats", CDate(datestat.Text)) .AddWithValue("@downloaded", 0) End With Me.Button1.Attributes("onclick") = "javascript:confirm(reply)" mycommand.ExecuteNonQuery() End If End If End SubEnd Class
: "Invalid column name 'client'. Invalid column name 'tblclients.datestat'. Invalid column name 'statid'."
I've confirmed that the column names are spelled correctly (and I tried it with and without the tablename just to see if that was the problem)
Can you give me some help with what I'm doing wrong?
Also, how can I change the title of the javascript message box from "This page at...."
(Don't know if it matters, but it's code-behind in the button_click event)
thanks
Paul
ASP.NETVisual Basic.NETMicrosoft SQL Server
Last Comment
LearningToProgram
8/22/2022 - Mon
Nasir Razzaq
Can you show the connection string? Are you including a "Initial Catalog" with the database name in connection string?
Ashok Kumar
first.,
- check the table (tblclients), columns(client,statid,datestat) in corresponding tables.
second,
- check if you have db connection string is working from with-in your application.
BuggyCoder
It must be the issue with your connection string, here is the sample to be used:-
Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
Initial Catalog: Database Name you want to connect.
Another option is change your query as:-
Dim strsql1 As String = "Select count(statid) from MyDatabase.MySchema.tblClients where [client]=@clientid And [tblclients.datestat]=@datestats"
Here MyDatabase=your database name
MySchema = your schema name (like dbo etc.)
The connection string works fine for the insert query.
Here is the connection string i'm using:
Dim strConn As String = "Server=xx.doxx-.com;Database=he;Uid=xx;Password=xxxxxx; "
This is the format suggested by the hosting company.
When I tried using the query suggested by buggycoder, this is the error:
The multi-part identifier "he.dbo.client" could not be bound. The multi-part identifier "he.dbo.tblclients.datestat" could not be bound. Invalid column name 'statid'.
Nasir Razzaq
Have you tried using "Initial Catalog" in connection string?
LearningToProgram
ASKER
Yes, tried the "initial catalog" -- got the same error
The brackets in your strsql1 string indicates you have a column litteral named "tblclients.datestat" on tblClients which is unusual. Check your table has a "datestat" column. If so, try removing the table name within the brackets.
Dim strsql1 As String = "Select count(statid) from tblClients where [client]=@clientid And [datestat]=@datestats"