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 / ADO.NET / April 2006

Tip: Looking for answers? Try searching our database.

Adding New Row With Relationship

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Aziz - 06 Apr 2006 16:42 GMT
I am using VB .NET 2003

Assume I have the following tables:

==ORDERS==                ==ORDER_PRODUCTS==
OrderID (PK)              OrderProductsID (PK)
Field1                    OrderID (FK)
Field2                    ProductCode (FK from anothertable)
Field3                    Field1
etc                       etc

ORDERS, 1 ---------------- M, ORDER_PRODUCTS
(Linked via OrderID)

ORDERS, 1 -------- M, ORDER_PRODUCTS
(Linked via OrderID)

I have created the relationship for this in the XML Schema (the XSD
file), let's call it ORDERS_ORDERPRODUCTS

Now what I want to do is create a new order. So I add a new row to
ORDERS and then use my ORDERS DataAdapter to save the changes. But
since the OrderID is a PK autonumber it gets generated automatically.
So how do I know what the OrderID foriegn key is?? I need it to link my
Order and the Product. I suppose I could use:

dsDataset.Orders.Rows(dsTurbobraze.Orders.Rows.Count -
1).Item("OrderID").tostring

to get the auto-generated OrderID of the last added row, but what if
some Orders have been deleted from the DataBase in the past? The
OrderID's woudn't go up nicely in sequence, or would ADO keep a hidden
record of every OrderID, and never use it again?

How do I solve this seemingly easy problem?
Cor Ligthert [MVP] - 06 Apr 2006 17:48 GMT
Aziz,

You can solve this problem by not using autokeys in this kind of situations.
The GUID (unique identifier) excelent to overcome the most problems you have
said now.

Just my thought,

Cor

>I am using VB .NET 2003
>
[quoted text clipped - 31 lines]
>
> How do I solve this seemingly easy problem?
Aziz - 07 Apr 2006 09:18 GMT
Where's the GUID? If I go into the XML Designer (the one where you can
drag and drop to create relationsips between tables) I cannot find it
in the list of types, the closest I can find is ID, IDREF, IDREFS.

Also, if I do use this GUID, can I still keep my Database type a
autonumber (it's an access file) or will it have to become a number?
Cor Ligthert [MVP] - 07 Apr 2006 11:07 GMT
Aziz,

Have a look at these links

Net
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlr
fsystemguidclasstopic.asp


SQL server
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_ua-u
z_6dyq.asp


I hope this helps,

Cor

> Where's the GUID? If I go into the XML Designer (the one where you can
> drag and drop to create relationsips between tables) I cannot find it
> in the list of types, the closest I can find is ID, IDREF, IDREFS.
>
> Also, if I do use this GUID, can I still keep my Database type a
> autonumber (it's an access file) or will it have to become a number?
Aziz - 07 Apr 2006 12:24 GMT
Thanks Cor, but I managed to fix it using David Sceppa's code:

       daOrders.Update(dsTurbobraze, "Orders")
       AddHandler daOrders.RowUpdated, AddressOf HandleRowUpdated

   Private Sub HandleRowUpdated(ByVal sender As Object, ByVal e As
OleDb.OleDbRowUpdatedEventArgs)
       If e.Status = UpdateStatus.Continue AndAlso e.StatementType =
StatementType.Insert Then
           e.Row("OrderID") =
Int32.Parse(cmdGetIdentity.ExecuteScalar().ToString())
           e.Row.AcceptChanges()
           Debug.WriteLine(e.ToString)
       End If
   End Sub

Very useful.

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.