Copier un recordset

Résolu
CharlEm80 Messages postés 66 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 1 août 2012 - 3 avril 2007 à 16:18
CharlEm80 Messages postés 66 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 1 août 2012 - 4 avril 2007 à 13:43
Hello,

Quand je suis entrain de parcourir un recordset, est-il possible de copier ou dupliquer la ligne courante dans mon recordset.

Merci

Exemple :

1-Voiture-Audi-A4
2-Voiture-Audi-TT
3-Voiture-Dacia-Logane

quand je passe sur le 3ième record j'aimerais faire une commande vb qui me donnerai ceci

1-Voiture-Audi-A4

2-Voiture-Audi-TT

3-Voiture-Dacia-Logane
3-Voiture-Dacia-Logane

Mon code c'est du genre :
Sql = "select * from ..."
Set rs = Oracle_dbc.dbcreatedynaset(sql, 0&)
Oracle_dbc.ExecuteSQL (sql)
Do While not rs.eof
    if ...
       rs.??? <-- que mettre ici ?
    end if
    rs.movenext
Loop

7 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
3 avril 2007 à 16:53
Alors y'en a plein qui se battent pour ne pas avoir de doublons dans leur table, et dois tu veux en créer ?


C'est pour quoi faire au juste : c'est uniquement local à ta boucle, ou vraiment rajouter un doublon dans ta table ?
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 avril 2007 à 17:01
Salut
Ajouter une ligne de données à ton RecordSet ?

rs.AddNew
rs.Fields(0).Value = "Voiture"   ' \  Remplir tous champs avec données
rs.Fields(1).Value = "Renault"   ' |  On peut ommettre les champs pour
rs.Fields(2).Value = "Juva 4"    ' /  lesquels la valeur Null est acceptée
rs.Update

S'il s'agit de recopier une ligne, il faudra d'abord mémoriser les valeurs de chaque champ du record en cours avant d'appeler la méthode AddNew car l'index de la ligne en cours sera perdue. Pour la mémoriser, il suffit d'utiliser la méthode BookMark avant de faire le AddNew.
+ regarder dans l'aide

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
4 avril 2007 à 09:42
Tu as toujours la possibilité de faire une boucle pour parcourir tout tes champs et les copiers :


tonRecordset.addNew

For each field in tonRecordset2.fields


    tonRecordset.field(field.name).value = field.value

next field

tonRecordset.update
3
CharlEm80 Messages postés 66 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 1 août 2012 1
4 avril 2007 à 13:43
Merci à tous, je me suis inspiré de vos commentaires et idée pour pondre ceci :

                    ' Sélection de la dernière ligne courante
                    sql2 = "select * from ..."
                    Set rs2 = Oracle_dbc.dbcreatedynaset(sql2, 0&)
                    Oracle_dbc.ExecuteSQL (sql2)
                    ' Sauvegarde du record actuel en vue d'en faire une nouveau record
                    ReDim tabFields(rs2.Fields.Count)
                    j = 0
                    Do While j < rs2.Fields.Count
                        tabFields(j) = rs2(j).Value
                        j = j + 1
                    Loop
                    ' Modification de l'ancien record
                    rs2.Edit
                    rs2!DATE_SORTIE_US = Date
                    rs2!HEURE_SORTIE_US = Val(Mid(Time, 1, 2) & Mid(Time, 4, 2))
                    rs2!raison_sortie = "T"
                    rs2.update
                    ' Modification du future nouveau record
                    tabFields(2) = tabFields(2) + 1                        ' numero_sequence
                    tabFields(9) = 3                                       ' categorie_chambre
                    tabFields(11) = Date                                   ' date_entree_us
                    tabFields(12) = Val(Mid(Time, 1, 2) & Mid(Time, 4, 2)) ' heure_entree_us
                    tabFields(13) = "01/01/1900"                           ' date_sortie_us
                    tabFields(14) = "0"                                    ' heure_sortie_us
                    tabFields(15) = "-"                                    ' raison_sortie
                    ' Ajout du nouveau record
                    rs2.AddNew
                    j = 0
                    Do While j < rs2.Fields.Count
                        rs2(j).Value = tabFields(j)
                        j = j + 1
                    Loop
                    rs2.update
                    Oracle_dbc.CommitTrans
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
3 avril 2007 à 18:09
Que vois-je ??? Renault Juva 4

Que t'arrive-tu Jack, tu voyage dans le temps, tu nous arrive du passé ?????

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
CharlEm80 Messages postés 66 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 1 août 2012 1
4 avril 2007 à 09:09
Loooooooooooool c'est vrais que tant qu'à faire autant faire un doublon d'Audi TT

Le but c'est d'ajouter une ligne dans ma table qui est exactement la même que la précédente sauf deux champ qui changent et ça me gonfle de créer une vingtaine de variable (ou un tableau), de stocker tout, ... je me dit si il existe un truc du genre rs.copyrecord ou un truc comme ça, ça serait plus simple.

Je vais regarder ce livre de marc (BookMark bon je sais c'est lourd ... c'était la blague du matin)
0
CharlEm80 Messages postés 66 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 1 août 2012 1
4 avril 2007 à 09:45
Pas mal aussi ça le coup de la collection des recordset je ne savais pas que ça existait.

Merci
0
Rejoignez-nous