begin process at 2012 05 28 02:52:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

Base de données

 > 

SQL Server

 > 

Pb intégrité clé primaire/etrangere


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pb intégrité clé primaire/etrangere

lundi 24 juillet 2006 à 19:28:29 | Pb intégrité clé primaire/etrangere

leusha

Bonjour.

J'ai un petit soucis pour l'insertion de données dans une base de données MS SQL Server provenant d'un formulaire.

Explications :

J'ai une table COMPANY :

COMPANY_CODE smallint identity (1, 1) ,
CONTRACT_TYPE_CODE smallint not null ,
COMPANY_NAME char(32) null ,
COMPANY_STREETNUMBER int null ,
COMPANY_STREETNAME char(32) null ,
COMPANY_FLOOR int null ,
COMPANY_COLONIA char(32) null ,
COMPANY_ZIPCODE int null ,
COMPANY_CITY char(32) null ,
COMPANY_COUNTRY char(32) null ,
COMPANY_CONTRACTDESCRIPTION text null ,
COMPANY_LOCALISATIONLINK varchar(255) null
,
constraint PK_COMPANY primary key (COMPANY_CODE)



Et j'ai une table CONTACT :

CONTACT_CODE smallint identity (1, 1) ,
COMPANY_CODE smallint not null ,
CONTACT_FIRSTNAME char(32) null ,
CONTACT_LASTNAME char(32) null ,
CONTACT_EMAIL varchar(128) null ,
CONTACT_PHONENUMBER char(32) null
,
constraint PK_CONTACT primary key (CONTACT_CODE)



On ne s'occupe pas des autres clés étrangères présentes dans chacune des deux tables.

L'utilisateur remplit un formulaire ou il entre le nom de son entreprise, adresse etc... puis son nom, prénom, mail etc...

Je peux insérer sans problèmes les infos du contact dans la table CONTACT et les infos de l'entreprise dans la table COMPANY. Seulement, le code de l'entreprise (COMPANY_Code) est un code autoincrémenté et je ne sais pas comment l'insérer dans le COMPANY_Code de la table CONTACT. Je pensais qu'il s'insérait de lui même comme dans la table COMPANY mais apparemment il faut que je le rajoute a la main dans la table CONTACT. Je ne sais pas comment faire.

Voici mon code d'insertion dans la table CONTACT :

oCommand = New System.Data.SqlClient.SqlCommand(sSQL, oConnection)

oDataReader = oCommand.ExecuteReader()
oDataReader.Close()

sSQL = "INSERT INTO [CONTACT](CONTACT_FirstName, COMPANY_CODE, CONTACT_LastName, CONTACT_Email, CONTACT_PhoneNumber)" _
& " VALUES('" & TB_ContactFirstName.Text & "',' @COMPANY_Code ','" & TB_ContactLastName.Text & "','" & TB_ContactEMail.Text & "','" & TB_ContactPhoneNo.Text & "')"

oCommand = New System.Data.SqlClient.SqlCommand(sSQL, oConnection)

oDataReader = oCommand.ExecuteReader()

oDataReader.Close()
oConnection.Close()


Evidemment ça ne marche pas (@COMPANY_Code était une tentative despesérée Smile)

J'espere que qq1 pourra m'aider. Rolling Eyes

Merci d'avance Wink
mardi 25 juillet 2006 à 09:40:31 | Re : Pb intégrité clé primaire/etrangere

vlaad

Le truc c'est de recupérer en base de données l'id de ta compagnie (companyCode) avant de l'inserer dans la table contact.

Pour bien tu peux faire quelque chose de ce style:

Insertion de ta company dans ta table
INSERT INTO COMPANY
(CONTRACT_TYPE_CODE,COMPANY_NAME,...,Champn)
VALUES
(@CONTRACT_TYPE_CODE,@COMPANY_NAME,...@Champn);

Récupération de l'ID de ta compagnie:
declare @CodeCompany TypeDeDonne(int ou nvarchar);
set @CodeCompany =
(select COMPANY_CODE
FROM COMPAGNY
WHERE CONTRACT_TYPE_CODE= @CONTRACT_TYPE_CODE,
AND COMPANY_NAME=@COMPANY_NAME,
...,
AND Champn=@Champn);


Insertion des données dans ta table contact

INSERT INTO
CONTACT(CONTACT_FIRSTNAME, CONTACT_LASTNAME, COMPANY_CODE...)
VALUES
(@Nom, @Prenom, @CodeCompany....);

Du coup ta requete devrait avoir cette tête là:

Dim

strSQL_INSERTION_COMPANY AsString

Dim strSQL_RECUPERATION_ID_COMPANY AsString

Dim strSQL_INSERTION_CONTACT AsString

Dim str_REQETE_FINALE AsString

strSQL_INSERTION_COMPANY =

"INSERT INTO COMPANY (CONTRACT_TYPE_CODE,COMPANY_NAME,...,Champn) VALUES(@CONTRACT_TYPE_CODE,@COMPANY_NAME,...@Champn);"

strSQL_RECUPERATION_ID_COMPANY =

"declare @CodeCompany TypeDeDonne(int ou nvarchar); set @CodeCompany =(select COMPANY_CODE FROM(COMPAGNY)WHERE CONTRACT_TYPE_CODE= @CONTRACT_TYPE_CODE,AND COMPANY_NAME=@COMPANY_NAME,...,AND Champn=@Champn);"

strSQL_INSERTION_CONTACT=

"INSERT(INTO)CONTACT(CONTACT_FIRSTNAME, CONTACT_LASTNAME, COMPANY_CODE...)VALUES()(" & TB_ContactFirstName.Text & "," & TB_ContactLastName.Text & ",@CodeCompany ....);"

str_REQETE_FINALE = strSQL_INSERTION_COMPANY & strSQL_RECUPERATION_ID_COMPANY & strSQL_INSERTION_CONTACT

PS: je ne l'ai pas testé, c'est juste un ordre d'idée.

Les programmeurs sont rois....Ceux qui ne croient pas en nous sont des fous...



Cette discussion est classée dans : table, code, char, contact, company


Répondre à ce message

Sujets en rapport avec ce message

Comment créer une table dans une base à partir d'un code [ par webmaster91 ] Bonjour,Comment créer une table avec plusieurs champs dans une base à partir d'un code ?MerciWebm@ster91 parcourir une table de bas en haut... [ par Benji ] J'ai écrit le bout de code suivant pour pouvoir me connecter à une DB Access en DNS-less. Tou fonctionne, mais en fait je désirerais parcourir la tabl Récupération de données [ par Benz ] Bonjour,J'utilise une requète avec 3 tables jointes et j'ai un problème de récupération de certaines données.Je ne vais pas vous mettre la requète pui afficher une table [ par hudon77 ] Bonjour a tous... j'aimeraias savoir comment afficher une table dans un datalist mais je dois traiter un champs de la table a l'affichage... jai des s Génération de code dynamique [ par martok ] Bonjour tout le monde. Je débute en ASP et j'ai un blem sur un projet qu'on m'a confié : On me demande de faire une sorte de MySqlAdmin en ASP.NET. J manip sur textbox dans un formview [ par equinoxe83 ] Bonjour à tous,J'ai le Pb suivant (j'ai volontairement simplifié dans l'exemple) :J'ai une table articles (code + libellé) et une table commandes (Qté Access integrité referentielle [ par ihsan19 ] Bonjour J'ai un probleme d'integrite referentielle entre 2 tables La premiere table  comporte les tarifs des clients ( table_prix_code)elle se compose gro problM access VBA SQL [ par snowsurfer69 ] salut a tous!!!voila j'ai 1 gros problème et c'est très urgent!!!!voila j'crée une base de données sous access 2002 et donc j'utilise du code VBAen fa Info d une table asp [ par Byrong ] Comment récupère t-on e code behind les infos d'une table asp? [code=vb] For x = O To Table1.Rows.Count-1 For y = 0 To 3 Text= Table1.Rows(x).Cel conversion de types( DWORD char[]) [ par koukou1111 ] slt,je trouve un problème au niveau de la conversion d'un DWORD en tableau de char( je travaille sous VC++ avec les MFC) quelqu'un peut m'aider? [cod


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales