Bonsoir,
A chaque jour suffit sa peine, mais l=E0 je bloque : je voudrais, depuis
un bouton de formulaire, s=E9lectionner tous les enregistrements dont le
champ (AutreRefProjet) ont m=EAme valeur que l'enregistrement en cours,
et modifier cette valeur (dans l'exemple mettre en majuscule)
J'ai =E9crits ce qui suit et j'ai un joli bug qui me dit "Erreur 3061.
Trop peu de param=E8tres. 1 attendu" !
Mais pourquoi Access me hait-il tant ?
Merci de votre aide...
SoniaG
Dim NouvNomRepProj As String
NouvNomRepProj =3D UCase(Me.AutreRefProjet)
Dim db As Database
Dim rst As Recordset
Set db =3D CurrentDb()
Dim strSQL As String
'requ=EAte cherchant les repProjet =E9quivalents =E0 celui en cours...
strSQL =3D "SELECT ReqDocumentsListe.Fonds,
ReqDocumentsListe.Abreviation, ReqDocumentsListe.Cote,
ReqDocumentsListe.Numerise, ReqDocumentsListe.Refobjet,
ReqDocumentsListe.RefFonds, ReqDocumentsListe.RefobjDoc,
ReqDocumentsListe.AutreRefProjet, ReqDocumentsListe.Legende,
ReqDocumentsListe.CoteDoc, ReqDocumentsListe.Dimensions,
ReqDocumentsListe.RefDoc"
strSQL =3D strSQL & " FROM ReqDocumentsListe WHERE
((ReqDocumentsListe.RefDoc) Is Not null)"
strSQL =3D strSQL & " AND ((ReqDocumentsListe.AutreRefProjet) =3D
[Forms]![FmrExpositionsDocumentsListe]![AutreRefProjet])"
Set rst =3D db.OpenRecordset(strSQL)
rst.MoveFirst
While Not rst.EOF
rst.Edit
rst!AutreRefProjet =3D NouvNomRepProj
rst.Update
rst.MoveNext
Wend
rst.Close
Set rst =3D Nothing
Une requete de mise à jour est peut-être aussi mieux appopriée. dim MajQuery as QueryDef dim SQLMajQuery as string SQLMajQuery="UPDATE RepDocumentsListe SET AutreRefProjet=UCase(AutreReProjet) WHERE RefDocs IS NOT NULL AND AutreRefProjet='" & Me.AutreRefProjet & "'"
Set MajQuery=Currentdb.CreateQueryDef("",SQLMajQuery) MajQuery.execute
Bonsoir, A chaque jour suffit sa peine, mais là je bloque : je voudrais, depuis un bouton de formulaire, sélectionner tous les enregistrements dont le champ (AutreRefProjet) ont même valeur que l'enregistrement en cours, et modifier cette valeur (dans l'exemple mettre en majuscule) J'ai écrits ce qui suit et j'ai un joli bug qui me dit "Erreur 3061. Trop peu de paramètres. 1 attendu" ! Mais pourquoi Access me hait-il tant ? Merci de votre aide... SoniaG
Dim NouvNomRepProj As String NouvNomRepProj = UCase(Me.AutreRefProjet)
Dim db As Database Dim rst As Recordset Set db = CurrentDb() Dim strSQL As String 'requête cherchant les repProjet équivalents à celui en cours... strSQL = "SELECT ReqDocumentsListe.Fonds, ReqDocumentsListe.Abreviation, ReqDocumentsListe.Cote, ReqDocumentsListe.Numerise, ReqDocumentsListe.Refobjet, ReqDocumentsListe.RefFonds, ReqDocumentsListe.RefobjDoc, ReqDocumentsListe.AutreRefProjet, ReqDocumentsListe.Legende, ReqDocumentsListe.CoteDoc, ReqDocumentsListe.Dimensions, ReqDocumentsListe.RefDoc" strSQL = strSQL & " FROM ReqDocumentsListe WHERE ((ReqDocumentsListe.RefDoc) Is Not null)" strSQL = strSQL & " AND ((ReqDocumentsListe.AutreRefProjet) > [Forms]![FmrExpositionsDocumentsListe]![AutreRefProjet])" Set rst = db.OpenRecordset(strSQL) rst.MoveFirst While Not rst.EOF rst.Edit rst!AutreRefProjet = NouvNomRepProj rst.Update rst.MoveNext Wend rst.Close Set rst = Nothing
Bonjour,
vérifie l'orthographe de tes champs et essaie aussi en remplaçant :
strSQL = strSQL & " AND ((ReqDocumentsListe.AutreRefProjet) > [Forms]![FmrExpositionsDocumentsListe]![AutreRefProjet])"
Une requete de mise à jour est peut-être aussi mieux appopriée.
dim MajQuery as QueryDef
dim SQLMajQuery as string
SQLMajQuery="UPDATE RepDocumentsListe SET
AutreRefProjet=UCase(AutreReProjet) WHERE RefDocs IS NOT NULL AND
AutreRefProjet='" & Me.AutreRefProjet & "'"
Set MajQuery=Currentdb.CreateQueryDef("",SQLMajQuery)
MajQuery.execute
Bonsoir,
A chaque jour suffit sa peine, mais là je bloque : je voudrais, depuis
un bouton de formulaire, sélectionner tous les enregistrements dont le
champ (AutreRefProjet) ont même valeur que l'enregistrement en cours,
et modifier cette valeur (dans l'exemple mettre en majuscule)
J'ai écrits ce qui suit et j'ai un joli bug qui me dit "Erreur 3061.
Trop peu de paramètres. 1 attendu" !
Mais pourquoi Access me hait-il tant ?
Merci de votre aide...
SoniaG
Dim NouvNomRepProj As String
NouvNomRepProj = UCase(Me.AutreRefProjet)
Dim db As Database
Dim rst As Recordset
Set db = CurrentDb()
Dim strSQL As String
'requête cherchant les repProjet équivalents à celui en cours...
strSQL = "SELECT ReqDocumentsListe.Fonds,
ReqDocumentsListe.Abreviation, ReqDocumentsListe.Cote,
ReqDocumentsListe.Numerise, ReqDocumentsListe.Refobjet,
ReqDocumentsListe.RefFonds, ReqDocumentsListe.RefobjDoc,
ReqDocumentsListe.AutreRefProjet, ReqDocumentsListe.Legende,
ReqDocumentsListe.CoteDoc, ReqDocumentsListe.Dimensions,
ReqDocumentsListe.RefDoc"
strSQL = strSQL & " FROM ReqDocumentsListe WHERE
((ReqDocumentsListe.RefDoc) Is Not null)"
strSQL = strSQL & " AND ((ReqDocumentsListe.AutreRefProjet) > [Forms]![FmrExpositionsDocumentsListe]![AutreRefProjet])"
Set rst = db.OpenRecordset(strSQL)
rst.MoveFirst
While Not rst.EOF
rst.Edit
rst!AutreRefProjet = NouvNomRepProj
rst.Update
rst.MoveNext
Wend
rst.Close
Set rst = Nothing
Une requete de mise à jour est peut-être aussi mieux appopriée. dim MajQuery as QueryDef dim SQLMajQuery as string SQLMajQuery="UPDATE RepDocumentsListe SET AutreRefProjet=UCase(AutreReProjet) WHERE RefDocs IS NOT NULL AND AutreRefProjet='" & Me.AutreRefProjet & "'"
Set MajQuery=Currentdb.CreateQueryDef("",SQLMajQuery) MajQuery.execute
Bonsoir, A chaque jour suffit sa peine, mais là je bloque : je voudrais, depuis un bouton de formulaire, sélectionner tous les enregistrements dont le champ (AutreRefProjet) ont même valeur que l'enregistrement en cours, et modifier cette valeur (dans l'exemple mettre en majuscule) J'ai écrits ce qui suit et j'ai un joli bug qui me dit "Erreur 3061. Trop peu de paramètres. 1 attendu" ! Mais pourquoi Access me hait-il tant ? Merci de votre aide... SoniaG
Dim NouvNomRepProj As String NouvNomRepProj = UCase(Me.AutreRefProjet)
Dim db As Database Dim rst As Recordset Set db = CurrentDb() Dim strSQL As String 'requête cherchant les repProjet équivalents à celui en cours... strSQL = "SELECT ReqDocumentsListe.Fonds, ReqDocumentsListe.Abreviation, ReqDocumentsListe.Cote, ReqDocumentsListe.Numerise, ReqDocumentsListe.Refobjet, ReqDocumentsListe.RefFonds, ReqDocumentsListe.RefobjDoc, ReqDocumentsListe.AutreRefProjet, ReqDocumentsListe.Legende, ReqDocumentsListe.CoteDoc, ReqDocumentsListe.Dimensions, ReqDocumentsListe.RefDoc" strSQL = strSQL & " FROM ReqDocumentsListe WHERE ((ReqDocumentsListe.RefDoc) Is Not null)" strSQL = strSQL & " AND ((ReqDocumentsListe.AutreRefProjet) > [Forms]![FmrExpositionsDocumentsListe]![AutreRefProjet])" Set rst = db.OpenRecordset(strSQL) rst.MoveFirst While Not rst.EOF rst.Edit rst!AutreRefProjet = NouvNomRepProj rst.Update rst.MoveNext Wend rst.Close Set rst = Nothing
soniagaubert
Bonjour et merci Ilan,
Finalement je m'en suis sortie : ta première intuition était la bonne sauf que la synthaxe que tu proposais ne l'était pas... Donc après quelques heures de galères (j'ai cherché dans d'autres directions entre-temps), j'ai eu l'idée de voir ce qu'un bouton automatique sur ouverture de formulaire comportant le même champ me donnait comme syntaxe... Effectivement c'est une recherche sur du texte et c'est pas si souvent qu'on recherche sur du texte en demandant une équivalence (= et non like...) Donc pour ceux que ça intéresse, voilà ce qui marche bien : Dim db As Database Dim NomRepProjet As String NomRepProjet = UCase(Me![AutreRefProjet]) Dim strSQL As String Dim rst As Recordset strSQL = "SELECT Documents.* FROM Documents WHERE Documents.AutreRefProjet = " & "'" & Me![AutreRefProjet] & "'"
Set rst = CurrentDb.OpenRecordset(strSQL) If rst.RecordCount <> 0 Then 's'il en existe rst.MoveFirst While Not rst.EOF rst.Edit rst!AutreRefProjet = NomRepProjet rst.Update rst.MoveNext Wend rst.Close Set rst = Nothing End If
Bon dimanche, SoniaG
Bonjour et merci Ilan,
Finalement je m'en suis sortie : ta première intuition était la bonne
sauf que la synthaxe que tu proposais ne l'était pas... Donc après
quelques heures de galères (j'ai cherché dans d'autres directions
entre-temps), j'ai eu l'idée de voir ce qu'un bouton automatique sur
ouverture de formulaire comportant le même champ me donnait comme
syntaxe...
Effectivement c'est une recherche sur du texte et c'est pas si souvent
qu'on recherche sur du texte en demandant une équivalence (= et non
like...)
Donc pour ceux que ça intéresse, voilà ce qui marche bien :
Dim db As Database
Dim NomRepProjet As String
NomRepProjet = UCase(Me![AutreRefProjet])
Dim strSQL As String
Dim rst As Recordset
strSQL = "SELECT Documents.* FROM Documents WHERE
Documents.AutreRefProjet = " & "'" & Me![AutreRefProjet] & "'"
Set rst = CurrentDb.OpenRecordset(strSQL)
If rst.RecordCount <> 0 Then 's'il en existe
rst.MoveFirst
While Not rst.EOF
rst.Edit
rst!AutreRefProjet = NomRepProjet
rst.Update
rst.MoveNext
Wend
rst.Close
Set rst = Nothing
End If
Finalement je m'en suis sortie : ta première intuition était la bonne sauf que la synthaxe que tu proposais ne l'était pas... Donc après quelques heures de galères (j'ai cherché dans d'autres directions entre-temps), j'ai eu l'idée de voir ce qu'un bouton automatique sur ouverture de formulaire comportant le même champ me donnait comme syntaxe... Effectivement c'est une recherche sur du texte et c'est pas si souvent qu'on recherche sur du texte en demandant une équivalence (= et non like...) Donc pour ceux que ça intéresse, voilà ce qui marche bien : Dim db As Database Dim NomRepProjet As String NomRepProjet = UCase(Me![AutreRefProjet]) Dim strSQL As String Dim rst As Recordset strSQL = "SELECT Documents.* FROM Documents WHERE Documents.AutreRefProjet = " & "'" & Me![AutreRefProjet] & "'"
Set rst = CurrentDb.OpenRecordset(strSQL) If rst.RecordCount <> 0 Then 's'il en existe rst.MoveFirst While Not rst.EOF rst.Edit rst!AutreRefProjet = NomRepProjet rst.Update rst.MoveNext Wend rst.Close Set rst = Nothing End If
Bon dimanche, SoniaG
Ilan
Pardon Me!AutreRefProjet
Bonjour et merci Ilan,
Finalement je m'en suis sortie : ta première intuition était la bonne sauf que la synthaxe que tu proposais ne l'était pas... Donc après quelques heures de galères (j'ai cherché dans d'autres directions entre-temps), j'ai eu l'idée de voir ce qu'un bouton automatique sur ouverture de formulaire comportant le même champ me donnait comme syntaxe... Effectivement c'est une recherche sur du texte et c'est pas si souvent qu'on recherche sur du texte en demandant une équivalence (= et non like...) Donc pour ceux que ça intéresse, voilà ce qui marche bien : Dim db As Database Dim NomRepProjet As String NomRepProjet = UCase(Me![AutreRefProjet]) Dim strSQL As String Dim rst As Recordset strSQL = "SELECT Documents.* FROM Documents WHERE Documents.AutreRefProjet = " & "'" & Me![AutreRefProjet] & "'"
Set rst = CurrentDb.OpenRecordset(strSQL) If rst.RecordCount <> 0 Then 's'il en existe rst.MoveFirst While Not rst.EOF rst.Edit rst!AutreRefProjet = NomRepProjet rst.Update rst.MoveNext Wend rst.Close Set rst = Nothing End If
Bon dimanche, SoniaG
Pardon Me!AutreRefProjet
Bonjour et merci Ilan,
Finalement je m'en suis sortie : ta première intuition était la bonne
sauf que la synthaxe que tu proposais ne l'était pas... Donc après
quelques heures de galères (j'ai cherché dans d'autres directions
entre-temps), j'ai eu l'idée de voir ce qu'un bouton automatique sur
ouverture de formulaire comportant le même champ me donnait comme
syntaxe...
Effectivement c'est une recherche sur du texte et c'est pas si souvent
qu'on recherche sur du texte en demandant une équivalence (= et non
like...)
Donc pour ceux que ça intéresse, voilà ce qui marche bien :
Dim db As Database
Dim NomRepProjet As String
NomRepProjet = UCase(Me![AutreRefProjet])
Dim strSQL As String
Dim rst As Recordset
strSQL = "SELECT Documents.* FROM Documents WHERE
Documents.AutreRefProjet = " & "'" & Me![AutreRefProjet] & "'"
Set rst = CurrentDb.OpenRecordset(strSQL)
If rst.RecordCount <> 0 Then 's'il en existe
rst.MoveFirst
While Not rst.EOF
rst.Edit
rst!AutreRefProjet = NomRepProjet
rst.Update
rst.MoveNext
Wend
rst.Close
Set rst = Nothing
End If
Finalement je m'en suis sortie : ta première intuition était la bonne sauf que la synthaxe que tu proposais ne l'était pas... Donc après quelques heures de galères (j'ai cherché dans d'autres directions entre-temps), j'ai eu l'idée de voir ce qu'un bouton automatique sur ouverture de formulaire comportant le même champ me donnait comme syntaxe... Effectivement c'est une recherche sur du texte et c'est pas si souvent qu'on recherche sur du texte en demandant une équivalence (= et non like...) Donc pour ceux que ça intéresse, voilà ce qui marche bien : Dim db As Database Dim NomRepProjet As String NomRepProjet = UCase(Me![AutreRefProjet]) Dim strSQL As String Dim rst As Recordset strSQL = "SELECT Documents.* FROM Documents WHERE Documents.AutreRefProjet = " & "'" & Me![AutreRefProjet] & "'"
Set rst = CurrentDb.OpenRecordset(strSQL) If rst.RecordCount <> 0 Then 's'il en existe rst.MoveFirst While Not rst.EOF rst.Edit rst!AutreRefProjet = NomRepProjet rst.Update rst.MoveNext Wend rst.Close Set rst = Nothing End If
Bon dimanche, SoniaG
Ilan
Effectivement, j'ai repris le nom de la variable qui fait référence au formulaire alors que ma syntaxe ne tient compte que de la valeur. Soit Me.AutreRefProjet et non Forms!...... Les guillements sont utilisés pour les chaines de caractères; je l'ai supposé parce que tu mets le tout en majuscule.
texte
Bonjour et merci Ilan,
Finalement je m'en suis sortie : ta première intuition était la bonne sauf que la synthaxe que tu proposais ne l'était pas... Donc après quelques heures de galères (j'ai cherché dans d'autres directions entre-temps), j'ai eu l'idée de voir ce qu'un bouton automatique sur ouverture de formulaire comportant le même champ me donnait comme syntaxe... Effectivement c'est une recherche sur du texte et c'est pas si souvent qu'on recherche sur du texte en demandant une équivalence (= et non like...) Donc pour ceux que ça intéresse, voilà ce qui marche bien : Dim db As Database Dim NomRepProjet As String NomRepProjet = UCase(Me![AutreRefProjet]) Dim strSQL As String Dim rst As Recordset strSQL = "SELECT Documents.* FROM Documents WHERE Documents.AutreRefProjet = " & "'" & Me![AutreRefProjet] & "'"
Set rst = CurrentDb.OpenRecordset(strSQL) If rst.RecordCount <> 0 Then 's'il en existe rst.MoveFirst While Not rst.EOF rst.Edit rst!AutreRefProjet = NomRepProjet rst.Update rst.MoveNext Wend rst.Close Set rst = Nothing End If
Bon dimanche, SoniaG
Effectivement, j'ai repris le nom de la variable qui fait référence au
formulaire alors que ma syntaxe ne tient compte que de la valeur. Soit
Me.AutreRefProjet et non Forms!......
Les guillements sont utilisés pour les chaines de caractères; je l'ai
supposé parce que tu mets le tout en majuscule.
texte
Bonjour et merci Ilan,
Finalement je m'en suis sortie : ta première intuition était la bonne
sauf que la synthaxe que tu proposais ne l'était pas... Donc après
quelques heures de galères (j'ai cherché dans d'autres directions
entre-temps), j'ai eu l'idée de voir ce qu'un bouton automatique sur
ouverture de formulaire comportant le même champ me donnait comme
syntaxe...
Effectivement c'est une recherche sur du texte et c'est pas si souvent
qu'on recherche sur du texte en demandant une équivalence (= et non
like...)
Donc pour ceux que ça intéresse, voilà ce qui marche bien :
Dim db As Database
Dim NomRepProjet As String
NomRepProjet = UCase(Me![AutreRefProjet])
Dim strSQL As String
Dim rst As Recordset
strSQL = "SELECT Documents.* FROM Documents WHERE
Documents.AutreRefProjet = " & "'" & Me![AutreRefProjet] & "'"
Set rst = CurrentDb.OpenRecordset(strSQL)
If rst.RecordCount <> 0 Then 's'il en existe
rst.MoveFirst
While Not rst.EOF
rst.Edit
rst!AutreRefProjet = NomRepProjet
rst.Update
rst.MoveNext
Wend
rst.Close
Set rst = Nothing
End If
Effectivement, j'ai repris le nom de la variable qui fait référence au formulaire alors que ma syntaxe ne tient compte que de la valeur. Soit Me.AutreRefProjet et non Forms!...... Les guillements sont utilisés pour les chaines de caractères; je l'ai supposé parce que tu mets le tout en majuscule.
texte
Bonjour et merci Ilan,
Finalement je m'en suis sortie : ta première intuition était la bonne sauf que la synthaxe que tu proposais ne l'était pas... Donc après quelques heures de galères (j'ai cherché dans d'autres directions entre-temps), j'ai eu l'idée de voir ce qu'un bouton automatique sur ouverture de formulaire comportant le même champ me donnait comme syntaxe... Effectivement c'est une recherche sur du texte et c'est pas si souvent qu'on recherche sur du texte en demandant une équivalence (= et non like...) Donc pour ceux que ça intéresse, voilà ce qui marche bien : Dim db As Database Dim NomRepProjet As String NomRepProjet = UCase(Me![AutreRefProjet]) Dim strSQL As String Dim rst As Recordset strSQL = "SELECT Documents.* FROM Documents WHERE Documents.AutreRefProjet = " & "'" & Me![AutreRefProjet] & "'"
Set rst = CurrentDb.OpenRecordset(strSQL) If rst.RecordCount <> 0 Then 's'il en existe rst.MoveFirst While Not rst.EOF rst.Edit rst!AutreRefProjet = NomRepProjet rst.Update rst.MoveNext Wend rst.Close Set rst = Nothing End If