PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → INSERT En  SQL Sur base HF classique
INSERT En SQL Sur base HF classique
Débuté par kerloic.armor, 16 jan. 2006 08:19 - 11 réponses
Posté le 16 janvier 2006 - 08:19
Bonjour.

J'ai un problème de SQL,en WIndev classique.
Ce SQL ne fonctionne pas, le message étant:
Le nombre de valeurs à insérer est différent du nombre de rubriques.
--
INSERT INTO TblAppartenance (RefDossier,EstConseiller, RefConseiller)
SELECT 148 AS Expr1, 0 AS Expr2, RefConseiller AS Exp23
FROM TblVoletCons WHERE (TblVoletCons.Superviseur=1 OR TblVoletCons.Secretaire=1) AND tblVoletCons.RefVolet=6
--
Pourtant, en fouillant dans les news, la syntaxe semble être:
insert into fichier1 (champ1,champ2) select champ1,champ2 from fichier2.

En simplifiant mon code, je me retrouve avec le même message

INSERT INTO TblAppartenance (RefConseiller) SELECT RefVolet FROM TblVoletCons.

JE ne vois pas du tout ou cela coince?
MErci du coup de main.
Michel, Montréal
Posté le 16 janvier 2006 - 11:47
Bonjour,

Je pense qu'il y a une erreur dans votre syntaxe

En [WD9] sur base de l'aide en ligne que je reproduit pour votre facilité

L'instruction INSERT permet d'ajouter un enregistrement dans un fichier de données.
Son format d'utilisation est :

INSERT INTO NomDuFichier (NomDesRubriques)
VALUES (ValeurDesRubriques)


Exemple : Les codes SQL suivants permettent d'insérer un nouveau client dans le fichier CLIENT :

l'ensemble des informations du client est fourni :

INSERT INTO CLIENT
VALUES (77, 'Martin', 'Julie', '1 rue Giono' ,...
'69000', 'Lyon')


seuls le numéro, le nom et le prénom du client sont fournis :

--------------------------------------

Voici un bout de code que j'utilise et qui fonctionne correctement

// [< Code requête >]
sCodeSQL = [
INSERT INTO CoursVal
( IDValeur, CoursDate, CoursValeur )
VALUES( %1, %2, %3 )
]

sCodeSQL = ChaîneConstruit(sCodeSQL, sIDValeur, sDate, nCours)

Cordialement

Albert
Posté le 16 janvier 2006 - 14:32
Oui, effectivement ce code fonctionne, mais il ne permet pas d'ajouter dans un fichier des infos provenant d'un autre fichier.
Merci de la réponse, mais cela ne m'aide pas, dans ce cas.
Posté le 16 janvier 2006 - 15:08
INSERT INTO TblAppartenance (RefDossier,EstConseiller, RefConseiller)
VALUES (SELECT 148 AS Expr1, 0 AS Expr2, RefConseiller AS Exp23
FROM TblVoletCons WHERE (TblVoletCons.Superviseur=1 OR
TblVoletCons.Secretaire=1) AND tblVoletCons.RefVolet=6)

Michel Lahellec vient de nous annoncer :
Bonjour.

J'ai un problème de SQL,en WIndev classique.
Ce SQL ne fonctionne pas, le message étant:
Le nombre de valeurs à insérer est différent du nombre de rubriques.
--
INSERT INTO TblAppartenance (RefDossier,EstConseiller, RefConseiller)
SELECT 148 AS Expr1, 0 AS Expr2, RefConseiller AS Exp23
FROM TblVoletCons WHERE (TblVoletCons.Superviseur=1 OR
TblVoletCons.Secretaire=1) AND tblVoletCons.RefVolet=6



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Posté le 16 janvier 2006 - 15:56
Merci de la réponse.
Mais j'ai toujours un problème avec la syntaxe
INSERT INTO TblAppartenance (RefDossier,EstConseiller, RefConseiller)
VALUES (SELECT 148 AS Expr1, 0 AS Expr2, RefConseiller AS Exp23
FROM TblVoletCons)
Je suis en 01-90034j
Sur cette syntaxe, le message est :Problème d'initialisation de la requête. Mot SELECT inattendu.
De plus, lorsque j'execute le SQl, Windev me signale que j'ai des ordres spécifiques à un type de serveur.
Michel, Montréal
Posté le 16 janvier 2006 - 16:42
Windev ne parle pas le SQL courant... essais avec
hRequêteSansCorrectionHF



lahellec Michel avait prétendu :
Merci de la réponse.
Mais j'ai toujours un problème avec la syntaxe
INSERT INTO TblAppartenance (RefDossier,EstConseiller, RefConseiller)
VALUES (SELECT 148 AS Expr1, 0 AS Expr2, RefConseiller AS Exp23
FROM TblVoletCons)
Je suis en 01-90034j
Sur cette syntaxe, le message est :Problème d'initialisation de la requête.
Mot SELECT inattendu. De plus, lorsque j'execute le SQl, Windev me signale
que j'ai des ordres spécifiques à un type de serveur. Michel, Montréal



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Posté le 16 janvier 2006 - 18:02
Merci de ce renseignement.
Je vais essayé cela ce soir.(-6heures)
Je vous donnreais le résultat demain.
MErci encore.
michel, Montréal
Posté le 17 janvier 2006 - 08:19
NIET,cela ne fonctionne pas.
J'ai essayé ces différents codes
StrSql est une chaîne
Maquery est une Source de Données
//Elle Fonctionne
StrSql="INSERT INTO TblAppartenance (RefConseiller) VAlues (1)" //Elle Fonctionne
StrSql="INSERT INTO TblAppartenance (RefDossier,EstConseiller, RefConseiller) values ( 1 , 0 , 2 )"
//NIET
StrSql="INSERT INTO TblAppartenance (RefConseiller) SELECT RefConseiller FROM TblVoletCons"
//NIET
StrSql="INSERT INTO TblAppartenance (RefConseiller) values (SELECT RefConseiller as Expr1 FROM TblVoletCons)"
//NIET
StrSql="INSERT INTO TblAppartenance (RefConseiller) values (SELECT TblVoletCons.RefConseiller FROM TblVoletCons )"
//NIET
StrSql="INSERT INTO TblAppartenance (RefConseiller) values (TblVoletCons.RefConseiller FROM TblVoletCons )"
Info(HExécuteRequêteSQL(Maquery,hRequêteSansCorrectionHF,StrSql))

SUR le forum, il y a plusieurs personnes qui ont rencontré ce problème, mais aucune solution.
JE craque.
Si quelqu'un a une solution, merci....
Posté le 17 janvier 2006 - 10:41
passe sur une vrai client/serveur ou utilises les ordres HF

lahellec Michel vient de nous annoncer :
NIET,cela ne fonctionne pas.
J'ai essayé ces différents codes
StrSql est une chaîne
Maquery est une Source de Données
//Elle Fonctionne
StrSql="INSERT INTO TblAppartenance (RefConseiller) VAlues (1)"
//Elle Fonctionne StrSql="INSERT INTO TblAppartenance
(RefDossier,EstConseiller, RefConseiller) values ( 1 , 0 , 2 )" //NIET
StrSql="INSERT INTO TblAppartenance (RefConseiller) SELECT RefConseiller
FROM TblVoletCons" //NIET
StrSql="INSERT INTO TblAppartenance (RefConseiller) values (SELECT
RefConseiller as Expr1 FROM TblVoletCons)" //NIET
StrSql="INSERT INTO TblAppartenance (RefConseiller) values (SELECT
TblVoletCons.RefConseiller FROM TblVoletCons )" //NIET
StrSql="INSERT INTO TblAppartenance (RefConseiller) values
(TblVoletCons.RefConseiller FROM TblVoletCons )"
Info(HExécuteRequêteSQL(Maquery,hRequêteSansCorrectionHF,StrSql))

SUR le forum, il y a plusieurs personnes qui ont rencontré ce problème, mais
aucune solution. JE craque.
Si quelqu'un a une solution, merci....



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Posté le 17 janvier 2006 - 13:55
Merci de ces échanges.
Je crois qu'on peut dire que avec une base HF classique, faire un INSERT avec des données provenant d'une autre fichier est impossible.
Bye
Posté le 17 janvier 2006 - 13:56
Merci de ces échanges.
Je crois qu'on peut dire que avec une base HF classique, faire un INSERT avec des données provenant d'une autre fichier est impossible.
Bye
Posté le 17 janvier 2006 - 14:04
à tester sur une base HF C/S, je ne suis pas sur d'un resultat
positif...

Après mûre réflexion, lahellec Michel a écrit :
Merci de ces échanges.
Je crois qu'on peut dire que avec une base HF classique, faire un INSERT avec
des données provenant d'une autre fichier est impossible. Bye



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "