|
You should really read the documentation for the AcceptChanges method, although it should be obvious that GetChanges would not work after calling AcceptChanges : you're just removed all change information, so GetChanges would return nothing.
DO NOT call AcceptChanges yourself. As I mentioned in my previous reply, DataAdapter.Update will do this automatically once changes have been committed.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I've been reading documentation for two full days and only your comments made complete sense. While you were posting your reply I was testing that same section of code you mention and I commented out the AcceptChanges and GetChanges. When I do that I get an exception accessing the sql server. I suppose that's progress and I deduce that before commenting out those lines, update was not even trying to access the sql server because there were no changes.
Now I get an sqlException that says the login failed for user 'IBMX40\ASPNET'. IBMX40 is the sql server, but I don't recall ever setting up a user named ASPNET. Need I do that, or can't I simply link the user to the windows log in?
I don't see anything in the properties pages for either the adapter or the connection that allows entry of a password or user. When I issue fill dataset from the data menu while the adapter is selected, I get the test row from the database, so it's accessing sql server for the select.
UPDATE: I went into computer management and gave the ASPNET account (which was already created) administrator privileged and now this code works. Thanks so much for the help!
|
|
|
|
|
JeromeKJerome wrote:
Now I get an sqlException that says the login failed for user 'IBMX40\ASPNET'. IBMX40 is the sql server, but I don't recall ever setting up a user named ASPNET. Need I do that, or can't I simply link the user to the windows log in?
Yes. SQL Server must be told which users are granted access to SQL Server, and then you must grant that user permissions on a particular database object (or for certain server operations).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Hi
When I want to go for thin client, should I investigate ASP.NET or go with remoting thru http channels?
Does anyone have expirience with this?
Thanks!
Anton
|
|
|
|
|
Anton Dorrestijn wrote:
When I want to go for thin client, should I investigate ASP.NET or go with remoting thru http channels?
It's all relative. .NET Remoting can be used when you can garanttee that both endpoints will be running .NET while this is obviously not required in an ASP.NET application. Does your application require a rich UI? It is all relative to the requirements of the project. I would recommend reading through both the Introduction to ASP.NET[^] and .NET Remoting Overview[^] from the .NET Framework Developer's Guide.
- Nick Parker My Blog | My Articles
|
|
|
|
|
I've started programming in .NET using C#, and a coworker prefers VB.NET. He has created a console application, and I need to turn it into a Windows application and add a Windows form. I would prefer to create the class for this form in C#, but I don't know of a way to do that within his VB.NET project. Must I create a new C# Windows App project, and reference that from within the VB.NET project, or is there a keyword or something to switch from VB.NET to C# for a block of code?
Thanks for any input on this.
Paul
|
|
|
|
|
The easiest thing to do is to take the code that he has written in VB.NET that actually performs the functionality you need, and then make that into a class library. Then create a new C# Windows application and simply use the code from the class library to perform the functionlity you require.
So the steps would be,
1.) Create new Solution
2.) Create new VB project as a class library with the console code (well the bits that actually do the work)
3.) Create new C# project as a windows application and reference the VB class library
4.) Instantiate the class (or classes) of the VB class library from within the C# application and then use the functions as normal.
Hopefully that should sort you out.
Mark.
|
|
|
|
|
Okay, so then there's apparently nothing simple like setting a file that's part of a VB Project to use C# syntax. I wonder why not.
I understand about sharing DLLs; I just thought there'd be a way to code in more than one language in the same project.
Paul
|
|
|
|
|
You can add modules (contains the IL) compiled from different languages into a single assembly, but this does not produce a single file. It produces a single manifest with multiple files, so you really gain nothing. See the documentation for the csc.exe C# command-line compiler (or the vbc.exe for VB.NET) in the .NET Framework SDK, specifically regarding the /target:module and /addmodule switches.
Linking assemblies is your best option. The .NET Framework itself is made up of dozens of assemblies; having your app be comprised of two assemblies is hardly an issue (and allows you to version assemblies independently, so long as you specify the proper version redirection if necessary).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Paul, while what Mark told you was correct, I just wanted to suggest another option however I feel what Mark suggested was the best choice for you. Because both code from a VB.NET and C# project will both compile down to the same MSIL instruction set you have many options. If you are having a problem understanding some of the VB.NET syntax, one thing that can be helpful is to load the assembly into Reflector[^] select the method or class you want to view and change the language in the drop-down to VB.NET.
- Nick Parker My Blog | My Articles
|
|
|
|
|
Thanks for the extra tip, Nick. My problem isn't in understanding VB.NET, it's just that I don't like to code in it. I find VB.NET annoying to program in, after getting used to the conciseness of C++. Fortunately C# is not too far off.
|
|
|
|
|
I'm feeling a little dense here, but how do i do the C equivalent of
<br />
int array [16];<br />
int * p = array + 8;<br />
I've tried to look at the managed C++, but the program I'm using to convert to C# keeps crashing when I try to look at main()
|
|
|
|
|
Pointer manipulation requires an unsafe block around your code. However, depending on what you want to do with p, there might be a better managed solution than dropping into unsafe code.
|
|
|
|
|
Hmm, I think I'de prefer safe rather than sorry
Basically, I'm wanting to do something along these lines
<br />
int array [64];<br />
...<br />
...<br />
BitMangle (array + 8)
I come from a really heavy C/C++ background and I'm trying to get to grips with C# - I'm getting most of it, but this one little thing has me!
(ps - If there are some good book/articles I should read, do tell me)
|
|
|
|
|
cheesepirate wrote:
(ps - If there are some good book/articles I should read, do tell me)
You should read through the Arrays Tutorial[^] which covers single, multidimensional and jagged arrays in the C# Programmer's Reference.
- Nick Parker My Blog | My Articles
|
|
|
|
|
In C# you would just do
<br />
int[] array = new int[64];<br />
...<br />
BitMangle(array, 8);<br />
and the BitMangle method would be something like
<br />
void BitMangle(int[] array, int offset)<br />
{<br />
for (int i=offset; i<array.Length; i++)<br />
{<br />
}<br />
}<br />
|
|
|
|
|
cheesepirate wrote:
int * p = array + 8;
Sorry but that bad code in any language! what is 8? 2 or 4 ints? I mean any compiler could produce wrong code for that! Now if you did the following, life would be different, and at least someone else can understand the code.
int array [16];
int * p = &array[2];
And I can almost gaurentee you, that that will work now via MC++.
top secret xacc-ide 0.0.1
|
|
|
|
|
Greetings,
When I inherit from a user control I would like to rearange the controls of the base control on the new control. E.g. I have to list boxes side by side on the base control. I would like to change that to one list box above the other on the inherited control. The code for these controls are the same and I would like to get reuse out of this if possible.
Thank you,
Brett
|
|
|
|
|
Make the list boxes in the base control as public and do then rearranging.
|
|
|
|
|
True enough, how simple. Protected is probably a much safer bet though.
|
|
|
|
|
sssyed_in wrote:
Make the list boxes in the base control as public and do then rearranging.
I think protected would be more appropriate.
Charlie
if(!curlies){ return; }
|
|
|
|
|
Hi,
I have an object "obj" that is a TypeA. I have a Type object that refers to TypeA. How can I cast obj to TypeA? TypeA is dynamically created from a loaded assembly, so I need to be able to do it dynamically.
Or altenatively is there another way to get at obj's fields defined by the TypeA interface ?
thanks,
Matt
|
|
|
|
|
You gonna have to explain better, perhaps a code segment.
Dynamic casting is an urban legend, and is never required! (yes it does feel like u need it sometimes, but its not necessary, really)
top secret xacc-ide 0.0.1
|
|
|
|
|
maybe typeof() helps.
it will give the type of the object.
you should have cases of what types could obj be, it can't be just anything.
unless you should go for Generics in C# V2.0
find about generics here:
http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=370
|
|
|
|
|
Not possible. Because of the Common Type System (CTS) - part of the .NET Framework - the type must be known at compile time or the necessary IL instructions cannot be emitted as part of the module that gets embedded into the primary assembly. The best alternative is to develop a base class from which all of your loaded types (common, especially in plug-in style applications) and cast to that base class, relying on polymorphism to define your distinct types' functionality (that derive from that base class, of course).
Microsoft MVP, Visual C#
My Articles
|
|
|
|