nicoine
Messages postés51Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention23 février 2012
-
27 déc. 2006 à 09:44
cavo789
Messages postés168Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention28 juillet 2009
-
27 déc. 2006 à 15:25
Salut à tous,
Je débute en SQL et donc je bloque sur une commande d'insertion dans une table,je m'explique:
Je voudrai appliquer une mise à jour sur une base de donnée existante avec une commande SQL.
en gros j'aimerai faire ceci::
Position=SELECT NumTypeCaracteristique FROM TypeCaracteristique WHERE NomTypeCaracteristique = 'Végétal'
INSERT INTO [dbo].[Specification] ([NomSpec], [taillevalspec], [UniteSpec], [TypeSpec], [PlaceSpec], [numTypeCaracteristique])
VALUES ( "Dimension", 500, "", "0", 0, Position)
Evidement cela ne fonctionne pas, je ne sait pas si l'on peut faire intervenir une variable, je ne sait pas non plus comment remplacer cette variable par le 'select...' directement ds le 'insert into...'
nicoine
Messages postés51Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention23 février 2012 27 déc. 2006 à 10:14
Une insertion: celle que j'ai spécifier sauf que à la place de la variable Position il faut que je récupère la valeur dans une autre table,
c'est ce que j'ai fait avec l'instruction Position = SELECT....
cavo789
Messages postés168Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention28 juillet 20091 27 déc. 2006 à 10:55
Ci-dessous un petit code. Je suppose que tu travailles en VBA Access si pas, il faudra un peu modifier le code et je suppose aussi que tout est OK (je n'ai pas fais de contrôle rs.EOF ou autre)
Dim rs As RecordSet
Dim sSQL As String
' Lecture de Position
sSQL = "SELECT NumTypeCaracteristique FROM TypeCaracteristique WHERE NomTypeCaracteristique = 'Végétal'"
nicoine
Messages postés51Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention23 février 2012 27 déc. 2006 à 11:30
Je suis dacord avec ton code mais maleurheusement je ne peus pas faire comme cela.
J'ai oublier de préciser que pour executer mes requetes SQL, je lis un fichier texte qui contient les requetes.
Je doit donc récupérer du SQL pur et dur pour ensuite les executer à partir de VB6.
Actuellement je fais comme ceci:
....
CurrentDB.Execute Text
Où Texte est la variable possédant la requete récupéré du fichier text.
Nico
Vous n’avez pas trouvé la réponse que vous recherchez ?
cavo789
Messages postés168Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention28 juillet 20091 27 déc. 2006 à 13:43
Suffit dès lors que tu fasses un Replace.
Si je te comprends, la variable Text contient ceci : INSERT INTO [dbo].[Specification] ([NomSpec], [taillevalspec], [UniteSpec], [TypeSpec], [PlaceSpec], [numTypeCaracteristique]) " & _
"VALUES ( 'Dimension', 500, '', '0', 0, Position)"
Tu fais donc un Replace(Text, "Position", Position). Le texte Position sera dès lors remplacé par la variable.
PS : Lorsque tu poses une question, merci d'être le plus explicite possible pour éviter à tous une perte de temps.
nicoine
Messages postés51Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention23 février 2012 27 déc. 2006 à 14:03
Je crois qu'on ne c'est pas très bien compris, je reformule ma question plus clairement:
Je dois créer un fichier texte dans lequel je dois indiquer des requêtes SQL et 'seulement' des requêtes SQL, rien d'autres.
Ce fichier est ensuite lu par une application écrite en VB6, l'application récupère les requetes SQL et les executes.
Je sais éffectuer ces requête en utilisant VB mais j'aimerais savoir comment traduire ceci en language purement SQL afin des les placer dans un fichier texte,
c'est à dire traduire ceci en SQL:
MyRecordset.Open "SELECT NumTypeCaracteristique FROM TypeCaracteristique WHERE NomTypeCaracteristique = 'Végétal'",....
Position = MyRecordset! NumTypeCaracteristique
Text = "INSERT INTO [dbo].[Specification] ([NomSpec], [taillevalspec], [UniteSpec], [TypeSpec], [PlaceSpec], [numTypeCaracteristique])
VALUES ( "Dimension", 500, "", "0", 0," & Position & ")"
Le but de la manoeuvre est donc de remplacer de manière dynamique le mot Position par une variable lue dans ton code.
Après avoir chargé la ligne ci-dessus dans une variable (appelons-la sSQL), tu dois donc faire une requête SQL préalable pour récupérer la position. Ceci se fait comme suit
Dim rs As RecordSet
Dim sSQL As String
Dim wPosition As Long
' Lecture de Position
sSQL = "SELECT NumTypeCaracteristique FROM TypeCaracteristique WHERE NomTypeCaracteristique = 'Végétal'"
Set rs = CurrentDB.OpenRecordSet(sSQL)
wPosition = rs.fields("NumTypeCaracteristique")
rs.Close
Set rs = Nothing
Nous voici donc avec deux variables sSQL et wPosition.
Le reste est simple : il suffit de remplacer le mot Position dans sSQL avec le contenu de la variable wPosition et donc
nicoine
Messages postés51Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention23 février 2012 27 déc. 2006 à 14:55
Je crois que l'on ne se comprend pas du tout, mais on devrait y arriver::
Je suis à peu pret d'acord avec ton code mais ce n'est pas du code VB qu'il me faut (ca je sais faire), c'est du code SQL équivalent.
Ce que je recherche c'est une requete, ou une série de requetes SQL afin de remplir mon fichier text (ce fichier ne doit comporter que des requêtes SQL).
INSERT INTO [dbo].[Specification] ([NomSpec], [taillevalspec], [UniteSpec], [TypeSpec], [PlaceSpec], [numTypeCaracteristique])
VALUES ( "Dimension", 500, "", "0", 0, Position)
:: ceci n'est pas une requête SQL car à ma connaissance SQL ne gère pas les variables,
Position sera donc ici considéré comme du text,
l'autre solution qui doit certainement être possible c'est d'imbriquer 2 requetes SQL, comme lorsque l'on utilise la command JOIN,
mais je ne sais pas comment formuler ce genre de requete avec INSERT INTO.