|
Brutal...
I ended up using multiple queries inside a for loop...proabbly not the MOST elegant solution, but it works...
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
Hello,
I want to use the SELECT some recordsets in an XML format (using the SQL Server 2000 features). I am using Carlos Antollini classes that wrap the ADO database clases. I am declaring a CADORecordset object, open it and use GetFieldValue (0, var), where var is a _variant_t object.
Its type is VT_ARRAY | VT_UI1 (this means an array of bytes, rights?). The parray member looks like this:
cDims = 0x0001;
fFeatures = 0x0080;
cbElements = 0x00000001;
cLocks = 0x0;
pvData = 0xsmth;
Dumping my array of bytes into a file looks awful. However, looking at the code the array looks like an array of BSTRs, but is not the XML encoded data I am expecting.
Can anyone help?
Thanks.
Best regards,
Alexandru Savescu
Best regards,
Alexandru Savescu
|
|
|
|
|
I am saving an ADO recordset as an XML. It works fine. However I do not want to save into a file, I would like to save it into a stream, a CString, ostream etc. Anyone have an idea?
Thanks!
Best regards,
Alexandru Savescu
|
|
|
|
|
You can pass a Stream object to the Save method of the recordset. For example, in IIS 5 you can pass in the Response object, and the XML will be sent straight to the browser.
|
|
|
|
|
I am trying to retrieve data using datasets in C#. However when i use the select command "SELECT * from Some_table". if there is a field which has a null in it, when the dataset returns the XML, the field is not present. When I put data in this column, the field is then present in the returned XML.
Is there a setting for enabling null fields in the results.
Here is the code
<code>SqlCommand sqlCommand = new SqlCommand("Select * from MyTable",sqlConnection1);
SqlDataAdapter custDA = new SqlDataAdapter();
custDA.SelectCommand = sqlCommand;
sqlConnection1.Open();
DataSet custDS = new DataSet();
custDA.Fill(custDS,strName);
sqlConnection1.Close();
strRet = custDS.GetXml();</code>
|
|
|
|
|
May I ask why it bothers you this? The XML file is smaller.
Best regards,
Alexandru Savescu
|
|
|
|
|
This might help[^], search for "drops column fields with null values" to get to the relevant paragraph.
Paul Watson Bluegrass Cape Town, South Africa Ray Cassick wrote: Well I am not female, not gay and I am not Paul Watson
|
|
|
|
|
|
Here is another one[^] which seems quite good. It talks about using an xsi:null instance to handle DBnull values.
Paul Watson Bluegrass Cape Town, South Africa Ray Cassick wrote: Well I am not female, not gay and I am not Paul Watson
|
|
|
|
|
I have a long running stored procedure that populates a OUTPUT variable with values for each stage of the procedure.
What I would like to do is to have my C# app get these values during the course of the proc, but I'm not sure how to do this.
The procedure has numerous lines like:
SELECT @MyOutputVal = some_other_proc_that_returns_a_value
SET NO COUNT ON is being used, so obviously no intermediate vals are going to be returned at the moment.
Any ideas on how I need to structure the VC# code to catch the output values, values?
Cheers,
Simon
"VB.NET ... the STD of choice", me, internal company memo
|
|
|
|
|
The value of your output parameters will only be returned to your app when the procedure has finished. If that's all you need, all you have to do is set the Parameter.Direction property to ParameterDirection.Output . If you want values from different stages, but don't need them until the end of the procedure, you can use multiple output parameters.
If you need feedback during the execution, you can use PRINT commands in your stored procedure, and sink the InfoMessage event of the connection. When you call PRINT 'Some message' in the procedure, you'll get an InfoMessage event, and the Message property of the SqlInfoMessageEventArgs will contain the string you printed.
|
|
|
|
|
Thanks for the info, Richard.
I've forwarded this to my colleague.
Cheers,
Simon
"VB.NET ... the STD of choice", me, internal company memo
|
|
|
|
|
Hello All,
Any recommendation for .NET database programming books? I need books that will really speak to me - I have the unlucky project to write Managed Providers. The books must be written in C# (do not like books written in two languages like C# and VB.NET - do not have the time).
Most of the stuff at Amazon.com seems to be VB.NET books - doing close to zero VB.NET currently.
Best regards,
Paul.
Jesus Christ is LOVE! Please tell somebody.
|
|
|
|
|
hi,
since u need the core internals of .net too, try
"c# and .net framework -- c++ perspective"
that should best fit your requirement.
Deepak Kumar Vasudevan
http://deepak.portland.co.uk/
|
|
|
|
|
Just gone to check it. It is rating very low at Amazon.com. The table of contents does not seems to carry anything new. I have 8 books on .NET so far, with 4 on C# - none deals with the internals, anyway.
Best regards,
Paul.
Jesus Christ is LOVE! Please tell somebody.
|
|
|
|
|
Please could someone help me?
I have a SQL command which retrieves records no problem.
I can do wildcard searches with every field except my date field. What am I doing wrong?
Can someone give me some ideas or sample code.
Thankyou very much!
|
|
|
|
|
internally, a date is represented as an integer of some sort. dates are converted to string representations at the last possible moment. This is why you can do arithmetic with dates:-
select DateField1 + DateField2 from table
and you can use inequalities as conditional clauses too:-
select * from table where date1 < date2
Anyway, if you want to do some kind of wildcard matching, on strings, then you need to dynamically convert the date to a string:-
select * from table
where convert(varchar(25),datefield) like '%-10-%'
That should help you out. I am a bit worried though. The like clause, and use of wildcards, is a surefire way to kiss goodbye to performance. Particularly when you mention that you use wildcards on every field.
If you are trying to implement keyword searching on the data in your table, i'd suggest you look up full text indexing.
Signature space for rent. Apply by email to....
|
|
|
|
|
|
I have a feild of a SQL2000 DB set up as datetime, and I am trying to place a date into it as '11/4/2003'. The record gets inserted ok, but the date comes out as '1/1/1900'
Anyone care to gander as why?
|
|
|
|
|
I suppose your dateformat on the SQL server isnt 'd/m/yy' so it recognized it as 'something' but cant make a valid date out of it. So it gets inserted as 'empty' date which resolves to 1/1/1900.
I keep submitting “VB” as a Priority-1 bug, but apparently no one here knows how to fix it. Nick Hodapp, Semicolon
|
|
|
|
|
Tip:- to save confusion when using dates in MSSQLServer, always use the format like this:-
YYYY-MM-DD HH:MM:SS
eg
'2002-11-05'
or
'2002-11-05 16:35:00'
this really helps to eliminate date ordering oddness.
Signature space for rent. Apply by email to....
|
|
|
|
|
I close a database using:
database.OpenEx(mySql,CDatabase::noOdbcDialog) ...
...more code...
database.Close();
but it remains existing. I have read it is also needed to destroy the object,, how can I do it?
Thanks.
|
|
|
|
|
Set database = Nothing (in straight asp)
|
|
|
|
|
Well, it is an MFC app, this way:
void OnExcel(CString sExcelFile)//, CString ficheroSolo)
{
CDatabase database;
CString sDriver ;//= "MICROSOFT EXCEL DRIVER (*.XLS)";
sDriver = GetExcelDriver();
CString sSql;
TRY
{
// Build the creation string for access without DSN
sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s", sDriver, sExcelFile, sExcelFile);
// Create the database (i.e. Excel sheet)
if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
{
// Create table structure
sSql.Format( "CREATE TABLE Graficas (Fecha TEXT, Hora NUMBER,[Temperatura (ºC)] NUMBER,[Rocío (ºC)] NUMBER,[Presión (mb)] NUMBER,[Velocidad (km/h)] NUMBER,[Dirección (º)] NUMBER,Brújula TEXT)");
database.ExecuteSQL(sSql);
}
...more code ...INSERT INTO, etc ....
database.Close();
|
|
|
|
|
When the your function ends, the CDatabase object is destroyed because it passes out of scope. There's no need to destroy it yourself, unless you created it with new , in which case you'll have to delete it.
|
|
|
|