Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Bases de données
Bases de données Vos questions concernant les bases de données (BDE, Access, SqlServer...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/12/2012, 17h49   #1
medreg
 
Inscription : juin 2006
Messages : 82
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 82
Points : -32
Points : -32
Par défaut J'ai besoin de scanner ce code et de le corriger (les initiés nouvelle numérotation de tous changé un an)

bonjour
J'ai mis ce code pour commencer la numérotation année où tout a changé
En d'autres termes, si j'avais un nombre tel que 01/2012 sur l'exercice 2012
Et a changé l'année à 2013
J'ai besoin de réparer ce code jusqu'à ce que la numérotation recommence et le nouveau numéro souhaité est 01/2013
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TFrm_FactureActel.RzBitBtn3Click(Sender: TObject);
var s,r:string;
t:integer;
begin
with DModule do
begin
If TParam.FieldValues['Annee']+1 then begin
TFActel.Append;
TFActel.FieldValues['Nu_Facture']:=TFActel.RecordCount+1;
end;
end;
s:=DModule.TFActel.FieldValues['Nu_Facture'];
t:=DModule.TParam.FieldValues['Annee'];
r:=inttostr(t);
DModule.TFActel.Edit;
DModule.TFActel.FieldValues['Annee']:=r;
DModule.TFActel.FieldValues['Nu_Facture']:=s+'/'+r;
NumFact.setfocus;
end;
et merçi bcp
je suis en attente de votre repense svp
medreg est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 09/12/2012, 09h34   #2
SergioMaster
Modérateur
 
Avatar de SergioMaster
 
Homme Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 4 209
Détails du profil
Informations personnelles :
Nom : Homme Serge Girard
Âge : 56
Localisation : France

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

Informations forums :
Inscription : janvier 2007
Messages : 4 209
Points : 7 267
Points : 7 267
C'est quoi ce code , qui ne passe même pas une simple vérification syntaxique ?
Citation:
If TParam.FieldValues['Annee']+1
par rapport a quoi ?

en supposant (ce que je n'aime pas)
- que Annee soit un champ Integer,
- que la table Factel soit triée en ordre descendant sur annee
et certainement d'autres suppositions que je n'imagine pas , alors

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TFrm_FactureActel.NouvelleAnneeClick(Sender: TObject);
t:integer;
begin
with DModule do
begin
 TFactel.Last; 
 t:=TFActel.FieldValues['Annee'];
 TFActel.Append;
 TFActel.FieldValues['Annee']:=t+1;
 TFActel.FieldValues['Nu_Facture']:=1;
 TFActel.Post;
end;
end;
Citation:
TFActel.RecordCount+1
très mauvaise idée si jamais il y a des trous

Citation:
1 - TFActel.FieldValues['Nu_Facture']:=TFActel.RecordCount+1;
...
2- TFActel.FieldValues['Nu_Facture']:=s+'/'+r;
Comment un champ peut-il être a la fois un Integer en 1 et un String en 2
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2012, 20h58   #3
medreg
 
Inscription : juin 2006
Messages : 82
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 82
Points : -32
Points : -32
Citation:
Envoyé par SergioMaster Voir le message
C'est quoi ce code , qui ne passe même pas une simple vérification syntaxique ? par rapport a quoi ?

en supposant (ce que je n'aime pas)
- que Annee soit un champ Integer,
- que la table Factel soit triée en ordre descendant sur annee
et certainement d'autres suppositions que je n'imagine pas , alors

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TFrm_FactureActel.NouvelleAnneeClick(Sender: TObject);
t:integer;
begin
with DModule do
begin
 TFactel.Last; 
 t:=TFActel.FieldValues['Annee'];
 TFActel.Append;
 TFActel.FieldValues['Annee']:=t+1;
 TFActel.FieldValues['Nu_Facture']:=1;
 TFActel.Post;
end;
end;
merçi mr mais comment a suivre le n°
resultat qui je besoin
01/2012
02/2012
03/2012
01/2013
02/2013
03/2013
medreg est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/12/2012, 22h30   #4
Ph. B.
Expert Confirmé
 
Avatar de Ph. B.
 
Homme Philippe
Inscription : avril 2002
Messages : 1 026
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 46
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2002
Messages : 1 026
Points : 2 651
Points : 2 651
Envoyer un message via ICQ à Ph. B. Envoyer un message via Skype™ à Ph. B.
Bonjour,
Citation:
Envoyé par medreg Voir le message
merçi mr mais comment a suivre le n°
resultat qui je besoin
01/2012
02/2012
03/2012
01/2013
02/2013
03/2013
Je pense qu'initialement il y a un gros problème de conception du modèle de données, des oublis majeurs qui font que vous devez dans le cas présent implémenter une rustine.

Pour le résoudre, il faudrait déjà connaitre votre modèle de données et le moteur de base de données auquel il est appliqué.
Grosso modo, il faut introduire dans le modèle un moyen de gérer des compteurs par année: ce peut être envisagé via une table, un ou plusieurs générateurs, etc. Ce sont d'ailleurs les suppositions qu'évoquait @SergioMaster...
__________________
Philippe.
Ph. B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2012, 18h40   #5
medreg
 
Inscription : juin 2006
Messages : 82
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 82
Points : -32
Points : -32
Citation:
Envoyé par Ph. B. Voir le message
Bonjour,
Je pense qu'initialement il y a un gros problème de conception du modèle de données, des oublis majeurs qui font que vous devez dans le cas présent implémenter une rustine.

Pour le résoudre, il faudrait déjà connaitre votre modèle de données et le moteur de base de données auquel il est appliqué.
Grosso modo, il faut introduire dans le modèle un moyen de gérer des compteurs par année: ce peut être envisagé via une table, un ou plusieurs générateurs, etc. Ce sont d'ailleurs les suppositions qu'évoquait @SergioMaster...
merçi de votre repense
la version de delphi7 et absolute database
medreg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2012, 22h38   #6
Ph. B.
Expert Confirmé
 
Avatar de Ph. B.
 
Homme Philippe
Inscription : avril 2002
Messages : 1 026
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 46
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2002
Messages : 1 026
Points : 2 651
Points : 2 651
Envoyer un message via ICQ à Ph. B. Envoyer un message via Skype™ à Ph. B.
Citation:
Envoyé par medreg Voir le message
la version de delphi7 et absolute database
Je ne connais pas votre modèle de données, mais voila à priori comment je procèderais :
Une table SuiviNum(Annee int, Compteur int)
Annee étant la clé primaire unique.
Compteur une valeur qui ne doit être qu'incrémentée.
A la saisie d'une facture :
  1. Je débute une transaction (elle devra être la plus brève possible afin de ne pas pénaliser les autres utilisateurs).
  2. Je regarde si ma table a un enregistrement pour l'année en question:
    • si non, je le crée avec la valeur 1 (ex: 2013 / 1)
    • si oui, je récupère la valeur, l'incrémente, la met à jour dans la table. (ex: on passe de 2013 / 1043 à 2013 / 1044)
  3. Je valide ma transaction ; de fait, je rends la table disponible aux autres utilisateurs.
  4. J'utilise la valeur pour ma facture...
Toute valeur non utilisée est considérée comme perdue (ou brulée).
__________________
Philippe.
Ph. B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2012, 08h00   #7
medreg
 
Inscription : juin 2006
Messages : 82
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 82
Points : -32
Points : -32
Citation:
Envoyé par Ph. B. Voir le message
Je ne connais pas votre modèle de données, mais voila à priori comment je procèderais :
Une table SuiviNum(Annee int, Compteur int)
Annee étant la clé primaire unique.
Compteur une valeur qui ne doit être qu'incrémentée.
A la saisie d'une facture :
  1. Je débute une transaction (elle devra être la plus brève possible afin de ne pas pénaliser les autres utilisateurs).
  2. Je regarde si ma table a un enregistrement pour l'année en question:
    • si non, je le crée avec la valeur 1 (ex: 2013 / 1)
    • si oui, je récupère la valeur, l'incrémente, la met à jour dans la table. (ex: on passe de 2013 / 1043 à 2013 / 1044)
  3. Je valide ma transaction ; de fait, je rends la table disponible aux autres utilisateurs.
  4. J'utilise la valeur pour ma facture...
Toute valeur non utilisée est considérée comme perdue (ou brulée).
Merci frère pour votre réponse et essayer de m'aider
Mais je n'ai pas mis au point la programmation et
Par conséquent, vous demander de vous expliquer avec un exemple de ce que le code qui m'a été avec la base de donnée paradox
voila un exemple joint pour ajouter le code qui vous m'expliquer svp
Fichiers attachés
Type de fichier : rar exempleNum.rar (278,9 Ko, 1 affichages)
medreg est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 19h14.


 
 
 
 
Partenaires

Hébergement Web