Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / .NET Framework / General / May 2006

Tip: Looking for answers? Try searching our database.

Default Methods created with Drag & Drop attempt to edit Primary K

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Greg P - 17 May 2006 06:42 GMT
I'm using VB 2005, and have drug and dropped datagridviews onto my form.  The
default code that is generated for inserts tries to insert a value for the
auto generated primary key.  Below is the generated code.  I put ***** around
the problematic code.  I've tried just removing this and it doesn't seem to
work.  There may be more generated code I don't know about.  I could remove
it but I am planning on doing a lot of refreshing of the data source which
would mean I would need to edit a ton of code each time I refreshed.  Is this
just an oversight by microsoft?  I would seem that VS 2005 would check to see
if a column is auto incremented and if it was it wouldn't try to insert a
value into it?

Is there a setting I can place on my table so that this is generated
correctly?  My Idenitty specification for the ID column is seet to yes, with
a 1 increment.  In my generated Update statments there are similar issues.  
The auto generated code tires to update a primary key that has Identity
Specification set to yes.  I would think This shouldn't happen?  Is this just
an oversight by Microsoft?

<System.Diagnostics.DebuggerNonUserCodeAttribute(),  _
       
System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter"),  _
       
System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Insert, true)>  _
       Public Overloads Overridable Function Insert(ByVal CompositionID As
Integer, ByVal CompositionName As String, ByVal CompDesc As String, ByVal
Density As Double) As Integer
      ******     Me.Adapter.InsertCommand.Parameters(0).Value =
CType(CompositionID,Integer)  *******
           If (CompositionName Is Nothing) Then
               Me.Adapter.InsertCommand.Parameters(1).Value =
System.DBNull.Value
           Else
               Me.Adapter.InsertCommand.Parameters(1).Value =
CType(CompositionName,String)
           End If
           If (CompDesc Is Nothing) Then
               Me.Adapter.InsertCommand.Parameters(2).Value =
System.DBNull.Value
           Else
               Me.Adapter.InsertCommand.Parameters(2).Value =
CType(CompDesc,String)
           End If
           Me.Adapter.InsertCommand.Parameters(3).Value =
CType(Density,Double)
           Dim previousConnectionState As System.Data.ConnectionState =
Me.Adapter.InsertCommand.Connection.State
           If ((Me.Adapter.InsertCommand.Connection.State And
System.Data.ConnectionState.Open)  _
                       <> System.Data.ConnectionState.Open) Then
               Me.Adapter.InsertCommand.Connection.Open
           End If
           Try
               Dim returnValue As Integer =
Me.Adapter.InsertCommand.ExecuteNonQuery
               Return returnValue
           Finally
               If (previousConnectionState =
System.Data.ConnectionState.Closed) Then
                   Me.Adapter.InsertCommand.Connection.Close
               End If
           End Try
       End Function

Thanks,
Greg
Greg P - 17 May 2006 07:45 GMT
Please do not preach about using an identity as a primary key in response to
this post.  I understand that it isn't the best form.  I understand that it
is "storing part of the application in the database", but I'm not ready to
rebuild my entire database at this time.  Is there a way to get this to work
the way I want it to?

> I'm using VB 2005, and have drug and dropped datagridviews onto my form.  The
> default code that is generated for inserts tries to insert a value for the
[quoted text clipped - 61 lines]
> Thanks,
> Greg
Luke Zhang [MSFT] - 18 May 2006 06:33 GMT
Hello,

Thank you for the posting. Currently we are finding proper resource to
assist you on this issue and will update you as soon as possible.

Regards,

Luke Zhang
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

(This posting is provided "AS IS", with no warranties, and confers no
rights.)
Greg P - 18 May 2006 15:54 GMT
Luke,

Thanx, I hope I wasn't too frank with the post on the Identity column bieing
a primary key.  How would VB 2005 handle any identity column whether it is a
primary key or not?

Thanks,
Greg P

> Hello,
>
[quoted text clipped - 13 lines]
> (This posting is provided "AS IS", with no warranties, and confers no
> rights.)
Kevin Yu [MSFT] - 19 May 2006 03:37 GMT
Hi Greg,

Yes, as you know, if the column in database is a Primary Key and is
auto-increment, VS.NET designer will not generate parameter for this
column. Because this column is readonly, and the value in it can only be
generated by SQL Server itself. This is by design, and unfortunately there
is no option that we can set to change the behavior.

Kevin Yu
Microsoft Online Community Support

============================================================================
==========================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
============================================================================
==========================

(This posting is provided "AS IS", with no warranties, and confers no
rights.)
Greg P - 19 May 2006 15:08 GMT
Kevin,

That is exactly what I would expect, but not what I see.  This should be a
very simple test, create a table that has an auto incremented indentity
column, use the datasource wizard, drag and drop a dataGridView and look at
the code.  You will see in the insert and update that it refences the field
as shown in my code posted above.  

Thanks for your time,
Greg

> Hi Greg,
>
[quoted text clipped - 16 lines]
> (This posting is provided "AS IS", with no warranties, and confers no
> rights.)
Kevin Yu [MSFT] - 22 May 2006 06:46 GMT
Hi Greg,

As I tried on my machine, the auto-increment columns will not be included
in the column list in insert and update commands. The generated code will
not get refreshed when the database table changes. To make the changes
reflect in DataSet designer, the only way to to go throught the wizard
again. Because drag and drop from the server explorer is only for designer
convenience. The client code is not assured to change with the server table.

Kevin Yu
Microsoft Online Community Support

============================================================================
==========================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
============================================================================
==========================

(This posting is provided "AS IS", with no warranties, and confers no
rights.)
Greg P - 22 May 2006 14:55 GMT
Kevin,

I think this may be a bug then, becuase after I have changed the table and
then go through the designer again the generated code doesn't change.  The
column is still there.  The only way I can change it is to remove the table
through the designer and then re-add it.  Is this the expected behavior?

Thanks,
Greg

> Hi Greg,
>
[quoted text clipped - 17 lines]
> (This posting is provided "AS IS", with no warranties, and confers no
> rights.)
Kevin Yu [MSFT] - 23 May 2006 03:40 GMT
Hi Greg,

If the column is already there, the wizard will not automatically remove
it. You can try to remove the table in the query build and re-add it. Or
remove the table in the DataSet designer and re-add it. They seem to be the
only way here.

Kevin Yu
Microsoft Online Community Support

============================================================================
==========================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
============================================================================
==========================

(This posting is provided "AS IS", with no warranties, and confers no
rights.)
Greg P - 30 May 2006 16:13 GMT
Kevin,

I just wanted to make sure I follow up on this and I am clear.  This isn't a
bug and this is the expected behavior for the dataset designer?  If you make
changes to a table after you have already created a dataset you would have to:

1) Open the designer, uncheck table finsih the designer
2) Then reopen it again an select the table a second time and finish again.

I would have expected that if you have a table already in your Dataset and
then you selected the table through the dataset designer the first time, VS
would delete any generated code and regenerate the code based on the updated
table?  

If not that cool too, I just want to make sure this isn't a bug and I
understand it correctly.

Thanks,
Greg

> Hi Greg,
>
[quoted text clipped - 15 lines]
> (This posting is provided "AS IS", with no warranties, and confers no
> rights.)
Kevin Yu [MSFT] - 31 May 2006 06:45 GMT
Hi Greg,

Yes, this is not a bug an it is by design. And your steps are correct.

Kevin Yu
Microsoft Online Community Support

============================================================================
==========================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
============================================================================
==========================

(This posting is provided "AS IS", with no warranties, and confers no
rights.)
Greg P - 19 May 2006 15:35 GMT
Kevin,

Just to be sure I wasn't missing something I just ran this test and saw the
same result.  Then I removed the table from the datasource and added it back
and it worked correctly.  Maybe I don't understand when the designer code
gets refreshed?  I thought that everytime you connected to the database the
designer code gets rewritten?  The issue here was that I changed the database
after I had added the datasource.  I then used the wizard to go and get those
changes and it didn't.  I had to remove the table from the dataset and add it
again.  Is this the expected behavior?

The reason I ask is if I change some of the designer code I thought it would
be overwritten when I refreshed the dataset though the wizard?  If this isn't
the case then that gives me more flexability in changing some of the auto
generated code.

Thanks,

Greg P.

> Hi Greg,
>
[quoted text clipped - 16 lines]
> (This posting is provided "AS IS", with no warranties, and confers no
> rights.)

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.