|
dan neely wrote: the current situation can result in really ugly code though.
dataobject.someProperty = formObject.recomputeValue(dataobject.someProperty, otherValue1, otherValue2, ...);
Why do you think that the code is ugly? If the method returns a value, the return value is a good place to put it.
dan neely wrote: or
int temp = dataobject.someProperty;
formObject.recomputeValue(out temp, otherValue1, otherValue2, ...);
dataobject.someProperty = temp;
That should actually be:
int temp;<br />
formObject.recomputeValue(out temp, otherValue1, otherValue2, ...);<br />
dataobject.someProperty = temp;
There is no reason to assign anything to a variable that is going to be used as an out parameter.
Using out/ref parameter and properties are two completely different approaches, so it's not at all a bad thing that they are separate in the code.
dan neely wrote: vs
formObject.recomputeValue(out dataobject.someProperty, otherValue1, otherValue2, ...);
If that would be allowed, it would be implemented exactly as the code with the temporary variable, with the only exception that the the temporary variable doesn't have a name.
Allowing properties as out parameters would only serve to hide what's actually going on. In a language like VB that might be desired, but hardly in C#.
Shorter code is not always better code.
---
b { font-weight: normal; }
|
|
|
|
|
Guffa wrote:
Why do you think that the code is ugly? If the method returns a value, the return value is a good place to put it.
Because langague limitations are forcing me to stuff a parameter in two locations, not just one.
Guffa wrote: That should actually be:
Actually it should've been:
int temp;<br />
formObject.recomputeValue(ref temp, otherValue1, otherValue2, ...);<br />
dataobject.someProperty = temp;
In this case the recompute does depend on the original value.
Guffa wrote: If that would be allowed, it would be implemented exactly as the code with the temporary variable, with the only exception that the the temporary variable doesn't have a name.
Allowing properties as out parameters would only serve to hide what's actually going on. In a language like VB that might be desired, but hardly in C#.
Shorter code is not always better code.
The intent of properties is to wrap the datahiding and validation of get/set methods, and allow them to be used like a public variable. This is the most severe failing of the itent. Having used property names and reflection to work around the limitation once before in a major code block, if i have to do it again, I'll be using public data members instead.
--
Rules of thumb should not be taken for the whole hand.
|
|
|
|
|
Hi,
I have been getting this error when trying to open a connection within transactionScope of .net 2.0.
"The transaction has already been implicitly or explicitly committed or aborted."
I have visual studio 2.0 Professional and am using C# for class library that I am working on. I get this error when trying to open the connection to SQL Server 2000.
Any help would be greatly appreciated.
if it helps here is my code. myID.GetNextID(); is the method where error occurs. I am opening a sql server connction and execute the stored procedure in this method. When i try to open the connection, that is where the error occurs
"The transaction has already been implicitly or explicitly committed or aborted"
public void Execute()
{
MyID myID = new MyID()
DataTable myRecords = GetRecords();
foreach (DataRow dr in myRecords.Rows)
{
using (TransactionScope scope = new TransactionScope())
{
int idint= myID.GetNextID();
string summaryUpdateQuery = "UPDATE tblSummarySample SET ID= " + idint+ " WHERE ServiceID= " + dr["mySampleID"].ToString();
UpdateSummaryRecord(summaryUpdateQuery);
string detailUpdateQuery = "UPDATE tblDetailSample SET TransID = " + idint+ " WHERE ServiceID= " + dr["mySampleID"].ToString();
UpdateMyRecords(detailUpdateQuery);
scope.Complete();
}
}
}
Thanks
Needy
|
|
|
|
|
Your code doesn't show what is happening. What is myID.GetNextID() doing? There is very little database access code in the snippet you provided so it is difficult to gauge the likely state of the database at the point of failure.
Also, your code is susceptable to a SQL Injection Attack, you may wish to consider using parameterised queries at a minimum to offset the chance of an attack.
|
|
|
|
|
I found the solution to the problem.
go to Administrative tools
Component Servers
MyComputer (right click)
go to properties
MSDTC TAB
Click on Security Configuration Button
Make sure Network DTS Access, Allow Remote Access, Allow Inbound, Allow Outbound, Enable Transaction Internet Protocol (TIP) Transactions are CHECKED.
Most important of all is No authentication Required option. This option should be selected otherwise even if all of the above check boxes are selected, the exception will not go away.
Somehow error description is completely different than "NO Authentican Required" radio button.
Anyway, I would wanted to post the solution so others can benefit.
Thanks
Needy
|
|
|
|
|
bemahesh wrote: I found the solution to the problem.
Are you sure?
bemahesh wrote: Most important of all is No authentication Required option. This option should be selected otherwise even if all of the above check boxes are selected, the exception will not go away.
Does it really solve your problem or does it just make the exception "go away"? What makes it go away? How does this solution work?
I don't mean to be difficult, but it looks to me that you've found some controls to fiddle with and in a certain state your exception goes away, but I don't see an explanation of why it makes the exception go away.
Unless you can explain why this works, and why it will continue to work, you've effectively built your house on the sand.
If you do know why this works, then you might want to explain to better educate those that come after you.
|
|
|
|
|
well, I am not an expert at TransactionScope. I just started using it for first time ever using .net 2.0. I may not be able to answer your questions since it seems your knowledge in the area may be greater than me. However, I was googaling for exception message and found out that if these settings are checked but didn't mention No authentication Required. I tried checking the check boxes but couldn't get transaction scope to work.
I was still getting the exception. At the end, I tried checking the No authentication requiered option (radio button). and, that worked (what i mean by working or GO AWAY is that when i try to open the connection it indeed opens the connection and doesn't throw the exception stating "the transaction.....blah blah blah".
I tried executing the update statements and they indeed executed as expected.
I may be ignorent or missing some important implications you may have suggested (in terms of security?). Please educate me further.
I will be waiting for further input
thanks a lot
Thanks
Needy
|
|
|
|
|
This settings are to make windows safer. Check more on this [here in my post].
|
|
|
|
|
Hi there,
I do xslt transformation and i've got sth like that:
(where ds - is my dataset, output.txt - is my result
---------------------------------------------------------------
//Create a new XslTransform object.
XslTransform xslt = new XslTransform();
//Load the stylesheet.
xslt.Load(Application.StartupPath + @"\Temp\xsltFile.xsl");
//Create a new XPathDocument and load the XML data to be transformed.
ds.WriteXml(Application.StartupPath + @"\Temp\officedata.xml");
XPathDocument mydata = new XPathDocument(Application.StartupPath + @"\Temp\officedata.xml");
//Create an XmlTextWriter
XmlWriter writer = new XmlTextWriter(Application.StartupPath + @"\Outbox\output.txt" , System.Text.Encoding.ASCII);
//Transform the data.
xslt.Transform(mydata,null,writer, null);
writer.Flush();
writer.Close();
-----------------------------------------------------
How do the same thing without creating temp file officedata.xml? (create XpathDocument directly from ds.)
and how load xslt file from string instead of xsltFile.xsl?
Does anyone have an idea?
Many thanks,
Kamil
|
|
|
|
|
Hi All,
A Windows Forms application (not asp.net)
I have 4 class library projects which contain classes and controls and forms which are naturally grouped together. 3 are c#, one is c++ with some unmanaged code in it.
My main application is a windows forms project with references to the other 4 applications in order to use their components.
I'm now trying to add a preferences system, using the .net 2.0 built in application settings stuff.
But, this leads me to a problem. If I define my settingsbase derived class in my main windows forms project, then the other projects know nothing about it, and i cannot give them a reference to the main project because it would cause a circular reference.
The only way around this i can see would be to implement yet another project with just the settings stuff in, because then all 5 current projects can reference it. But i'm not sure i want to do this. Is there another way??
Do other people run into these circular reference problems when trying to organise their code into multiple projects?
I guess i could join all the code into just two projects (a c# one and a c++ one), but that goes against the values of code reuse!
The other solution is to have each project implement and manage it's own settings, and save them from the main project - but surely this results in 4 separate settings files?
Thanks in advance for any ideas
Jon
|
|
|
|
|
Hi. I'm having trouble with setting the focus with WindowsForms. I'm trying to achieve the Windows OnScreenKeyBoard functionllity - achieving some action without getting the focus. I use the SendKeys.SendWait method to send keys to the window in focus, but in my case it is always the form containing the keyboard that is in focus
Can anyone give me a hint?
|
|
|
|
|
SendKeys class works only on the currently focused contorl. If you want to send keystrokes/Mouse clicks to a control, you have to get its handle and pass it to a SendMessage API function call. You'd send a WM_KeyDown message I believe. Here is a link[^] on how to make a PInvoke call to the function.
Ps.
Sometimes -though rarely-, you'd have to send another WM_KeyUp message after the WM_KeyDown message.
Regards
|
|
|
|
|
Hi guys,
I need something like dgwComboBox.SelectedIndex=0 but unfortunately datagridview doesn't has this property. What solution do you suggest?.
I need a default value for a DGWcombobox that was bounded to a datasource
Thanks!
drinking beer is fun
|
|
|
|
|
have you tried something like:
this.DataGridView1.Rows.Item(x).Selected = true ?
|
|
|
|
|
there's nothing like this in a datagridview
rows.items ?!
drinking beer is fun
|
|
|
|
|
|
You don't understand what I'm asking
I have a cell that is a datagridviewcomboboxcell and has 50 items, I want a default value to be displayed after I bound the datagridviewcomboboxcell to a datasource
drinking beer is fun
|
|
|
|
|
<big>Excuse me... have you found the answer for that DataGridViewComboBox index??? is just that I have the same problem</big>
IliCch
|
|
|
|
|
Hi,
Is there are more ways that we can add assembly or a dll to a project. One way that I know is by using Add Reference and selecting the required dll. Is there any other way? Anybody who knows please answer?
Thanks
Raja Raman S
Reuters India Pvt.Ltd.
Bangalore
|
|
|
|
|
I'm a little confused why that doesn't work for you?
|
|
|
|
|
Hi,
Thanks for all your effort in taking time to answer the question.
Sorry that I didn't make clear of my question. This way is working for me and it is fine. It is not giving any issues or any error while adding. I just want to know whether there is any alternate way that we can add an external assembly or dll to our project. I don't know any other method, if it is there, other than the above one. If anyone knows, please share. Hope this helps.
Raja Raman S
Reuters India Pvt.Ltd.
Bangalore
|
|
|
|
|
What exactly do you mean, I think I don't understand your question...
I always onclude all projects in the same solution an create references to project in stead of dll files. Is that what you mean?? Else, please explain your question a bit more...
- - - --[ i love it when a plan comes together ]-- - - -
|
|
|
|
|
The guys have all the right to be confused about what you want. Adding references that way is the default method of making a reference to a dll in your project. You should specify why you want an alternate.
Anyway, there is another way. You can always use System.Reflection namespace. There is a calss named Assembly , having a method named Load() .
Regards
|
|
|
|
|
Hi,
I just want to know whether any alternate is there for adding references other than the default way. The default way is working fine and no issues.
Thank you for the answer. So it can also be added through System.Reflection also.
Thanks once again.
Raja Raman S
Reuters India Pvt.Ltd.
Bangalore
|
|
|
|
|
Hi,
I am using the OpenFileDialog to locate a file called "data.csv", located on my Pocket PC. When I place the file in "My Documents\Taxes "I can locate this file and I have no problems. When I place the file in "My Documents\Taxes\Data" the OpenFileDialog can`t locate the file. It even can`t locate the "Data" subdirectory in "Taxes" directory. As I noticed the OpenFileDialog can`t browse deeper than one subdirectory of "My Documents". If anyone had this problem could you please tell me a solution.
|
|
|
|