rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
....(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les premiers
provoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les valeurs d'un
champs pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà plante pour
l'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a été pris
en compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY Film;"
Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
....(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les premiers
provoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les valeurs d'un
champs pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà plante pour
l'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a été pris
en compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY Film;"
Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
....(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les premiers
provoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les valeurs d'un
champs pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà plante pour
l'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a été pris
en compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY Film;"
Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
....(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les premiers
provoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les valeurs d'un
champs pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà plante pour
l'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a été pris
en compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY Film;"
Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
....(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les premiers
provoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les valeurs d'un
champs pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà plante pour
l'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a été pris
en compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY Film;"
Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
....(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les premiers
provoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les valeurs d'un
champs pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà plante pour
l'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a été pris
en compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY Film;"
Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
...(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les premiers
provoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les valeurs d'un
champs pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà plante
pour
l'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a été
pris
en compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY Film;"
Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
...(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les premiers
provoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les valeurs d'un
champs pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà plante
pour
l'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a été
pris
en compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY Film;"
Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
...(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les premiers
provoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les valeurs d'un
champs pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà plante
pour
l'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a été
pris
en compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY Film;"
Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
MERCI à tous,
Les 2 codes ci-dessus fonctionnent
(G modifié la ligne [rstDST.FindFirst ("Film=" & rstSRC!Film)] en
[rstDST.FindFirst ("NumFilm=" & rstSRC!Film)] de celui de Ilan)
Je vois le bout du tunnel.
Comme j'ai placé ce code sur un évènement bouton d'un form j'aurais souhaité
que les actions ne concerne que mon contôle [Film] de mon form. Mais je
n'arrive pas à placer la condition Where en direct sans passer par une table
supplémentaire et intermédiare temporaire et des requêtes suppression et
ajout.
Est-ce possible d'alléger ma procédure en évitant cette table temp ?
Si non, ce n'est pas grave, car ENFIN j'ai terminé ma base Cinéthèque grâce
à vos trouvailles.
Merci encore.
Patrice
"PatCatNats" a écrit dans le message de
news:cmi6nl$7p7$...(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les premiers
provoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les valeurs d'un
champs pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà plante
pourl'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a été
prisen compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY Film;"
Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
MERCI à tous,
Les 2 codes ci-dessus fonctionnent
(G modifié la ligne [rstDST.FindFirst ("Film=" & rstSRC!Film)] en
[rstDST.FindFirst ("NumFilm=" & rstSRC!Film)] de celui de Ilan)
Je vois le bout du tunnel.
Comme j'ai placé ce code sur un évènement bouton d'un form j'aurais souhaité
que les actions ne concerne que mon contôle [Film] de mon form. Mais je
n'arrive pas à placer la condition Where en direct sans passer par une table
supplémentaire et intermédiare temporaire et des requêtes suppression et
ajout.
Est-ce possible d'alléger ma procédure en évitant cette table temp ?
Si non, ce n'est pas grave, car ENFIN j'ai terminé ma base Cinéthèque grâce
à vos trouvailles.
Merci encore.
Patrice
"PatCatNats" <patcat.nats@tiscali.fr> a écrit dans le message de
news:cmi6nl$7p7$1@news.tiscali.fr...
...(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les premiers
provoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les valeurs d'un
champs pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà plante
pour
l'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a été
pris
en compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY Film;"
Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
MERCI à tous,
Les 2 codes ci-dessus fonctionnent
(G modifié la ligne [rstDST.FindFirst ("Film=" & rstSRC!Film)] en
[rstDST.FindFirst ("NumFilm=" & rstSRC!Film)] de celui de Ilan)
Je vois le bout du tunnel.
Comme j'ai placé ce code sur un évènement bouton d'un form j'aurais souhaité
que les actions ne concerne que mon contôle [Film] de mon form. Mais je
n'arrive pas à placer la condition Where en direct sans passer par une table
supplémentaire et intermédiare temporaire et des requêtes suppression et
ajout.
Est-ce possible d'alléger ma procédure en évitant cette table temp ?
Si non, ce n'est pas grave, car ENFIN j'ai terminé ma base Cinéthèque grâce
à vos trouvailles.
Merci encore.
Patrice
"PatCatNats" a écrit dans le message de
news:cmi6nl$7p7$...(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les premiers
provoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les valeurs d'un
champs pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà plante
pourl'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a été
prisen compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY Film;"
Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
PatCatNats
si tu veux ajouter une condition WHERE regarde la ligne marquee par < > et remplace Film par le nom du control qui contient la valeur.
Function fnConcatGenreFilm()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved as Boolean
sSQL = "Select Film, Genre From TableGenre WHERE Film=" & Film.Value < > Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
Tobesavedúlse
While Not rstSRC.EOF
If NumFilm <> rstSRC!Film Then
If NumFilm <> 0 Then rstDST.Update : Tobesavedúlse
rstDST.FindFirst("NumFilm=" & rstSRC!Film)
if rstDST.NoMatch then
rstDST.AddNew
rstDST!NumFilm = rstSRC!Film
Else
rstDST.Edit
Endif
rstDST!GenreFilm = rstSRC!Genre
NumFilm = rstSRC!Film
tobesaved=true
Else
rstDST!GenreFilm = rstSRC!Genre & ", " & rstDST!GenreFilm
End If
rstSRC.MoveNext
Wend
If Tobesaved then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.CloseMERCI à tous,
Les 2 codes ci-dessus fonctionnent
(G modifié la ligne [rstDST.FindFirst ("Film=" & rstSRC!Film)] en
[rstDST.FindFirst ("NumFilm=" & rstSRC!Film)] de celui de Ilan)
Je vois le bout du tunnel.
Comme j'ai placé ce code sur un évènement bouton d'un form j'aurais
souhaité
que les actions ne concerne que mon contôle [Film] de mon form. Mais je
n'arrive pas à placer la condition Where en direct sans passer par une
table
supplémentaire et intermédiare temporaire et des requêtes suppression et
ajout.
Est-ce possible d'alléger ma procédure en évitant cette table temp ?
Si non, ce n'est pas grave, car ENFIN j'ai terminé ma base Cinéthèque
grâce
à vos trouvailles.
Merci encore.
Patrice
"PatCatNats" a écrit dans le message de
news:cmi6nl$7p7$...(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les
premiers
provoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les valeurs
d'un
champs pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà plante
pourl'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a
été
prisen compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY
Film;"
Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM
TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
PatCatNats
si tu veux ajouter une condition WHERE regarde la ligne marquee par < > et remplace Film par le nom du control qui contient la valeur.
Function fnConcatGenreFilm()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved as Boolean
sSQL = "Select Film, Genre From TableGenre WHERE Film=" & Film.Value < > Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
Tobesavedúlse
While Not rstSRC.EOF
If NumFilm <> rstSRC!Film Then
If NumFilm <> 0 Then rstDST.Update : Tobesavedúlse
rstDST.FindFirst("NumFilm=" & rstSRC!Film)
if rstDST.NoMatch then
rstDST.AddNew
rstDST!NumFilm = rstSRC!Film
Else
rstDST.Edit
Endif
rstDST!GenreFilm = rstSRC!Genre
NumFilm = rstSRC!Film
tobesaved=true
Else
rstDST!GenreFilm = rstSRC!Genre & ", " & rstDST!GenreFilm
End If
rstSRC.MoveNext
Wend
If Tobesaved then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
MERCI à tous,
Les 2 codes ci-dessus fonctionnent
(G modifié la ligne [rstDST.FindFirst ("Film=" & rstSRC!Film)] en
[rstDST.FindFirst ("NumFilm=" & rstSRC!Film)] de celui de Ilan)
Je vois le bout du tunnel.
Comme j'ai placé ce code sur un évènement bouton d'un form j'aurais
souhaité
que les actions ne concerne que mon contôle [Film] de mon form. Mais je
n'arrive pas à placer la condition Where en direct sans passer par une
table
supplémentaire et intermédiare temporaire et des requêtes suppression et
ajout.
Est-ce possible d'alléger ma procédure en évitant cette table temp ?
Si non, ce n'est pas grave, car ENFIN j'ai terminé ma base Cinéthèque
grâce
à vos trouvailles.
Merci encore.
Patrice
"PatCatNats" <patcat.nats@tiscali.fr> a écrit dans le message de
news:cmi6nl$7p7$1@news.tiscali.fr...
...(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les
premiers
provoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les valeurs
d'un
champs pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà plante
pour
l'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a
été
pris
en compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY
Film;"
Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM
TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
PatCatNats
si tu veux ajouter une condition WHERE regarde la ligne marquee par < > et remplace Film par le nom du control qui contient la valeur.
Function fnConcatGenreFilm()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved as Boolean
sSQL = "Select Film, Genre From TableGenre WHERE Film=" & Film.Value < > Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
Tobesavedúlse
While Not rstSRC.EOF
If NumFilm <> rstSRC!Film Then
If NumFilm <> 0 Then rstDST.Update : Tobesavedúlse
rstDST.FindFirst("NumFilm=" & rstSRC!Film)
if rstDST.NoMatch then
rstDST.AddNew
rstDST!NumFilm = rstSRC!Film
Else
rstDST.Edit
Endif
rstDST!GenreFilm = rstSRC!Genre
NumFilm = rstSRC!Film
tobesaved=true
Else
rstDST!GenreFilm = rstSRC!Genre & ", " & rstDST!GenreFilm
End If
rstSRC.MoveNext
Wend
If Tobesaved then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.CloseMERCI à tous,
Les 2 codes ci-dessus fonctionnent
(G modifié la ligne [rstDST.FindFirst ("Film=" & rstSRC!Film)] en
[rstDST.FindFirst ("NumFilm=" & rstSRC!Film)] de celui de Ilan)
Je vois le bout du tunnel.
Comme j'ai placé ce code sur un évènement bouton d'un form j'aurais
souhaité
que les actions ne concerne que mon contôle [Film] de mon form. Mais je
n'arrive pas à placer la condition Where en direct sans passer par une
table
supplémentaire et intermédiare temporaire et des requêtes suppression et
ajout.
Est-ce possible d'alléger ma procédure en évitant cette table temp ?
Si non, ce n'est pas grave, car ENFIN j'ai terminé ma base Cinéthèque
grâce
à vos trouvailles.
Merci encore.
Patrice
"PatCatNats" a écrit dans le message de
news:cmi6nl$7p7$...(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les
premiers
provoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les valeurs
d'un
champs pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà plante
pourl'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a
été
prisen compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY
Film;"
Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM
TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
Tout bonnement GENIAL
Dès que je mets le code en appli je vous soumet à tous ma base
cinémathèque
pour exploitation et critiques...
MERCI A TOUS
Patrice
"Ilan" a écrit dans le message de
news:PatCatNats
si tu veux ajouter une condition WHERE regarde la ligne marquee par < > > et remplace Film par le nom du control qui contient la valeur.
Function fnConcatGenreFilm()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved as Boolean
sSQL = "Select Film, Genre From TableGenre WHERE Film=" & Film.Value < > > Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
Tobesavedúlse
While Not rstSRC.EOF
If NumFilm <> rstSRC!Film Then
If NumFilm <> 0 Then rstDST.Update : Tobesavedúlse
rstDST.FindFirst("NumFilm=" & rstSRC!Film)
if rstDST.NoMatch then
rstDST.AddNew
rstDST!NumFilm = rstSRC!Film
Else
rstDST.Edit
Endif
rstDST!GenreFilm = rstSRC!Genre
NumFilm = rstSRC!Film
tobesaved=true
Else
rstDST!GenreFilm = rstSRC!Genre & ", " & rstDST!GenreFilm
End If
rstSRC.MoveNext
Wend
If Tobesaved then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.CloseMERCI à tous,
Les 2 codes ci-dessus fonctionnent
(G modifié la ligne [rstDST.FindFirst ("Film=" & rstSRC!Film)] en
[rstDST.FindFirst ("NumFilm=" & rstSRC!Film)] de celui de Ilan)
Je vois le bout du tunnel.
Comme j'ai placé ce code sur un évènement bouton d'un form j'aurais
souhaitéque les actions ne concerne que mon contôle [Film] de mon form. Mais
je
n'arrive pas à placer la condition Where en direct sans passer par une
tablesupplémentaire et intermédiare temporaire et des requêtes suppression
et
ajout.
Est-ce possible d'alléger ma procédure en évitant cette table temp ?
Si non, ce n'est pas grave, car ENFIN j'ai terminé ma base Cinéthèque
grâceà vos trouvailles.
Merci encore.
Patrice
"PatCatNats" a écrit dans le message de
news:cmi6nl$7p7$...(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les
premiersprovoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les
valeurs
d'unchamps pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà
plante
pourl'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a
étéprisen compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY
Film;"Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM
TableGenreConcatenner;"Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
Tout bonnement GENIAL
Dès que je mets le code en appli je vous soumet à tous ma base
cinémathèque
pour exploitation et critiques...
MERCI A TOUS
Patrice
"Ilan" <Ilan@discussions.microsoft.com> a écrit dans le message de
news:D8E538E8-AF89-4671-A202-2187664CD839@microsoft.com...
PatCatNats
si tu veux ajouter une condition WHERE regarde la ligne marquee par < > > et remplace Film par le nom du control qui contient la valeur.
Function fnConcatGenreFilm()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved as Boolean
sSQL = "Select Film, Genre From TableGenre WHERE Film=" & Film.Value < > > Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
Tobesavedúlse
While Not rstSRC.EOF
If NumFilm <> rstSRC!Film Then
If NumFilm <> 0 Then rstDST.Update : Tobesavedúlse
rstDST.FindFirst("NumFilm=" & rstSRC!Film)
if rstDST.NoMatch then
rstDST.AddNew
rstDST!NumFilm = rstSRC!Film
Else
rstDST.Edit
Endif
rstDST!GenreFilm = rstSRC!Genre
NumFilm = rstSRC!Film
tobesaved=true
Else
rstDST!GenreFilm = rstSRC!Genre & ", " & rstDST!GenreFilm
End If
rstSRC.MoveNext
Wend
If Tobesaved then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
MERCI à tous,
Les 2 codes ci-dessus fonctionnent
(G modifié la ligne [rstDST.FindFirst ("Film=" & rstSRC!Film)] en
[rstDST.FindFirst ("NumFilm=" & rstSRC!Film)] de celui de Ilan)
Je vois le bout du tunnel.
Comme j'ai placé ce code sur un évènement bouton d'un form j'aurais
souhaité
que les actions ne concerne que mon contôle [Film] de mon form. Mais
je
n'arrive pas à placer la condition Where en direct sans passer par une
table
supplémentaire et intermédiare temporaire et des requêtes suppression
et
ajout.
Est-ce possible d'alléger ma procédure en évitant cette table temp ?
Si non, ce n'est pas grave, car ENFIN j'ai terminé ma base Cinéthèque
grâce
à vos trouvailles.
Merci encore.
Patrice
"PatCatNats" <patcat.nats@tiscali.fr> a écrit dans le message de
news:cmi6nl$7p7$1@news.tiscali.fr...
...(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les
premiers
provoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les
valeurs
d'un
champs pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà
plante
pour
l'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a
été
pris
en compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY
Film;"
Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM
TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice
Tout bonnement GENIAL
Dès que je mets le code en appli je vous soumet à tous ma base
cinémathèque
pour exploitation et critiques...
MERCI A TOUS
Patrice
"Ilan" a écrit dans le message de
news:PatCatNats
si tu veux ajouter une condition WHERE regarde la ligne marquee par < > > et remplace Film par le nom du control qui contient la valeur.
Function fnConcatGenreFilm()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved as Boolean
sSQL = "Select Film, Genre From TableGenre WHERE Film=" & Film.Value < > > Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm FROM TableGenreConcatenner;"
Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
Tobesavedúlse
While Not rstSRC.EOF
If NumFilm <> rstSRC!Film Then
If NumFilm <> 0 Then rstDST.Update : Tobesavedúlse
rstDST.FindFirst("NumFilm=" & rstSRC!Film)
if rstDST.NoMatch then
rstDST.AddNew
rstDST!NumFilm = rstSRC!Film
Else
rstDST.Edit
Endif
rstDST!GenreFilm = rstSRC!Genre
NumFilm = rstSRC!Film
tobesaved=true
Else
rstDST!GenreFilm = rstSRC!Genre & ", " & rstDST!GenreFilm
End If
rstSRC.MoveNext
Wend
If Tobesaved then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.CloseMERCI à tous,
Les 2 codes ci-dessus fonctionnent
(G modifié la ligne [rstDST.FindFirst ("Film=" & rstSRC!Film)] en
[rstDST.FindFirst ("NumFilm=" & rstSRC!Film)] de celui de Ilan)
Je vois le bout du tunnel.
Comme j'ai placé ce code sur un évènement bouton d'un form j'aurais
souhaitéque les actions ne concerne que mon contôle [Film] de mon form. Mais
je
n'arrive pas à placer la condition Where en direct sans passer par une
tablesupplémentaire et intermédiare temporaire et des requêtes suppression
et
ajout.
Est-ce possible d'alléger ma procédure en évitant cette table temp ?
Si non, ce n'est pas grave, car ENFIN j'ai terminé ma base Cinéthèque
grâceà vos trouvailles.
Merci encore.
Patrice
"PatCatNats" a écrit dans le message de
news:cmi6nl$7p7$...(Suite de discussion entammée le 2/11/2004...)
Bonjour à tous,
Je ne m'en sort pas :o((( déjà presque une semaine...
Je reformule mon problème avec de nouveau noms de champs (car les
premiersprovoquaient des références circulaires dans le code...) :
Je cherche (mais ne trouve pas...) le moyen de concaténer les
valeurs
d'unchamps pour mettre dans un état avec des virgules comme séparateur.
Exemple :
J'ai un sous-formulaire en mode continue avec une liste déroulante :
[TableGenre]
[Film] [Genre]
1 Dramatique
1 Comédie
2 Fantastique
2 Humour
3 Dessin animée
Je voudrais celà donne dans une nouvelle table :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Dramatique, Comédie
2 Fantastique, Humour
3 Dessin animée
J'ai avancé avec du code construit à l'aide du groupe mais celà
plante
pourl'instant sur la ligne :
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
l-----------------------------------l
l Erreur d'exécution 3021: l
l Aucun enregistrement en cours l
l-----------------------------------l
Après avoir arrêté le débogueur, je m'aperçois que le 2ème champs a
étéprisen compte mais pas le premier du film 1... soit :
[TableGenreConcatenner]
[NumFilm] [GenreFilm]
1 Comédie
Et si j'insiste :
l-----------------------------------l
l Erreur d'exécution 3421: l
l Erreur de conversion de type l
l-----------------------------------l
Voilà le code :
Private Sub BtnConcatenerNews_Click()
Dim dbs As DAO.Database
Dim rstSRC As DAO.Recordset
Dim rstDST As DAO.Recordset
Dim NumFilm As Integer
Dim sSQL As String
Dim ToBeSaved As Boolean
sSQL = "Select Film, Genre As GenreFilm From TableGenre ORDER BY
Film;"Set dbs = CurrentDb
Set rstSRC = dbs.OpenRecordset(sSQL)
sSQL = "Select NumFilm, GenreFilm As Genre FROM
TableGenreConcatenner;"Set rstDST = dbs.OpenRecordset(sSQL)
rstSRC.MoveFirst
NumFilm = 0
ToBeSaved = False
While Not rstSRC.EOF
If NumFilm <> 0 Then rstDST.Update: ToBeSaved = False
If NumFilm <> rstSRC!Film Then
rstDST.FindFirst ("NumFilm=" & rstSRC!Film)
If rstDST.NoMatch Then
rstDST.AddNew
Else
rstDST.Edit
End If
rstDST!NumFilm = rstSRC!Film
rstDST!Genre = rstSRC!GenreFilm
NumFilm = rstSRC!Film
ToBeSaved = True
Else
rstDST!NumFilm = rstSRC!GenreFilm & ", " & rstDST!Genre
End If
rstSRC.MoveNext
Wend
If ToBeSaved Then rstDST.Update
rstDST.Close
rstSRC.Close
dbs.Close
End Sub
Merci de m'aider.
Patrice