Passage de Access à SQL
Le
Renaud Roualdès
Bonjour à tous,
J'en bave pas mal, j'ai passé un vieux programme de ACCESS 97 à 2007, puis
j'ai mis les données sur SQL et relié les tables
(mail précédent)
j'ai un message d'erreur sur une execution de code qui arrive sur Access
2007 avec les tables SQL.
mais le même code fonctionne bien sur Access 2007 avec les tables Access..
Mais je suis un peu limité sur la lecture de ce code, quelqu'un peut il
m'aider, ou me donner une direction de recherche ?
Private Sub Lecture_Mouvement()
Dim RECHERCHE As Boolean
Dim SQL As String
Dim RSV As Recordset
If Me.RETOUREFFECT Then
SQL = "SELECT * from dbo_voitMVTS "
SQL = SQL & " WHERE IDMOUVEMENT = " & Str(Me.IDVEHETAT)
Set RSV = CurrentDb.OpenRecordset(SQL, dbOpenDynaset, dbSeeChanges)
If RSV.RecordCount = 1 Then
With RSV
Me.ETATDEPART = !ETATVEHIC
Me.CACHEDEPART = !ETATCACHE
Me.KMSDEPART = !KMMVT
Me.RESDEPART.Reserv1 = !CARBURANT
Me.RESDEPART.Reserv2 = !GAZ
Me.SIGLEDEP = !SIGLE
Me.INITDEP = !INITIALE
Me.KMCDEP = !KMCERTIF
Me.DATERDEP = !DATEREELLE
Me.IDVEHETAT = !IDMOUVEMENT
.Close
End With
End If
SQL = "SELECT * from dbo_voitMVTS "
SQL = SQL & " WHERE IDMOUVEMENT = " & Str(Me.IDVEHETATRETOUR)
Set RSV = CurrentDb.OpenRecordset(SQL)
If RSV.RecordCount = 1 Then
With RSV
Me.ETATRETOUR = !ETATVEHIC
Me.CACHERETOUR = !ETATCACHE
Me.KMSRETOUR = !KMMVT
Me.RESARRIVEE.Reserv1 = !CARBURANT
Me.RESARRIVEE.Reserv2 = !GAZ
Me.SIGLERET = !SIGLE
Me.INITRET = !INITIALE
Me.KMCRET = !KMCERTIF
Me.LITRAGE = !LITRAGE
Me.DATERRET = !DATEREELLE
Me.IDVEHETATRETOUR = !IDMOUVEMENT
Me.msgFACTDIFF.VISIBLE = !INTERDITFACT
End With
Else
If RECHERCHE = False Then
msgbox "Anomalie sur les mouvements du véhicule"
End If
End If
RSV.Close
Else 'pas de retour effectué => 1ier départ ou modif du contrat
imitial
Me.msgFACTDIFF.VISIBLE = False
RECHERCHE = True
If IsNull(Me.IDVEHETAT) = False Or Len(Me.IDVEHETAT) > 0 Then
SQL = "SELECT * from dbo_voitMVTS "
SQL = SQL & " WHERE IDMOUVEMENT = " & Str(Me.IDVEHETAT)
Set RSV = CurrentDb.OpenRecordset(SQL, dbOpenDynaset, dbSeeChanges)
If RSV.RecordCount = 1 Then
With RSV
Me.ETATDEPART = !ETATVEHIC
Me.CACHEDEPART = !ETATCACHE
Me.KMSDEPART = !KMMVT
(plante ici) Me.RESDEPART.Reserv1 = !CARBURANT
Me.RESDEPART.Reserv2 = !GAZ
Me.SIGLEDEP = !SIGLE
Me.INITDEP = !INITIALE
Me.DATERDEP = !DATEREELLE
Me.KMCDEP = !KMCERTIF
' Me.IDVEHLOUE = !IDVEHICULE 'astuce pour obliger
l'opérateur à garder le 1ier choix
'de véhicule tant que le mvt
n'est pas reactualisé !!!
Me.IDVEHETAT = !IDMOUVEMENT
RECHERCHE = False
End With
End If
--
Renaud Roualdès
Profite, Vivre c'est cool !!!
___
J'en bave pas mal, j'ai passé un vieux programme de ACCESS 97 à 2007, puis
j'ai mis les données sur SQL et relié les tables
(mail précédent)
j'ai un message d'erreur sur une execution de code qui arrive sur Access
2007 avec les tables SQL.
mais le même code fonctionne bien sur Access 2007 avec les tables Access..
Mais je suis un peu limité sur la lecture de ce code, quelqu'un peut il
m'aider, ou me donner une direction de recherche ?
Private Sub Lecture_Mouvement()
Dim RECHERCHE As Boolean
Dim SQL As String
Dim RSV As Recordset
If Me.RETOUREFFECT Then
SQL = "SELECT * from dbo_voitMVTS "
SQL = SQL & " WHERE IDMOUVEMENT = " & Str(Me.IDVEHETAT)
Set RSV = CurrentDb.OpenRecordset(SQL, dbOpenDynaset, dbSeeChanges)
If RSV.RecordCount = 1 Then
With RSV
Me.ETATDEPART = !ETATVEHIC
Me.CACHEDEPART = !ETATCACHE
Me.KMSDEPART = !KMMVT
Me.RESDEPART.Reserv1 = !CARBURANT
Me.RESDEPART.Reserv2 = !GAZ
Me.SIGLEDEP = !SIGLE
Me.INITDEP = !INITIALE
Me.KMCDEP = !KMCERTIF
Me.DATERDEP = !DATEREELLE
Me.IDVEHETAT = !IDMOUVEMENT
.Close
End With
End If
SQL = "SELECT * from dbo_voitMVTS "
SQL = SQL & " WHERE IDMOUVEMENT = " & Str(Me.IDVEHETATRETOUR)
Set RSV = CurrentDb.OpenRecordset(SQL)
If RSV.RecordCount = 1 Then
With RSV
Me.ETATRETOUR = !ETATVEHIC
Me.CACHERETOUR = !ETATCACHE
Me.KMSRETOUR = !KMMVT
Me.RESARRIVEE.Reserv1 = !CARBURANT
Me.RESARRIVEE.Reserv2 = !GAZ
Me.SIGLERET = !SIGLE
Me.INITRET = !INITIALE
Me.KMCRET = !KMCERTIF
Me.LITRAGE = !LITRAGE
Me.DATERRET = !DATEREELLE
Me.IDVEHETATRETOUR = !IDMOUVEMENT
Me.msgFACTDIFF.VISIBLE = !INTERDITFACT
End With
Else
If RECHERCHE = False Then
msgbox "Anomalie sur les mouvements du véhicule"
End If
End If
RSV.Close
Else 'pas de retour effectué => 1ier départ ou modif du contrat
imitial
Me.msgFACTDIFF.VISIBLE = False
RECHERCHE = True
If IsNull(Me.IDVEHETAT) = False Or Len(Me.IDVEHETAT) > 0 Then
SQL = "SELECT * from dbo_voitMVTS "
SQL = SQL & " WHERE IDMOUVEMENT = " & Str(Me.IDVEHETAT)
Set RSV = CurrentDb.OpenRecordset(SQL, dbOpenDynaset, dbSeeChanges)
If RSV.RecordCount = 1 Then
With RSV
Me.ETATDEPART = !ETATVEHIC
Me.CACHEDEPART = !ETATCACHE
Me.KMSDEPART = !KMMVT
(plante ici) Me.RESDEPART.Reserv1 = !CARBURANT
Me.RESDEPART.Reserv2 = !GAZ
Me.SIGLEDEP = !SIGLE
Me.INITDEP = !INITIALE
Me.DATERDEP = !DATEREELLE
Me.KMCDEP = !KMCERTIF
' Me.IDVEHLOUE = !IDVEHICULE 'astuce pour obliger
l'opérateur à garder le 1ier choix
'de véhicule tant que le mvt
n'est pas reactualisé !!!
Me.IDVEHETAT = !IDMOUVEMENT
RECHERCHE = False
End With
End If
--
Renaud Roualdès
Profite, Vivre c'est cool !!!
___

Poser une question


Je suggère l'utilisation de
Dim RSV As DAO.Recordset
With RSV
.MoveFirst
.Edit
Me.ETATDEPART = !ETATVEHIC
Me.CACHEDEPART = !ETATCACHE
Me.KMSDEPART = !KMMVT
Me.RESDEPART.Reserv1 = !CARBURANT
Me.RESDEPART.Reserv2 = !GAZ
Me.SIGLEDEP = !SIGLE
Me.INITDEP = !INITIALE
Me.KMCDEP = !KMCERTIF
Me.DATERDEP = !DATEREELLE
Me.IDVEHETAT = !IDMOUVEMENT
.Update
.Close
End With
Ca ira peut-être mieux... mais c'est pô sûr...
Message du mardi 04/09/2007
--
Cordialement,
Thierry
Tout pour réussir avec Access :
http://www.mpfa.info
CurrentDb.OpenRecordset(SQL) ne possède pas les paramètres dbOpenDynaset et
dbSeeChanges.
--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)
"Thierry (ze Titi)" news:
Comment se fait il que ça fonctionne avec des tables Access et pas des
tables SQL ??
--
---
Renaud Roualdès
Profite, Vivre c'est cool !!!
___
"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
que vous obtenez; comment voulez-vous que l'on vous indique pourquoi cela ne
fonctionne pas?
De plus, la première chose à faire de votre côté est de débugger votre
programme. Par exemple, si « If RSV.RecordCount = 1 Then » ne fonctionne
pas, est-ce que c'est parce que la valeur est supérieure à 1, est égale à 0
(RSV.EOF = True) ou si le recordset est fermé (erreur de syntaxe dans la
chaîne SQL).
--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)
"Renaud Roualdès" news: