|
Dim SelectCmd1 As New SqlCommand("SELECT [rawvalue] FROM [datastore] WHERE timestamp=(SELECT MAX(timestamp) FROM [datastore]) AND name='s1'", SQLconn)
SelectCmd1.CommandType = CommandType.Text
Dim result1 As Integer
Dim myDataReader1 As SqlDataReader
myDataReader1 = SelectCmd1.ExecuteReader()
myDataReader1.Read()
result1 = myDataReader1.GetInt32(0)
SQLconn.Close()
SQLconn.Open()
Dim SelectCmd2 As New SqlCommand("SELECT [rawvalue] FROM [datastore] WHERE timestamp=(SELECT MAX(timestamp) FROM [datastore]) AND name='s2'", SQLconn)
SelectCmd2.CommandType = CommandType.Text
Dim result2 As Integer
Dim myDataReader2 As SqlDataReader
myDataReader2 = SelectCmd2.ExecuteReader()
myDataReader2.Read()
result2 = myDataReader2.GetInt32(0)
SQLconn.Close()
I have a table with records:
name rawvalue quality timestamp
s1______-1_____good____12-6-2007 9:45:00
s3______-1_____bad____13-5-2007 11:50:51
s1_____0_____good____14-7-2007 8:40:54
s2_____0____good____15-5-2007 6:00:45
.
.
.
I read the most recent inserted "rawvalue" in the table to initialize 2 asp controls. I get an error for in the second query. And the error is "Invalid attempt to read when no data is present."
I get the same error then I run the query in Sql Server Management Studio.
The problem is with "timestamp". The "Max(timestamp)=14-7-2007 8:40:54"(3rd record) so it diplays he rawvalue="0" for s1.
But for s2 I don't get any values....because the timestamp = 15-5-2007 6:00:45 < 14-7-2007 8:40:54
What modification do I have to do in query to display the ravalues for both s1 and s2?
When I use this:
SELECT [rawvalue] FROM [datastore] WHERE timestamp=((SELECT MAX(timestamp) FROM [datastore]) AND name='s1')
I get incorrect syntax near AND.
-- modified at 13:12 Monday 14th May, 2007
|
|
|
|
|
Have you thought about using ExecuteScalar instead of ExecuteReader ? ExecuteScalar is used when you only want to retrieve the first column of the first row of the result set (typically when yours select only retrieves one row with one column in in)
Also, I suspect that your second query is returning zero rows. You don't check for the condition of no data being returned, hence the error. Using ExecuteScalar will remove the error and return null if no data is being returned from the query instead of throwing an error.
In order that the query returns data, I'm guessing that you want the condition of the MAX timestap AND the name. You need to specify the name twice, once inside the subquery and once outside it.
kallileo wrote: SELECT MAX(timestamp) FROM [datastore]) AND name='s1'
This is just the subquery on its own. It should be easier to spot WHERE the error is.
The full query should be:
SELECT [rawvalue]
FROM [datastore]
WHERE timestamp=((SELECT MAX(timestamp) FROM [datastore]) WHERE name='s1')
AND name='s1'
|
|
|
|
|
Thank you...
I will check what you said about ExecuteScalar...
I found the solution for the query. It should be like this:
SELECT [rawvalue] FROM [datastore] WHERE timestamp=(SELECT MAX(timestamp) FROM [datastore] WHERE name='s1')
|
|
|
|
|
Your query is may have some issues. What if two items with different names share the same timestamp?
|
|
|
|
|
Yes you are absolutely right....
but this query doesn't work.
SELECT [rawvalue]
FROM [datastore]
WHERE timestamp=((SELECT MAX(timestamp) FROM [datastore]) WHERE name='s1')
AND name='s1'
*******
Error in FROM clause: near 'WHERE'.
Unable to parse query text.
******
|
|
|
|
|
Too many brackets, remove one before the SELECT and the one after [datastore]
|
|
|
|
|
Its ok now thank you very much!
|
|
|
|
|
Is there a way to take an existing form and rerun the wizard if the data it's pulling needs to be tweaked?
-- modified at 11:04 Monday 14th May, 2007
Fixed subject
--
You have to explain to them [VB coders] what you mean by "typed". their first response is likely to be something like, "Of course my code is typed. Do you think i magically project it onto the screen with the power of my mind?" --- John Simmons / outlaw programmer
|
|
|
|
|
I haven't seen a way to rerun the wizard without scrapping the form and starting over.
|
|
|
|
|
Is there a way to set a form to only display data and not allow the user to change it?
--
You have to explain to them [VB coders] what you mean by "typed". their first response is likely to be something like, "Of course my code is typed. Do you think i magically project it onto the screen with the power of my mind?" --- John Simmons / outlaw programmer
|
|
|
|
|
Set all of the data entry fields to read-only by selecting all of the controls and setting the Locked property to Yes
|
|
|
|
|
Hello everyone!
Right now I've created a small Windows service that parses binary data files and stores information from there to a MS SQL Server database. Right now each file takes about 15 mins to parse, and that is about 3500 - 4000 INSERT statements.
I'm worried that this time gets bigger as the database grows. Okay, I don't have a production server and it all runs on a standard desktop-like hardware, but still 15 mins is way too much for 3000 operations.
Right now it uses CRecordset MFC classes, and this type of cycle running:
<br />
CRecordset db;<br />
db.Open()<br />
while (run)<br />
{<br />
db.AddNew();<br />
...<br />
db.Update();<br />
}<br />
db.close()<br />
Are there any ways to boost all this up? What I have in mind is switching to another technology (OLE DB or even a 3d-party classes like SQLApi), or implementing bulk inserts, but haven't yet found any good examples/articles.
I appreciate your help (or links) greatly!
--
Take care!
|
|
|
|
|
INSERT performance, in the long run, is going to depend on your database index structure. The more indexes you have on the fields of a particular table, the slower non-SELECT operations become because of the time required to maintain those indexes on every change in the database. Indexes speed up SELECT operations, but slow down everything else. You have to find a balance between the two that is acceptable to you.
|
|
|
|
|
Just over 3 inserts per second seems to be very slow indeed.
You should get better performance from using bcp.exe or DTS to do bulk inserts.
|
|
|
|
|
Hi Everyone:
I have designed a Windows data entry form that contains the following standard controls: 5 – labels, 1 – List box, and 4 –text boxes. The purpose of this form is to enter data into a single SQL server 2005 database table.
Visual Studio 2005 has a nifty control called the BindingNavigator. I would like to use this control so the user can add, edit, delete or just plain navigate though the data stored in the database table.
Does anyone know where I can find some step by step instructions on how to do this using VB.NET code? I tried using the connection wizard and couldn’t get it to work like I wanted it too.
Thanks in advance,
Quecumber256
|
|
|
|
|
|
MSDE has a 2GB database limit, what I need to know is does this inlcude the log file size also or is it just the maximum size of the data file? I can't find an documentation about it.
only two letters away from being an asset
|
|
|
|
|
Just a question, why aren't you using sql express? It has a 4GB database limit and allows you to fully use 1 CPU. To answer your question, the limit is per database. Since the log file is part of the database I believe it is included, but I could be wrong.
Here is a link comparing msde and sql express
http://www.microsoft.com/technet/prodtechnol/sql/2005/msde2sqlexpress.mspx[^]
Ben
|
|
|
|
|
MSDE was installed previously. I needed to find the answer to convince everyone that SQL Express was the better choice and fight the "it's not broken, don't fix it" arguments. They have been experiencing issues retoring a database that is well over the 2 GB limit, with log file.
only two letters away from being an asset
|
|
|
|
|
Well, I don't know if this totally works, but you could try removing the log and then seeing if you could restore without the log. I haven't actually tried it. If you can restore without the log then it would seem that the database limit includes the log file.
Ben
|
|
|
|
|
Mark Nischalke wrote: They have been experiencing issues retoring a database that is well over the 2 GB limit, with log file.
Well, I guess it's not "not broken" then, is it?! On top of that, MSDE isn't going to be supported on any O/S past Windows XP.
MSDE had a 2GB data file limit. This includes the MDF and NDF files, NOT the log files.
|
|
|
|
|
Thanks. It makes sense, but without any clear documentation that I could find I was unsure.
only two letters away from being an asset
|
|
|
|
|
Yeah, I had to dig for a while to find it. It just didn't feel right saying that it included the log file when it's possible for a log file to be huge compared to the size of the data. So, I had to hunt for it.
|
|
|
|
|
Hi ,
running the query ,say, strQuery , in a query analyzer generates results returning rows ...but folowing code does'nt make it the same ...
strQuery = " some query which works in query analyzer";
DataSet ds = new DataSet();
SqlDataAdapter adapter = new SqlDataAadapter(strQuery,connetion);
ds.tables.add("tablename");
adapter.fill(ds,"tablename"); //it takes 10 seconds at min
....
...
...
int nRows = ds.Tables[0].Rows.Count; // nRows is always 0 showing no record
any help ,,,,,
-- modified at 7:42 Monday 14th May, 2007
Madni
|
|
|
|
|
You need to set selectcommand for SqlDataAadapter
|
|
|
|