begin process at 2012 02 17 05:29:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Base de données

 > 

ADO & DAO

 > 

Probleme de recordset


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

Probleme de recordset

samedi 20 mai 2006 à 16:15:57 | Probleme de recordset

Nirmak

Voilà mon code :
Private Sub Commande3_Click()

Dim dbs As DAO.Database
Dim PathFic As String
Dim NomFic As String
Dim NomFicXLS As String
Dim NomTable As String
Dim iNom_dpt As String
Dim iNom_ville As String
Dim iNbr_hab As Integer
Dim i As Integer
Dim j As Integer
Dim sql As String
Dim num_dept As String
Dim rsetvar As Recordset
Dim tmp As String
 
Set dbs = CurrentDb
Set ClasseurXLS = CreateObject("Excel.application")
 
'Ouverture du classeur d'importation
ClasseurXLS.Workbooks.Open PathFic & "F:\JP\2005-06 OMGL3 S2 TM_2\IMPORT_EXPORT VILLES.xls"
'Set rs = dbs.OpenRecordset("SELECT NOM_VILLE FROM VILLES WHERE NOM_VILLE=iNom_ville;", dbOpenDynaset)
i = 2
Do While ClasseurXLS.cells(i, 1) <> ""
'Recuperation des données lignes par lignes
iNom_ville = ClasseurXLS.cells(i, 1)
iNom_dpt = ClasseurXLS.cells(i, 2)
iNbr_hab = ClasseurXLS.cells(i, 3)
'Recuperation du des villes étant déjà dans la base de données
sql = "SELECT NOM_VILLE FROM VILLES WHERE NOM_VILLE=iNom_ville;"
Set rsetvar = dbs.OpenRecordset(sql, dbOpenDynaset)
'Verification que la ville n'existe pas déjà dans la base de données
If rsetvar.RecordCount = 0 Then
    sql = "SELECT N°_DéPARTEMENT FROM DéPARTEMENTS WHERE NOM_DéPARTEMENT=iNom_dpt"
    Set rsetvar = dbs.OpenRecordset(sql, dbOpenDynaset)
    'Determine si le departement existe déjà ou pas, et l'ajoute le cas echeant
    If rsetvar.RecordCount = 0 Then
        sql = "INSERT INTO DéPARTEMENTS (NOM_DéPARTEMENT) values ('" & iNom_dpt & "');"
        dbs.Execute sql
        End If
    'Incrementation du nombre de changement apporte dans la base de données, ie le nombre de villes ajoutees
    j = j + 1
    sql = "INSERT INTO VILLES (N°_DéPARTEMENT,NOM_VILLE,NOMBRE_HABITANT_VILLE) values ('[SELECT DéPARTEMENTS.N°_DéPARTEMENT FROM DéPARTEMENTS WHERE NOM_DéPARTEMENT=iNom_dpt;]', '" & iNom_ville & "' , '" & iNbr_hab & "');"
    'Insertion dans la base de donnees de la ville
    dbs.Execute sql
End If
'Incrementation du numero de la ligne sous Excelle
i = i + 1
Loop
 
'Fermeture du classeur d'importation
ClasseurXLS.Workbooks.Close
 
'Affichage du nombre d'operation effectuee
MsgBox ("Importation des " & j & " données effectuée")
End Sub

C'est l'initialisation des recordset qui ne marche pas... Je ne suis pas une flêche en VB, certainement que c'est une erreur de débutant, mais ce problème me gène déjà depuis pas mal de temps. N'hésitez à demander des précisions sur le code si il y a quelque chose que vous ne comprenez pas. Merci de résoudre mon problème.
Nirmak

samedi 20 mai 2006 à 16:36:56 | Re : Probleme de recordset

jack

Administrateur CodeS-SourceS
Salut
On veut bien t'aider, mais il faudrait peut-être nous dire quel est le problème .... (erreur, où ?)

Je te rappelle quand même quelques règles de programmation SQL répétées des centaines de fois sur ce forum :
- Les noms des champs comportant des caractères spéciaux (espace, accents, caractères non alphanumériques) doivent être encadrés de crochets [ et ]
- Quand les champs sont de type numérique, les valeurs des champs non pas d'encadrement
- Quand les champs sont de type texte, les valeurs des champs doivent être encadrés par des apostrophes '
- Quand les champs sont de type date, les valeurs des champs doivent être encadrés par des dièses #

D'autre part, toujours dans la catégorie syntaxe SQL : Dans un "Insert Into", soit tu utilises le not clé "Values" pour donner des valeurs fixes, soit tu utilises une sous requète "Select", mais pas les deux.
Tu aurais pu découvrir ça dans n'importe quelle source parlant de DB.

Pour être sûr d'avoir correctement inséré les données, il ne suffit pas de compter le nombres d'instructions, mais il faut demander à l'instruction Execute de te fournir le nombre d'enregistrements touchés par ta requète :
dbs.Execute sql, Nbre
Pour un Insert Into, le résultat ne donner que 1 ... sauf si la requète échoue, mais dans le cas d'un Delete, ce chiffre peut-être plus important.

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'accro
samedi 20 mai 2006 à 23:53:09 | Re : Probleme de recordset

mortalino

Membre Club
Salut Jack, BONJOUR Nirmak.

1/ http://www.vbfrance.com/reglement.aspx   clause n°2 !!
2/ Ne serait-ce pas plus simple de passer par une bdd Access plutôt qu'un tableur Excel ?

++
mortalino


Cette discussion est classée dans : sql, ville, dbs, stringdim, inom


Répondre à ce message

Sujets en rapport avec ce message

SQL, Access [ par leubaa ] Bonjour,Voici le code que j'utilise pour ouvrir des donnees :Function UpdateAllergens(Num)Dim dbs As DAO.DatabaseDim donnees As DAO.RecordsetDim Formu Pb recordset Access 2000 [ par Cl@rk ] Bonjour, voilà j'essaye d'utiliser les recordset en DAO (je l'avais déjà fait mais il y a longtemps) et j'ai systématiquement une erreur "incompatibil Concaténation fonction VB et requête SQL [ par chefinf ] Bonjour,J'ai défini sous vb6 une fonction "Fct_St(ch as string) as string" et je veux l'utiliser dans la clause where d'une requête sql dans mon code suppresion toutes les tables [ par Fenris ] salutg voudrais supprimer touteles tables exitente de la base car je voudari les remplacer par ceux que jimportevoici mon codeSet Dbs = CurrentDbDim i AIde SQL ACCESS [ par papaours ] salut bon mon bout de code me sort trop peu de parametre 3 attendus.JE NE PIGES PAS;MERCI.Public XLS As ObjectSub Macro1() Dim DB1 As Database, dbs As Access, SQL [ par leubaa ] Bonjour,Je suis en train de développer un petite base de données, et je me trouve devant un problème. Un formulaire me permet de selectionner un enreg Requete SQL VBA possible ?? [ par bigdan11 ] Je voudrais savoir si c'est possible de faire une requete SQL dans du code VBA Access qui ferait ceci :Ma Table Access :Date                Applicatio Access via SQL [ par guigui28 ] QQN peut il m'aider ?Je programme un petit utilitaire permetant de gérer mes clients, chaque client peut avoir plusieurs contacts. Comment rédiger une Utilisation d'un fichier .adp [ par choupi64 ] Salut,Voila un mois que je me suis totalement immergé dans les bases de données Sql avec Client Access.Mon probleme a l'air totalement ridicule, mais My sql free [ par nemata ] Bonjour j'ai bien chercher dans le forum mais il n'y a pas la reponse de ce que je cherche (ou du moin je l'ai pas vu). Voila mon probleme j'ai crée u


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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,468 sec (3)

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