Par un souci de clarté, nous avons décidé de ne prendre en compte que 2 champs dans la table (IdEleve qui est un nombre, et NomE qui est une chaîne de caractères). La procédure à suivre pour les autres champs (PrénomE, Age et AnneeEtude) est identiques. 
Dans cette fonction, deux variables locales sont utilisées :
* Visual Basic : 
	      
'ouvre un recordset dans la table Eleve
rst = db.OpenRecordset("Eleve")
'création d'un nouvel enregistrement
rst.AddNew()
'ajout des valeurs de champ
rst("IdEleve").Value = nb
rst("NomE").Value = EntreeNom.Text
'mise à jour de la table
rst.Update()
'fermeture du recordset
rst.Close()
Le VB donne la possibilité aux développeurs d'inserer un enregistrement à l'aide d'un RecordSet, ouvert sur la table Eleve. Il faut ensuite ajouter un nouvel enregistrement (AddNew), et définir ses valeurs de champs. Enfin, il est absolument indispensable d'enregsitrer dans la table les modifications (Update). 
* C++ : 
	
//ouvre un recordset dans la table Eleve
rst 
 Open( dbOpenDynaset, "SELECT * FROM Eleve" ) ;
//création d'un nouvel enregistrement
rst 
 AddNew();
//ajout des valeurs de champ
var.Clear();
itoa(nb,str2,10);
var.SetString(str2,VT_BSTRT);
rst 
 SetFieldValue("IdEleve",var);
var.Clear();
strcpy( str2,StringToChar(EntreeNom 
 Text));
var.SetString(str2,VT_BSTRT);
rst 
 SetFieldValue("NomE",var);
							
//mise à jour de la table
rst 
 Update();
//fermeture du recordset
rst 
 Close();
	
Dans le cas du C++, plusieurs remarques sont à faire.
Mais la principale difficulté résidait dans les conversions des variables.
	En effet, la fonction SetFieldValue prend comme paramètre un type peu commun en C++ : le COleVariant. Nous avons donc déclarer une variable locale de type COleVariant : COleVariant var;. Ce type est en réalité le Variant du VB, il permet de transformer n'importe quel type en un autre type. Nous avons de plus utiliser une variable (str2) de type CHAR (tableau de chars) pour réaliser une première conversion du type INT vers CHAR * (avec le str2), puis du type char * vers BSTRT pour enfin envoyer la variable var dans la fonction SetFieldValue !  La conversion peut sembler compliquée, elle est néanmoins obligatoire. 
* C# : 
	
//ouvre un recordset dans la table Eleve
rst = db.OpenTable("Eleve",
DAO.RecordsetOptionEnum.dbConsistent);
//création d'un nouvel enregistrement
rst.AddNew();
//ajout des valeurs de champ
rst.set_Collect("IdEleve",nb);
rst.set_Collect("NomE",EntreeNom.Text);
//mise à jour de la table
rst.Update(1,false);
//fermeture du recordset
rst.Close();	
		
Pour le C#, l'idée reste identique : ouverture d'un RecordSet, création d'un enregistrement, affectation des valeurs et sauvegarde des modification.
Une petite différence cependant, la fonction OpenTable doit avoir un paramètre Options, que nous avons défini comme dbConsistent, c'est à dire que les modifications que nous allons entreprendre doivent être prise en compte dans la base de données.
Avec le C#, le problème des conversions est totalement effacé, la fonction set_Collect gère très bien tous les types de données. 
* MySQL : 
	 
//Création de la requête
$query="INSERT INTO Eleve ( IdEleve, NomE, PrénomE,Age 
,AnneeEtude) VALUES(etc...) ";
//On lance la requête
$resultat=mysql_query($query,$db);
						 
* ASP : 
	 
'Création d'un RecordSet
SET MonRs = Serveur.CreateObject("ADODB.Recordset");
'Initialisation du RecordSet
MonRs.Open "INSERT INTO Eleve ( IdEleve, NomE, PrénomE 
,Age,AnneeEtude) VALUES(etc...)",Connexion
	
Pour les langages MyQL et ASP, l'insertion d'un enregistrement s'effectue en SQL, dans une requête pour le MySQL, et dans un RecordSet pour l'ASP.
Aucune mise à jour n'est nécessaire, la fonction INSERT de SQL le fait automatiquement.
julien michot 2006-08-05