IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement de jobs Discussion :

Erreur sur tOraclerow


Sujet :

Développement de jobs

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2012
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 27
    Points : 28
    Points
    28
    Par défaut Erreur sur tOraclerow
    Bonjour à tous,

    Tout d'abord je suis nouveau sur talend , j'essaye de me documenter pour me débrouiller mais je bloque depuis hier sur un élement sur le stage "tOracleRow"

    J'ai une table en entrée "Suivi"

    Table : Suivi ( ID, Nom , Valeur_actuelle , Valeur_cible ) , je branche cette table avec un 'tOracleRow' puis j'execute la requête sql suivante


    UPDATE TI_MERCANCIA
    SET CANTIDAD = (String)globalMap.get("row1.VALEUR_CIBLE")
    WHERE id_titulo=(Integer)globalMap.get("row1.ID")

    J'ai envie de récuperer les champs "ID" et "valeur cible" , mais je recois les erreurs suivantes :

    Error in the component's properties:WHERE cannot be resolved to a type
    Syntax error, insert ";" to complete LocalVariableDeclarationStatement
    SET cannot be resolved to a type
    Syntax error on token "TI_MERCANCIA", ; expected
    UPDATE cannot be resolved to a variable


    Merci d'avance si vous pouvez m'aider

  2. #2
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Bonjour,

    La requête dans la composant est celle que présenté dans le message précédent ?

    Si oui, il faut la gérer comme une chaine de caractère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    "UPDATE TI_MERCANCIA
    SET CANTIDAD = '"+(String)globalMap.get("row1.VALEUR_CIBLE")"'+
    WHERE id_titulo="+(Integer)globalMap.get("row1.ID")

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2012
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 27
    Points : 28
    Points
    28
    Par défaut IL reste encore une petite erreur
    Citation Envoyé par MythOnirie Voir le message
    Bonjour,

    La requête dans la composant est celle que présenté dans le message précédent ?

    Si oui, il faut la gérer comme une chaine de caractère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    "UPDATE TI_MERCANCIA
    SET CANTIDAD = '"+(String)globalMap.get("row1.VALEUR_CIBLE")"'+
    WHERE id_titulo="+(Integer)globalMap.get("row1.ID")
    Bonjour et merci pour la réponse rapide ,

    j'ai modifié la requête , il ne reste qu'une seule ligne d'erreur

    Error in the component's properties:Syntax error on token ""\'+\nWHERE ID_TITULO="", delete this token

    avez vous une idée sur l'origine de cette erreur

    Encore merci pour votre aide

  4. #4
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Citation Envoyé par tareksey123 Voir le message
    Bonjour et merci pour la réponse rapide ,

    j'ai modifié la requête , il ne reste qu'une seule ligne d'erreur

    Error in the component's properties:Syntax error on token ""\'+\nWHERE ID_TITULO="", delete this token

    avez vous une idée sur l'origine de cette erreur

    Encore merci pour votre aide
    Effectivement, j'ai fais une erreur dans l'enchainement des guillemet et des +. Voila le bout corrigé :
    SET CANTIDAD = '"+(String)globalMap.get("row1.VALEUR_CIBLE")+"'

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2012
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 27
    Points : 28
    Points
    28
    Par défaut Un Grand merci MythOnirie
    Citation Envoyé par MythOnirie Voir le message
    Effectivement, j'ai fais une erreur dans l'enchainement des guillemet et des +. Voila le bout corrigé :
    SET CANTIDAD = '"+(String)globalMap.get("row1.VALEUR_CIBLE")+"'
    Ca marche , je te remercie

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2012
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 27
    Points : 28
    Points
    28
    Par défaut Aucune erreur , mais aucune modification sur la base
    Citation Envoyé par MythOnirie Voir le message
    Effectivement, j'ai fais une erreur dans l'enchainement des guillemet et des +. Voila le bout corrigé :
    SET CANTIDAD = '"+(String)globalMap.get("row1.VALEUR_CIBLE")+"'
    Rebonjour Mythonirie :p ,

    Le Job s'effectue sans aucune erreur , mais pourtant quand je vérifie dans ma base , l'update n'est pas passé.

    as-tu en tête une piste que je puisse creuser dessus ?

  7. #7
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Quel est l’ordonnancement du job. Peut-tu mettre une image de ton batch ?

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mai 2012
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par MythOnirie Voir le message
    Quel est l’ordonnancement du job. Peut-tu mettre une image de ton batch ?
    Voici l'apercu du Job , pour le batch j'ai construit le job , lequel des fichiers en sortie faut il que je prenne en image ? Merci

    Nom : Impr ecran equals.png
Affichages : 690
Taille : 92,0 KoNom : impr eran execution.png
Affichages : 703
Taille : 142,2 KoNom : impr ecran 3.png
Affichages : 681
Taille : 143,3 Ko

  9. #9
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Il n'y a pas besoin d'utiliser les globalMap, par contre il faut transmettre les différentes infos clés dans le tMap.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "UPDATE TI_MERCANCIA
    SET CANTIDAD = '"+Poids.VALEUR_CIBLE+"
    WHERE id_titulo="+Poids.ID
    Ensuite, il serait peut-être intéressant dans ce job d'utiliser des requêtes préparés pour les mises à jour.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mai 2012
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 27
    Points : 28
    Points
    28
    Par défaut Mille merci MythOnirie
    Citation Envoyé par MythOnirie Voir le message
    Il n'y a pas besoin d'utiliser les globalMap, par contre il faut transmettre les différentes infos clés dans le tMap.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "UPDATE TI_MERCANCIA
    SET CANTIDAD = '"+Poids.VALEUR_CIBLE+"
    WHERE id_titulo="+Poids.ID
    Ensuite, il serait peut-être intéressant dans ce job d'utiliser des requêtes préparés pour les mises à jour.
    Ça marche pour l'insertion ,

    Je n'ai par contre pas compris comment faire pour la préparer pour les mises à jour, as tu une proposition ?

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mai 2012
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 27
    Points : 28
    Points
    28
    Par défaut Petite question tant qu'on y est
    Citation Envoyé par MythOnirie Voir le message
    Il n'y a pas besoin d'utiliser les globalMap, par contre il faut transmettre les différentes infos clés dans le tMap.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "UPDATE TI_MERCANCIA
    SET CANTIDAD = '"+Poids.VALEUR_CIBLE+"
    WHERE id_titulo="+Poids.ID
    Ensuite, il serait peut-être intéressant dans ce job d'utiliser des requêtes préparés pour les mises à jour.

    Si je veux faire une autre requete "Update" sur une autre table , je fais ca sur un autre tOraclerow ?

  12. #12
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Citation Envoyé par tareksey123 Voir le message
    Si je veux faire une autre requete "Update" sur une autre table , je fais ca sur un autre tOraclerow ?
    Oui, utiliser un tOraclerow par table permet de mieux s'y retrouver.

    Pour utiliser une instruction préparé, il faut modifier la requête ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "UPDATE TI_MERCANCIA
    SET CANTIDAD = ?
    WHERE id_titulo=?"
    Et aller dans les paramètres avancés du composant, sélectionner le champ "Utiliser l'instruction préparée" et lister les deux paramètres de la requête.
    En index, mettre 1 et 2 en type, string et Intege et en valeur, les champs que l'on avait avant (Poids.VALEUR_CIBLE et Poids.ID).

  13. #13
    Nouveau membre du Club
    Inscrit en
    Mai 2012
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 27
    Points : 28
    Points
    28
    Par défaut Super , une toute derniere question apres j'y vais :p <3 <3
    Citation Envoyé par MythOnirie Voir le message
    Oui, utiliser un tOraclerow par table permet de mieux s'y retrouver.

    Pour utiliser une instruction préparé, il faut modifier la requête ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "UPDATE TI_MERCANCIA
    SET CANTIDAD = ?
    WHERE id_titulo=?"
    Et aller dans les paramètres avancés du composant, sélectionner le champ "Utiliser l'instruction préparée" et lister les deux paramètres de la requête.
    En index, mettre 1 et 2 en type, string et Intege et en valeur, les champs que l'on avait avant (Poids.VALEUR_CIBLE et Poids.ID).

    dans un tOraclRow : j'essaye la requête suivante

    "UPDATE titulo_msg_out
    set situacao_msg = "AEN"
    where numero_msg =
    (Select numero_msg from TITULO_MSG_OUT
    where NUMERO_REGISTO="+Poids.NUMERO_REGISTRO
    and EDI_DESTINATARIO='611ADII00100');

    je veux juste savoir si ce genre de requête peut fonctionner sur tOracleRow , car ca me sort une erreur

  14. #14
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Oui, ce genre de requête fonctionne. Si cela te sort une erreur c'est par ce que ta requête est mal formatée.

    Voici ce qu'il faudrait avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    "UPDATE titulo_msg_out 
    set situacao_msg = 'AEN' 
    where numero_msg =
    (Select  numero_msg  from TITULO_MSG_OUT
    where NUMERO_REGISTO= '"+Poids.NUMERO_REGISTRO+"'
    and EDI_DESTINATARIO='611ADII00100')"
    J'ai fais ici la supposition que le champ NUMERO_REGISTRO est de type string.

  15. #15
    Nouveau membre du Club
    Inscrit en
    Mai 2012
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par MythOnirie Voir le message
    Oui, ce genre de requête fonctionne. Si cela te sort une erreur c'est par ce que ta requête est mal formatée.

    Voici ce qu'il faudrait avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    "UPDATE titulo_msg_out 
    set situacao_msg = 'AEN' 
    where numero_msg =
    (Select  numero_msg  from TITULO_MSG_OUT
    where NUMERO_REGISTO= '"+Poids.NUMERO_REGISTRO+"'
    and EDI_DESTINATARIO='611ADII00100')"
    J'ai fais ici la supposition que le champ NUMERO_REGISTRO est de type string.
    et si il est bigdécimal je fais ca
    where NUMERO_REGISTO= "+Poids.NUMERO_REGISTRO ?

  16. #16
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Il me semble que ça dépend surtout du type du champ en base de donnée. Mais oui, pas de guillemet simple. Pense bien à réouvrir la requête avec +" à la fin de la ligne pour prendre en compte la suite de la requête.

  17. #17
    Nouveau membre du Club
    Inscrit en
    Mai 2012
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par MythOnirie Voir le message
    Il me semble que ça dépend surtout du type du champ en base de donnée. Mais oui, pas de guillemet simple. Pense bien à réouvrir la requête avec +" à la fin de la ligne pour prendre en compte la suite de la requête.
    Ca marche , Merci du fond du coeur ! Bonne soirée

  18. #18
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    De rien, pense à bien mettre le sujet en résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  2. [VBS] Erreur sur "AddWindowsPrinterConnection"
    Par Admin dans le forum VBScript
    Réponses: 5
    Dernier message: 27/03/2004, 16h15
  3. Erreur sur serveur lié
    Par k-lendos dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/03/2004, 15h21
  4. []Erreur sur second emploi collection binding
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/03/2004, 18h02
  5. Erreur sur le TNSListener après installation de 9iAS
    Par Patmane dans le forum Installation
    Réponses: 4
    Dernier message: 04/02/2004, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo