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

Bases de données Delphi Discussion :

Erreur au vidage d'une table : "Violation de clé"


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut Erreur au vidage d'une table : "Violation de clé"
    Bonjour a tous.
    Je me retrouve coincé une fois encore :

    L'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Le projet ProjectName.exe a provoqué une classe d'exception EDBEngineError avec le message 'violation de clé'.
    survient lorsque j'utilise une fonction qui vide une table et qui la remplie avec de nouveaux élements.

    Aparement c'est un problem de clé, je suppose que cela implique l'index! Mais je ne comprend pas pourquoi.
    Mes deux tables ont le meme champ d'indexé qui est : N

    Voici le code utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    procedure fill(var a,b:Ttable);
    begin
        a.DisableControls;
        b.DisableControls;
        a.First;
        While not a.Eof do
        begin
          a.Edit;
          a.Delete;
        end;
        b.first;
        while not b.Eof do
        begin
          a.insert;
          a.FieldByName('N').value:= b.FieldByName('N').value;
          a.FieldByName('Open time').value:= b.FieldByName('Open time').value;
          a.FieldByName('Name').value:= b.FieldByName('Name').value;
          a.FieldByName('ID').value:= b.FieldByName('ID').value;
          a.FieldByName('Member').value:= b.FieldByName('Member').value;
          a.FieldByName('Location').value:= b.FieldByName('Location').value;
          a.FieldByName('Assignement').value:= b.FieldByName('Assignement').value;
          a.FieldByName('None').value:= b.FieldByName('None').value;
          a.FieldByName('Current').value:= b.FieldByName('Current').value;
          a.Post; //L'erreur survient ici !!!!!!!!!!!!!!
          b.next;
        end;
        b.EnableControls;
        a.EnableControls;
    end;
     
    procedure TForm1.PageControl2Change(Sender: TObject);
    begin
    case  PageControl2.ActivePageIndex of
     0:  begin
          Topen.Filter:= 'Assignement ='  +quotedstr('Active');
          Topen.Filtered:=true;
          fill(Tdeal,Topen);
         end;
      1:  begin
          Topen.Filter:= 'Assignement ='  +quotedstr('NoActive');
          Topen.Filtered:=true;
          fill(Tdeal,Topen);
         end;
      2:  begin
          Topen.Filter:= 'None ='  +quotedstr('yes');
          Topen.Filtered:=true;
          fill(Tdeal,Topen);
         end;
      3:  begin
          Topen.filtered:= false;
          fill(Tdeal,Topen);
         end;
    end;
    end;
    D'avance merci pour vos bonnes idees

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        a.First;
        While not a.Eof do
        begin
          a.Edit;
          a.Delete;
        end;
    Bizarre ta façon de vider la table.

    Essaye comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      with A do 
      begin
        Close;
        EmptyTable;
        Open;
      end;
    Ensuite, il est à mon avis préférable d'imbriquer ton traitement dans un Try...Finally...end dès lors que tu effectue un DisableControls:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      a.DisableControls;
      b.DisableControls;
      try
        // Ton traitement...
      finally
        a.EnableControls;
        b.EnableControls;
      end;
    @+ Claudius

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    Merci pour le code de vidange de table
    Est il necessaire de metre des try... finally... end apre un DisableControl ?

    J'ai du moins updaté le code mais j'ai toujours la meme erreur

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Quelle est la base de données ? Gères-t-elles les contraintes ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    BD paradox.... et je ne sais pas c'est quoi une contrainte donc je suppose que non...

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    A mon avis ton problème vient du fait que ton Index (N) doit être aussi une clef unique ce qui fait que si tu as deux enregistrements avec 2 champs N identique il te génère cette erreur.

    Vérifie ta table source pour voir si tu n'as pas plusieurs enregistrements avec plusieurs champs N identique.

    fait une requete sur ta table

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select N, count(*) from LE_NOM_DE_LA_TABLE
    Having count(*) >= 2
    Group by N

    Ca te sortiera la liste de tous les N qui sont 2 fois ou plus

    Sinon, Open Time c'est fortement déconseillé les champs avec des espaces.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Oki, Paradox, euh les contraintes cela n'existe pas !
    Mais il existe les Tables de Référence, cela peu géner ?

    Sinon, tu veux effacer une Table, tu as une méthode bien Trash mais qui a l'avantage d'avoir une table on ne peut plus propre ...

    tu fermes (close) tout accès à la table (d'ailleurs pour un EmptyTable, il ne faudrait pas un Exclusive à True ?), tu supprime tous les fichiers liés à la table (*.db, *.px, *yg0, ... *.mmo), et tu mets à la place des fichiers tout propre (une copie vide de la table), et hop, tu réouvres la table et elle est parfaitement vide et packée !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par Malatar Voir le message
    A mon avis ton problème vient du fait que ton Index (N) doit être aussi une clef unique ce qui fait que si tu as deux enregistrements avec 2 champs N identique il te génère cette erreur.
    Effectivement, ce sont bien des clefs uniques. Cela dit, N est un nombre de comptage qui s'implemente de 1 a chaque création de nouveaux champs.
    Donc, il ne peut y avoir deux enregistrements éyant la meme valeur.
    Dites le si je me trompe!


    Un autre point : La discussion http://www.developpez.net/forums/sho...d.php?t=398883
    Le monsieur a le meme probleme que moi mais lorsque les enregistrements depassent la centaine!!!!
    Serait ce une joincidence avec un grand C ?

    En tout cas, probleme toujours pas résolu
    Nota Bene : depuis que j'ai ajouté le bloc try.... finally... end. Ces memes erreurs apparaissent beaucoup moins souvent qu'avant.

  9. #9
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 60

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Points : 43
    Points
    43
    Par défaut
    Si la table 'A' est du type 'Paradox' et son champ 'N' du type 'Autoincrémenté', cela ne m'étonne pas que cela plante au moment du 'Post'.

    Je viens d'essayer de modifier un champs de ce type, pour confirmer ce que je pensait : ce n'est pas possible.

    Toutefois le message d'erreur obtenu par Melles concerne "une violation de clé" alors je ne suis pas sur qu'il y ai un rapport.

    Il faut s'assurer comme l'a bien dit Malatar que la table est propre de tout doublon. Si tu ne connais pas SQL pour appliquer la solution qu'il propose, détruit ta table et re-crée là ( euh pardon de préciser : copie la avant).

  10. #10
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par gduo200 Voir le message
    Si la table 'A' est du type 'Paradox' et son champ 'N' du type 'Autoincrémenté', cela ne m'étonne pas que cela plante au moment du 'Post'.

    Je viens d'essayer de modifier un champs de ce type, pour confirmer ce que je pensait : ce n'est pas possible.
    Tu peux insérer une valeur dans un champ autoincrémenté, sinon il serait impossible de pouvoir faire des copies de tables.


    Citation Envoyé par melles
    Effectivement, ce sont bien des clefs uniques. Cela dit, N est un nombre de comptage qui s'implemente de 1 a chaque création de nouveaux champs.
    Donc, il ne peut y avoir deux enregistrements éyant la meme valeur.
    Dites le si je me trompe!


    Un autre point : La discussion http://www.developpez.net/forums/sho...d.php?t=398883
    Le monsieur a le meme probleme que moi mais lorsque les enregistrements depassent la centaine!!!!
    Serait ce une joincidence avec un grand C ?

    En tout cas, probleme toujours pas résolu
    Nota Bene : depuis que j'ai ajouté le bloc try.... finally... end. Ces memes erreurs apparaissent beaucoup moins souvent qu'avant.
    Essaie avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    procedure fill(var a,b:Ttable);
    begin
        a.DisableControls;
        b.DisableControls;
        try
        a.First;
        While not a.Eof do
        begin
          a.Edit;
          a.Delete;
        end;
        b.first;
        while not b.Eof do
        begin
          a.Append; // J'ai changé cela, je pense qu'il est préférable de l'utiliser
          a.FieldByName('N').value:= b.FieldByName('N').value;
          a.FieldByName('Open time').value:= b.FieldByName('Open time').value;
          a.FieldByName('Name').value:= b.FieldByName('Name').value;
          a.FieldByName('ID').value:= b.FieldByName('ID').value;
          a.FieldByName('Member').value:= b.FieldByName('Member').value;
          a.FieldByName('Location').value:= b.FieldByName('Location').value;
          a.FieldByName('Assignement').value:= b.FieldByName('Assignement').value;
          a.FieldByName('None').value:= b.FieldByName('None').value;
          a.FieldByName('Current').value:= b.FieldByName('Current').value;
          try
            a.Post; //L'erreur survient ici !!!!!!!!!!!!!!
          Except on E:Exception do
           Showmessage('Erreur d''insertion :' + b.FieldByName('N').AsString + ' - ' + b.FieldByName('Open time').AsString);
          end; 
          b.next;
        end;
        finally
        b.EnableControls;
        a.EnableControls;
        end;
    end;
    Sinon pour faire une copie simple d'une table dans une autre (il faut qu'elles aient exactement les mêmes champs).

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Insert into Table_Destination
    Select * from Table_Source

    Pas sûr que ca fonctionne avec Paradox, je n'utilise plus cette base de données depuis des lustres.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  11. #11
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 60

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Points : 43
    Points
    43
    Par défaut
    de Malatar
    Tu peux insérer une valeur dans un champ autoincrémenté, sinon il serait impossible de pouvoir faire des copies de tables.
    Effectivement, il faut toutefois veiller à fixer la propriété ReadOnly du champ à False. Ce qui n'est pas la valeur par défaut. Merci.

  12. #12
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Tient Voir ce sujet

    Sinon, le Exclusive est recommandé pour ce genre d'opération ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a.First;
    While not a.Eof do
    begin
      a.Edit;
      a.Delete;
    end;
    cela me suprend, ceci suffit ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a.First;
    While not a.Eof do
      a.Delete;
    Pour la Copie, on peut faire ceci, cela évite de changer si la structure change
    bon, il faut que la structure soit identique, si l'ordre ne l'est pas, il faut jouer avec FindField ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    b.Open();
    b.First();
     
    for iField := 0 to b.FieldCount - 1 do begin
        a.Fields[iField].ReadOnly := False;
    end;
    while not b.Eof do begin
          a.Append();
          for iField := 0 to b.FieldCount - 1 do begin
              a.Fields[iField].AsVariant := b.Fields[iField].AsVariant;
          end;
          a.Post();
     
          b.Next();
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  13. #13
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par gduo200 Voir le message
    Effectivement, il faut toutefois veiller à fixer la propriété ReadOnly du champ à False. Ce qui n'est pas la valeur par défaut. Merci.
    Je n'ai jamais eu besoin de changer la propriété ReadOnly quand je fais des insertions de données dans un champ auto-incrémenté.

    Citation Envoyé par ShaiLeTroll
    b.Open();
    b.First();

    for iField := 0 to b.FieldCount - 1 do begin
    a.Fields[iField].ReadOnly := False;
    end;
    while not b.Eof do begin
    a.Append();
    for iField := 0 to b.FieldCount - 1 do begin
    a.Fields[iField].AsVariant := b.Fields[iField].AsVariant;
    end;
    a.Post();

    b.Next();
    end;
    Je conseil plutot l'utilisation de l'assign surtout si on commence a avoir des champs de type Blob et autres.

    Au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     a.Fields[iField].AsVariant := b.Fields[iField].AsVariant;
    Je préfére

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     a.Fields.Fields[iField].Assign(b.Fields.Fields[iField]);
    Depuis que j'utilise l'assign je n'ai plus eu aucun problème de transfert de données.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  14. #14
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    si j'ai bien compris vous voullez copier tous le contenu d'une table sans condition dans une autre de la même structures, alors a quoi bon de faire un tel traitement qui peut être long si vous le nombre d'enregistrements est considérable, pourquoi ne pas utiliser une copie directe du fichier avec CopyFile on écrasant l'ancien fichier, ou utiliser le composant TBatchMove comme vous utilisez le BDE.

  15. #15
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Entièrement avec aityahia, la copie brut de fichier, cela fonctionne à tous les coup ! c'est ce que je faisais aussi !

    Personnellement, à chaque lancement de l'appli, la première chose faite était de remplacer certains tables (Caduques) par des fichiers vides, bien propre, et au cas où réparer les autres tables (persistantes) via ce que j'ai fourni en lien plus haut ...

    @Malatar
    Pour le Assign, bien vu, j'ai propose le AsVariant, je l'avais utilisé, c'est sur, je n'ai pas eu de blob dans mes tables (double, integer, date ou chaine, des données à courte durée de vie (caduque) lié à des automates) ...

    Assign je l'utilise plus souvent pour les Strings, ou dans mes classes personnelles (je pense à une couche de persistance pouvant se copier depuis un DataSet ou un autre Persistant, faut que je fasse aussi via un TXMLDocument ou IXMLNode)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  16. #16
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 107
    Points : 115
    Points
    115
    Par défaut
    avant de posé cette question j'aimeré bien comprendre le besoins de faire ce traitement, car AITYAHIA à bien raison, il ya mille et une façon de détourner le problème.
    Essayé de nous expliqué un peut le besoin de votre méthode ?

  17. #17
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 60

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Points : 43
    Points
    43
    Par défaut
    à Melles
    Y a t-il à un moment un filtre sur la table Tdeal ?

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    Me revoila
    J'ai fini par laisser tomber ce projet pendant un petit temps pcq ca m'ennerve assez mais bon faut s'y remetre a un moment donne ou un autre!

    @gduo200 :
    Il n'y a pas de filtre sur Tdeal mais bien sur Topen.

  19. #19
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 60

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Points : 43
    Points
    43
    Par défaut
    A part un éventuel index secondaire unique sur un ou plusieurs autres champs de TDeal je ne vois pas d'où vient le problème.

    Je poste quand même pour demander si il n'y a pas un problème de conception autours de ta table TDeal : Puisque le champs N est renseigné manuellement à partir d'une autre table, y a t-il une raison pour qu'il soit du type autoincrémenté ?

    Dans ton cas, moi j'essayerais de supprimer temporairement la ligne qui affecte N dans la procedure fill, afin de m'assurer que le problème est bien sur ce champs. Peut-être est-ce déja fait ?

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/05/2009, 11h01
  2. Erreur ajout valeur dans une table
    Par sharky1x dans le forum Oracle
    Réponses: 2
    Dernier message: 13/02/2009, 10h35
  3. [AC-97] Select, gestion d'erreur et Alter d'une table liée
    Par Jay.L dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 08/02/2007, 14h31
  4. [JSP]erreur dans parcours d'une table
    Par lcoder dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 06/07/2006, 09h52
  5. Erreur de maj d'une table !
    Par smail21 dans le forum Bases de données
    Réponses: 6
    Dernier message: 30/08/2005, 15h18

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