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

Delphi Discussion :

Erreur "indice de liste hors limites(1)" [Débutant(e)]


Sujet :

Delphi

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    TS Basse DE Donee
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : TS Basse DE Donee
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Points : 0
    Points
    0
    Par défaut Erreur "indice de liste hors limites(1)"
    Salut !
    J'ai un problème avec le code Delphi dès que le user appuie sur bouton de la fiche, base "sql server 2000" via une procédure stockée. Voici les parametres :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var mr:integer;
    begin
    datamodule1.ADOStoredProc3.Parameters[1].Value:=
    datamodule1.lignecommande.fieldbyname('ref').asinteger;
    datamodule1.ADOStoredProc3.ExecProc;
    mr:=datamodule1.ADOStoredProc3.Parameters[2].Value;
    edit1.Text:=inttostr(mr)
    Et voici le code de la procédure stocke qui calculé la quantité totale d'un produit sélectionné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE proc nombreproduit
    (@ref int, @totalproduit int output)
    as 
    begin
    select @totalproduit=sum(qtec) from  lignecommmande
    where ref=@ref
    end
    GO
    Nom : Sans titre.png
Affichages : 2215
Taille : 786,5 KoNom : Sans titre1.png
Affichages : 2111
Taille : 879,7 Ko

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 658
    Points : 3 599
    Points
    3 599
    Billets dans le blog
    2
    Par défaut
    Bonsoir,

    Je pense que l'indice des "parameters" doit commencer à 0. Essayez en remplaçant
    datamodule1.ADOStoredProc3.Parameters[1].Value par datamodule1.ADOStoredProc3.Parameters[0].Value
    et
    datamodule1.ADOStoredProc3.Parameters[2].Value par datamodule1.ADOStoredProc3.Parameters[1].Value
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    TS Basse DE Donee
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : TS Basse DE Donee
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Points : 0
    Points
    0
    Par défaut
    merci de ton aide mais maintenant erreur suivante s'affiche( erreur "indice de liste hors limites(0) )

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 658
    Points : 3 599
    Points
    3 599
    Billets dans le blog
    2
    Par défaut
    As tu créé les paramètres avant des les utiliser ?

    Exemple par le code :
    with ADOStoredProc1.Parameters.AddParameter do Value := laValeur;

    ou en mode conception en ajoutant les deux paramètres via l'inspecteur d'objet.
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    TS Basse DE Donee
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : TS Basse DE Donee
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Points : 0
    Points
    0
    Par défaut
    Nom : Sans titre.png
Affichages : 2052
Taille : 738,4 Ko
    voici les paramètres mais quand je fais acitve a true le message suivant s'affiche Nom : Sans titre1.png
Affichages : 2067
Taille : 779,9 Ko

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    il y a une confusion entre les paramètres de la procédure SQLserver et ceux de ADOquery, à ma souvenance il faut que la requête ADOQuery soit faite avec des :
    plutôt qu'une ADOstoredprocedure essayez une ADOquery qui appelle la procédure SELECT TotalProduit FROM nombreproduit WHERE REF=:Refet un open.
    Ceci écrit, je ne suis pas un spécialiste de ADO et ne connais pas ADOStoredProc
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    TS Basse DE Donee
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : TS Basse DE Donee
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Points : 0
    Points
    0
    Par défaut
    oui je suis entrain d’exécuter une procédure stocke je crois que adostoredproc et nécessaire

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par chicha23 Voir le message
    oui je suis entrain d’exécuter une procédure stocke je crois que adostoredproc et nécessaire
    non, la requête que je vous ai indiqué fera la même chose, à la différence que celle-ci vous retournera un résultat plutôt qu'un paramètre en retour d'où le besoin de faire un
    type de code de ce genre (écrit sans contrôle)
    With anADOQuery do
    begin
    Parameters.ParamByName('Ref').asInteger:= datamodule1.lignecommande.fieldbyname('ref').asinteger;
    Open;
    mr:=FieldByname('TotalProduit').asxxxxxxx;
    Close;
    end;
    et comme je vois que le paramètre se trouve dans un Dataset et avec le même nom de colonne , en liant l'ADOquery à cette source il y aurait même pas besoin de passer le paramètre !

    de toute façon si vous tenez à passer par des paramètres, utilisez le nom sans le @
    i.e. ADOStoredProc.Parameters.ParamByName('Ref').value := unevaleur;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    TS Basse DE Donee
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : TS Basse DE Donee
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Points : 0
    Points
    0
    Par défaut
    et comment faire pour le calcul de la procedure stocke explique moi svp je suis nouveauNom : Sans titre.png
Affichages : 2060
Taille : 337,3 Ko

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 15
    Points : 0
    Points
    0
    Par défaut
    Bonjour chicha23 ;
    est ce que vous utilisez une boucle a l'interieur de votre code ?
    si bien le cas donc je te conceil de mettre un -1 dans la valeur d'arret dela boucle .
    j'ai eu le meme probleme et ca marche ..

    Salam .

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 15
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par chicha23 Voir le message
    merci de ton aide mais maintenant erreur suivante s'affiche( erreur "indice de liste hors limites(0) )
    bonjour
    mettre faire deminuer cette valeur avec un indice
    c'est a dir au lieu d'utiliser 0 , mettre -1 ,
    Salam

  12. #12
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,
    depuis mai 2017, il a du trouver la solution (bien que le post ne soit pas marqué résolu !)
    A+
    Charly

Discussions similaires

  1. erreur: indice de liste hors limite
    Par Abou Zar dans le forum Web & réseau
    Réponses: 12
    Dernier message: 06/10/2010, 13h08
  2. Indice de liste hors limite
    Par pierrot67 dans le forum Bases de données
    Réponses: 2
    Dernier message: 14/02/2007, 11h42
  3. [débutant] erreur "indice de liste hors limites(1)"
    Par lidouka dans le forum Langage
    Réponses: 2
    Dernier message: 13/12/2005, 14h31
  4. Indice de liste hors limite !!! Report
    Par EssaiEncore dans le forum Langage
    Réponses: 1
    Dernier message: 29/11/2005, 10h00

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