Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

insert into bug

9 réponses
Avatar
Macgiver
Bonour a tous voici mon problème. J'ai ce code-ci (voir plus bas) pour
insérer toutes les données d'une table dans une autre table mais lorsque
j'exécute cette fonction j'obtiens l'erreur suivante : Erreur d'exécution
'3061': Trop peu de paramètres. 7 attendu.

pourquoi???? et comment corriger ce bug

voici le code utilisé:

Function ajout_copy()
Set dB = CurrentDb
Set Rs = Nothing

SQL = "SELECT BLOC_1, NO_PE, BLOC_1, CIE_1, BLOC_1, NO_SYSWIBS, REALISEE
FROM var_pe_clip_rex"
Set Rs = dB.OpenRecordset(SQL)

If Rs.RecordCount > 0 Then
Rs.MoveFirst
Do Until Rs.EOF
Rs.MoveNext
dB.Execute "INSERT INTO [peclip] Values (NO_COMPILA, NO_PE, BLOC_1, CIE_1,
CODE_ACI, NO_SYSWIBS, REALISEE)"
Loop
End If
End Function

--
merci

9 réponses

Avatar
Fabien
Macgiver a écrit :
Bonour a tous voici mon problème. J'ai ce code-ci (voir plus bas) pour
insérer toutes les données d'une table dans une autre table mais lorsque
j'exécute cette fonction j'obtiens l'erreur suivante : Erreur d'exécution
'3061': Trop peu de paramètres. 7 attendu.

pourquoi???? et comment corriger ce bug

voici le code utilisé:

Function ajout_copy()
Set dB = CurrentDb
Set Rs = Nothing

SQL = "SELECT BLOC_1, NO_PE, BLOC_1, CIE_1, BLOC_1, NO_SYSWIBS, REALISEE
FROM var_pe_clip_rex"
Set Rs = dB.OpenRecordset(SQL)

If Rs.RecordCount > 0 Then
Rs.MoveFirst
Do Until Rs.EOF
Rs.MoveNext
dB.Execute "INSERT INTO [peclip] Values (NO_COMPILA, NO_PE, BLOC_1, CIE_1,
CODE_ACI, NO_SYSWIBS, REALISEE)"
Loop
End If
End Function



Salut
Avec :

Function ajout_copy()
Dim Rst as dao.recordset
Dim Sql as String
SQL = "SELECT BLOC_1, NO_PE, BLOC_1, CIE_1, BLOC_1, NO_SYSWIBS,
REALISEE FROM var_pe_clip_rex"
> Set Rs = CurrentdB.OpenRecordset(SQL)
> While not Rst.eof
Currentdb.Execute "INSERT INTO [peclip]
(Champ1,Champ2,Champ3,Champ4,Champ5,Champ6,Champ7) Values (" &
Rst("NO_COMPILA" & "," & rst("NO_PE") & "," & rst("BLOC_1") & "," &
rst("CODE_ACI") & "," & rst("NO_SYSWIBS") & "," & rst("REALISEE" & ");"
Rs.MoveNext
Wend
Rst.close
Set Rst =Nothing

> End Function
ça devrait mieux fonctionner ;-)
@+
Avatar
Eric
Bonjour,

Beaucoup de choses à dire
1- Pourquoi St rs = Nothing en début de procédure ?
2 - Dans la 1ère chaine SQL tu as 3 fois le même champ à savoir BLOC_1,
est-ce voulu ?
3 - s'il faut renseigner les champs de la table pepclip à partir de ceux
de la table var_pe_clip_rex, il faut les passer en variables. Une autre
solution serait de faire un SELECT INTO pepcli SELECT ... FROM
var_pe_clip_rex
4 - j'ignore le type des champs
5 - Je suppose que tu veux copier les valeurs des enregistrements de la
table var_pe_clip_rex dans la table pepcli

Donc au jugé je te propose les 2 solutions :

Avec INSERT INTO SELECT ... FROM , le plus simple
Sub Ajout_Copy()
Dim strSQL as String
strSQL="INSERT INTO [peclip] SELECT BLOC_1, NO_PE, BLOC_1, CIE_1,
BLOC_1, NO_SYSWIBS, REALISEE FROM var_pe_clip_rex"
CurrentdB.Execute strSQL
End Sub


Avec INSERT INTO ... VALUES
Sub Ajout_Copy()
Dim db as database, strSQL as String
Dim rs as DAO.Recordset
Set db = Currentdb
strSQL="SELECT BLOC_1, NO_PE, BLOC_1, CIE_1, BLOC_1, NO_SYSWIBS,
REALISEE FROM var_pe_clip_rex"
Set Rs = dB.OpenRecordset(SQL)
While not rs.eof
dB.Execute "INSERT INTO [peclip] Values (" & rs(0) & "," & rs(1) _
& "," & rs(2) & "," & rs(3) & "," & rs(4) & "," & rs(5) & "," _
& rs(6) & ")"
rs.movenext
Wend
set rs=nothing: set db =nothing
End Sub

ICI : tous les champs sont considérés comme numériques
rs(0) correspond au 1er champ de rs
Si rs(1) est alphanumérique, par exemple :
dB.Execute "INSERT INTO [peclip] Values (" & rs(0) & ",'" & rs(1) _
& "'," & rs(2) & "," & rs(3) & "," & rs(4) & "," & rs(5) & "," _
& rs(6) & ")"


Macgiver a écrit :
Bonour a tous voici mon problème. J'ai ce code-ci (voir plus bas) pour
insérer toutes les données d'une table dans une autre table mais lorsque
j'exécute cette fonction j'obtiens l'erreur suivante : Erreur d'exécution
'3061': Trop peu de paramètres. 7 attendu.

pourquoi???? et comment corriger ce bug

voici le code utilisé:

Function ajout_copy()
Set dB = CurrentDb
Set Rs = Nothing

SQL = "SELECT BLOC_1, NO_PE, BLOC_1, CIE_1, BLOC_1, NO_SYSWIBS, REALISEE
FROM var_pe_clip_rex"
Set Rs = dB.OpenRecordset(SQL)

If Rs.RecordCount > 0 Then
Rs.MoveFirst
Do Until Rs.EOF
Rs.MoveNext
dB.Execute "INSERT INTO [peclip] Values (NO_COMPILA, NO_PE, BLOC_1, CIE_1,
CODE_ACI, NO_SYSWIBS, REALISEE)"
Loop
End If
End Function




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Eric
.../...
En supposant que pepcli a autant de champs (et dans le même ordre) que
var_pe_clip_rex

Eric a écrit :
Bonjour,

Beaucoup de choses à dire
1- Pourquoi St rs = Nothing en début de procédure ?
2 - Dans la 1ère chaine SQL tu as 3 fois le même champ à savoir BLOC_1,
est-ce voulu ?
3 - s'il faut renseigner les champs de la table pepclip à partir de ceux
de la table var_pe_clip_rex, il faut les passer en variables. Une autre
solution serait de faire un SELECT INTO pepcli SELECT ... FROM
var_pe_clip_rex
4 - j'ignore le type des champs
5 - Je suppose que tu veux copier les valeurs des enregistrements de la
table var_pe_clip_rex dans la table pepcli

Donc au jugé je te propose les 2 solutions :

Avec INSERT INTO SELECT ... FROM , le plus simple
Sub Ajout_Copy()
Dim strSQL as String
strSQL="INSERT INTO [peclip] SELECT BLOC_1, NO_PE, BLOC_1, CIE_1,
BLOC_1, NO_SYSWIBS, REALISEE FROM var_pe_clip_rex"
CurrentdB.Execute strSQL
End Sub


Avec INSERT INTO ... VALUES
Sub Ajout_Copy()
Dim db as database, strSQL as String
Dim rs as DAO.Recordset
Set db = Currentdb
strSQL="SELECT BLOC_1, NO_PE, BLOC_1, CIE_1, BLOC_1, NO_SYSWIBS,
REALISEE FROM var_pe_clip_rex"
Set Rs = dB.OpenRecordset(SQL)
While not rs.eof
dB.Execute "INSERT INTO [peclip] Values (" & rs(0) & "," & rs(1) _
& "," & rs(2) & "," & rs(3) & "," & rs(4) & "," & rs(5) & "," _
& rs(6) & ")"
rs.movenext
Wend
set rs=nothing: set db =nothing
End Sub

ICI : tous les champs sont considérés comme numériques
rs(0) correspond au 1er champ de rs
Si rs(1) est alphanumérique, par exemple :
dB.Execute "INSERT INTO [peclip] Values (" & rs(0) & ",'" & rs(1) _
& "'," & rs(2) & "," & rs(3) & "," & rs(4) & "," & rs(5) & "," _
& rs(6) & ")"


Macgiver a écrit :
Bonour a tous voici mon problème. J'ai ce code-ci (voir plus bas) pour
insérer toutes les données d'une table dans une autre table mais
lorsque j'exécute cette fonction j'obtiens l'erreur suivante : Erreur
d'exécution '3061': Trop peu de paramètres. 7 attendu.

pourquoi???? et comment corriger ce bug

voici le code utilisé:

Function ajout_copy()
Set dB = CurrentDb
Set Rs = Nothing

SQL = "SELECT BLOC_1, NO_PE, BLOC_1, CIE_1, BLOC_1, NO_SYSWIBS,
REALISEE FROM var_pe_clip_rex"
Set Rs = dB.OpenRecordset(SQL)

If Rs.RecordCount > 0 Then
Rs.MoveFirst
Do Until Rs.EOF
Rs.MoveNext
dB.Execute "INSERT INTO [peclip] Values (NO_COMPILA, NO_PE, BLOC_1,
CIE_1, CODE_ACI, NO_SYSWIBS, REALISEE)"
Loop
End If
End Function







--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Fabien
Macgiver a écrit :
Merci Fabien, mais je ne sais pas si tu as fait une petite erreur au niveau
du code mais j'ai encore une erreur, la voici :

Erreur d'exécution '3265' : Élément non trouvé dans cette collection.

revoici le code adaptée à mes champs:

Function ajout_copy2()
Dim Rst As DAO.Recordset
Dim Sql As String

Sql = "SELECT BLOC_1, NO_PE, BLOC_1, CIE_1, BLOC_1, NO_SYSWIBS, REALISEE
FROM var_pe_clip_rex"
Set Rst = CurrentDb.OpenRecordset(Sql)
While Not Rst.EOF
CurrentDb.Execute "INSERT INTO [peclip] (NO_COMPILA, NO_PE, BLOC_1, CIE_1,
CODE_ACI, NO_SYSWIBS, REALISEE) Values (" & Rst("NO_COMPILA") & "," &
Rst("NO_PE") & "," & Rst("BLOC_1") & "," & Rst("CODE_ACI") & "," &
Rst("NO_SYSWIBS") & "," & Rst("REALISEE") & ");"
Rst.MoveNext
Wend
Rst.Close
Set Rst = Nothing
End Function

merci beaucoup



"Fabien" a écrit dans le message de news:

Macgiver a écrit :
Bonour a tous voici mon problème. J'ai ce code-ci (voir plus bas) pour
insérer toutes les données d'une table dans une autre table mais lorsque
j'exécute cette fonction j'obtiens l'erreur suivante : Erreur d'exécution
'3061': Trop peu de paramètres. 7 attendu.

pourquoi???? et comment corriger ce bug

voici le code utilisé:

Function ajout_copy()
Set dB = CurrentDb
Set Rs = Nothing

SQL = "SELECT BLOC_1, NO_PE, BLOC_1, CIE_1, BLOC_1, NO_SYSWIBS, REALISEE
FROM var_pe_clip_rex"
Set Rs = dB.OpenRecordset(SQL)

If Rs.RecordCount > 0 Then
Rs.MoveFirst
Do Until Rs.EOF
Rs.MoveNext
dB.Execute "INSERT INTO [peclip] Values (NO_COMPILA, NO_PE, BLOC_1,
CIE_1, CODE_ACI, NO_SYSWIBS, REALISEE)"
Loop
End If
End Function



Salut
Avec :

Function ajout_copy()
Dim Rst as dao.recordset
Dim Sql as String
SQL = "SELECT BLOC_1, NO_PE, BLOC_1, CIE_1, BLOC_1, NO_SYSWIBS, REALISEE
FROM var_pe_clip_rex"
Set Rs = CurrentdB.OpenRecordset(SQL)
While not Rst.eof


Currentdb.Execute "INSERT INTO [peclip]
(Champ1,Champ2,Champ3,Champ4,Champ5,Champ6,Champ7) Values (" &
Rst("NO_COMPILA" & "," & rst("NO_PE") & "," & rst("BLOC_1") & "," &
rst("CODE_ACI") & "," & rst("NO_SYSWIBS") & "," & rst("REALISEE" & ");"
Rs.MoveNext
Wend
Rst.close
Set Rst =Nothing

End Function


ça devrait mieux fonctionner ;-)
@+






Normal "CODE_ACI" n'existe pas dans le SQL qui sert de source à ton
RecordSet. Je suppose que tu as voulu écrire Rst ("CIE_1").
A compléter avec l'excellente réponse d'Eric ;-)
@+
Avatar
Eric
re, re
J'avais oublié de mettre les champs dans la solution INSERT iNTO SELECT

Ca donne:
Sub Ajout_Copy()
Dim strSQL as String
strSQL="INSERT INTO [peclip](NO_COMPILA, NO_PE, BLOC_1, CIE_1,
CODE_ACI, NO_SYSWIBS, REALISEE) SELECT BLOC_1, NO_PE, BLOC_1, CIE_1,
BLOC_1, NO_SYSWIBS, REALISEE FROM var_pe_clip_rex"
CurrentdB.Execute strSQL
End Sub

Eric a écrit :
Bonjour,

Beaucoup de choses à dire
1- Pourquoi St rs = Nothing en début de procédure ?
2 - Dans la 1ère chaine SQL tu as 3 fois le même champ à savoir BLOC_1,
est-ce voulu ?
3 - s'il faut renseigner les champs de la table pepclip à partir de ceux
de la table var_pe_clip_rex, il faut les passer en variables. Une autre
solution serait de faire un SELECT INTO pepcli SELECT ... FROM
var_pe_clip_rex
4 - j'ignore le type des champs
5 - Je suppose que tu veux copier les valeurs des enregistrements de la
table var_pe_clip_rex dans la table pepcli

Donc au jugé je te propose les 2 solutions :

Avec INSERT INTO SELECT ... FROM , le plus simple
Sub Ajout_Copy()
Dim strSQL as String
strSQL="INSERT INTO [peclip] SELECT BLOC_1, NO_PE, BLOC_1, CIE_1,
BLOC_1, NO_SYSWIBS, REALISEE FROM var_pe_clip_rex"
CurrentdB.Execute strSQL
End Sub


Avec INSERT INTO ... VALUES
Sub Ajout_Copy()
Dim db as database, strSQL as String
Dim rs as DAO.Recordset
Set db = Currentdb
strSQL="SELECT BLOC_1, NO_PE, BLOC_1, CIE_1, BLOC_1, NO_SYSWIBS,
REALISEE FROM var_pe_clip_rex"
Set Rs = dB.OpenRecordset(SQL)
While not rs.eof
dB.Execute "INSERT INTO [peclip] Values (" & rs(0) & "," & rs(1) _
& "," & rs(2) & "," & rs(3) & "," & rs(4) & "," & rs(5) & "," _
& rs(6) & ")"
rs.movenext
Wend
set rs=nothing: set db =nothing
End Sub

ICI : tous les champs sont considérés comme numériques
rs(0) correspond au 1er champ de rs
Si rs(1) est alphanumérique, par exemple :
dB.Execute "INSERT INTO [peclip] Values (" & rs(0) & ",'" & rs(1) _
& "'," & rs(2) & "," & rs(3) & "," & rs(4) & "," & rs(5) & "," _
& rs(6) & ")"


Macgiver a écrit :
Bonour a tous voici mon problème. J'ai ce code-ci (voir plus bas) pour
insérer toutes les données d'une table dans une autre table mais
lorsque j'exécute cette fonction j'obtiens l'erreur suivante : Erreur
d'exécution '3061': Trop peu de paramètres. 7 attendu.

pourquoi???? et comment corriger ce bug

voici le code utilisé:

Function ajout_copy()
Set dB = CurrentDb
Set Rs = Nothing

SQL = "SELECT BLOC_1, NO_PE, BLOC_1, CIE_1, BLOC_1, NO_SYSWIBS,
REALISEE FROM var_pe_clip_rex"
Set Rs = dB.OpenRecordset(SQL)

If Rs.RecordCount > 0 Then
Rs.MoveFirst
Do Until Rs.EOF
Rs.MoveNext
dB.Execute "INSERT INTO [peclip] Values (NO_COMPILA, NO_PE, BLOC_1,
CIE_1, CODE_ACI, NO_SYSWIBS, REALISEE)"
Loop
End If
End Function







--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Eric
Bonjour,

Ben, non car j'ai dû m'y reprendre à 2 fois :-(

Fabien a écrit :

A compléter avec l'excellente réponse d'Eric ;-)
@+



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Fabien
Eric a écrit :
Bonjour,

Ben, non car j'ai dû m'y reprendre à 2 fois :-(

Fabien a écrit :

A compléter avec l'excellente réponse d'Eric ;-)
@+





Ben ouai des fois on se penche trop vite et on manque de tomber ;-))
Bon Week
Avatar
Macgiver
Merci Fabien, mais je ne sais pas si tu as fait une petite erreur au niveau
du code mais j'ai encore une erreur, la voici :

Erreur d'exécution '3265' : Élément non trouvé dans cette collection.

revoici le code adaptée à mes champs:

Function ajout_copy2()
Dim Rst As DAO.Recordset
Dim Sql As String

Sql = "SELECT BLOC_1, NO_PE, BLOC_1, CIE_1, BLOC_1, NO_SYSWIBS, REALISEE
FROM var_pe_clip_rex"
Set Rst = CurrentDb.OpenRecordset(Sql)
While Not Rst.EOF
CurrentDb.Execute "INSERT INTO [peclip] (NO_COMPILA, NO_PE, BLOC_1, CIE_1,
CODE_ACI, NO_SYSWIBS, REALISEE) Values (" & Rst("NO_COMPILA") & "," &
Rst("NO_PE") & "," & Rst("BLOC_1") & "," & Rst("CODE_ACI") & "," &
Rst("NO_SYSWIBS") & "," & Rst("REALISEE") & ");"
Rst.MoveNext
Wend
Rst.Close
Set Rst = Nothing
End Function

merci beaucoup



"Fabien" a écrit dans le message de news:

Macgiver a écrit :
Bonour a tous voici mon problème. J'ai ce code-ci (voir plus bas) pour
insérer toutes les données d'une table dans une autre table mais lorsque
j'exécute cette fonction j'obtiens l'erreur suivante : Erreur d'exécution
'3061': Trop peu de paramètres. 7 attendu.

pourquoi???? et comment corriger ce bug

voici le code utilisé:

Function ajout_copy()
Set dB = CurrentDb
Set Rs = Nothing

SQL = "SELECT BLOC_1, NO_PE, BLOC_1, CIE_1, BLOC_1, NO_SYSWIBS, REALISEE
FROM var_pe_clip_rex"
Set Rs = dB.OpenRecordset(SQL)

If Rs.RecordCount > 0 Then
Rs.MoveFirst
Do Until Rs.EOF
Rs.MoveNext
dB.Execute "INSERT INTO [peclip] Values (NO_COMPILA, NO_PE, BLOC_1,
CIE_1, CODE_ACI, NO_SYSWIBS, REALISEE)"
Loop
End If
End Function



Salut
Avec :

Function ajout_copy()
Dim Rst as dao.recordset
Dim Sql as String
SQL = "SELECT BLOC_1, NO_PE, BLOC_1, CIE_1, BLOC_1, NO_SYSWIBS, REALISEE
FROM var_pe_clip_rex"
> Set Rs = CurrentdB.OpenRecordset(SQL)
> While not Rst.eof
Currentdb.Execute "INSERT INTO [peclip]
(Champ1,Champ2,Champ3,Champ4,Champ5,Champ6,Champ7) Values (" &
Rst("NO_COMPILA" & "," & rst("NO_PE") & "," & rst("BLOC_1") & "," &
rst("CODE_ACI") & "," & rst("NO_SYSWIBS") & "," & rst("REALISEE" & ");"
Rs.MoveNext
Wend
Rst.close
Set Rst =Nothing

> End Function
ça devrait mieux fonctionner ;-)
@+


Avatar
Macgiver
merci a vous 2 ca fonctionne


"Fabien" a écrit dans le message de news:

Eric a écrit :
Bonjour,

Ben, non car j'ai dû m'y reprendre à 2 fois :-(

Fabien a écrit :

A compléter avec l'excellente réponse d'Eric ;-)
@+





Ben ouai des fois on se penche trop vite et on manque de tomber ;-))
Bon Week