Incrementer en vb 6.0

Signaler
Messages postés
94
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
15 janvier 2014
-
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
-
salut à tous!
je viens de développer un logiciel de gestion pour une boulangerie, mais le problème que je vien de rencontre est comment faire une incrementation automatique propre à chaque nouvelle date, donc si je me retrouve avec une date nouvelle que le numero soit à zero et si la date existe déjà que sa contunue tout en donnant le numero suivant
la base de donnée est en Sql server 2000
et VB 6.0 aide à la conception graphique de l'interface
merci pour votre aide

Théom@f

11 réponses

Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
utilise la fonction dateadd tu trouvera l'aide sur le net ou sur vb6.
Messages postés
94
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
15 janvier 2014

Comment utilisé dateadd pour qu'il m'aide à avoir une nouvelle numero à une nouvelle date?
Merci

Théom@f
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Salut,

pourrais-tu préciser ta demande stp ? Perso j'ai rien compris à ce que tu cherches à faire (et apparemment 4u4me4us non plus, vu que sa réponse n'a pas l'air de te convenir).
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Tu dis "il m'aide à avoir une nouvelle numero à une nouvelle date" j'y comprends rien du tout

Explique tout plus clairement
Messages postés
94
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
15 janvier 2014

[b][u]Bon je m'explique à long,
dans ma lingé je fais ceci, il y a un formulaire qui m'affiche les données à introduire concernant une commande, à chaque date il y a des nouvelles commandes qui intervinnent, et le problème est celle ci;
Chaque jour les commandes doivent voir leur numero remis à zero mais non en supprimer les commandes efféctuées des dates précedentes

Ainsi, je crée un champ id_cmd "identité commande" pour me permettre de donner un numero automatique.
Pour être plus explicite, à une nouvelle date, le id_cmd donne soit 1, et si à la même date j'ajoute une commande le id_cmd donne 2, et ainsi de suite donc s'auto incremente

Donc une procedure pareil pour chaque nouvelle date

et si je selectionne une date passé que le id_cmd affiche le dernier id_cmd enregistrer/u/b




Théom@f
Messages postés
94
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
15 janvier 2014

]Bon je m'explique à long,
dans ma lingé je fais ceci, il y a un formulaire qui m'affiche les données à introduire concernant une commande, à chaque date il y a des nouvelles commandes qui intervinnent, et le problème est celle ci;
Chaque jour les commandes doivent voir leur numero remis à zero mais non en supprimer les commandes efféctuées des dates précedentes

Ainsi, je crée un champ id_cmd "identité commande" pour me permettre de donner un numero automatique.
Pour être plus explicite, à une nouvelle date, le id_cmd donne soit 1, et si à la même date j'ajoute une commande le id_cmd donne 2, et ainsi de suite donc s'auto incremente

Donc une procedure pareil pour chaque nouvelle date

et si je selectionne une date passé que le id_cmd affiche le dernier id_cmd enregistrer


Théom@f
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Re,

je veux pas paraître méchant ou agressif, mais ça reste peu compréhensible. J'essaie de comprendre, de reformuler, mais je coince.

Mes incompréhensions :
- c'est quoi une "lingé" ?
- tu écris "il y a un formulaire qui m'affiche les données à introduire concernant une commande, à chaque date il y a des nouvelles commandes" : tu affiches UNE ou DES commandes dans ton interface ?

Ce que je crois comprendre :
Tu as des enregistrements "commandes" dont une clé primaire serait la composée de "cmd_date" et "cmd_count". Tu cherches donc à avoir des données du genres :
cmd_date cmd_count cmd_data
01/01/2000 1 "le contenu de ma 1ère commande"
01/01/2000 2 "le contenu de ma 2ème commande"
02/01/2000 1 "le contenu de ma 3ème commande"
02/01/2000 2 "le contenu de ma 4ème commande"
02/01/2000 3 "le contenu de ma 5ème commande"


Mes solutions "pure SQL" :
* Comment mettre la bonne valeur lors de la sauvegarde d'une commande :
-- les valeurs '2010-01-01' et 'ma data' proviennent de l'interface
INSERT INTO commandes (
cmd_date,
cmd_count,
cmd_data
) VALUE (
'2010-01-01',
(CASE (SELECT MAX(cmd_count)
FROM commandes
WHERE cmd_date = '2010-01-01')
WHEN null THEN 1
ELSE (SELECT MAX(cmd_count) +1
FROM commandes
WHERE cmd_date = '2010-01-01')
END
),
'ma data'
);


* Comment récupérer la dernière cmd_count d'une date donnée :
-- '2010-01-01' provient de l'interface
SELECT MAX(cmd_count) FROM commandes
WHERE cmd_date = '2010-01-01';


Bon, j'espère ne pas avoir répondu à côté parce que ça m'a pris pas mal de temps à taper tout ça ^^

PS : je ne connais pas SQL Server, il est possible que ma syntaxe soit erronée.
Messages postés
94
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
15 janvier 2014

Merci Jopop
Je veux encore m'expliquer beaucoup plus que je peux
J'ai une table Commande, et Client dont la base des données est en Sql Server 2000
Quelques champs important de la table Commande:
numero_commande, pour donner un numéro auto à chaque commande
matricule, qui provient de la table client, pour permettre à avoir seulement le matricule du client déjà enregistré dans la base de données, et permet à afficher le nom du client.
id_cmd, ?????
• Montant, enregistre le montant payé par le client
Date_cmd, enregistre la date du commande
Commission, enregistre la commission que le client obtient lors de la commande
Dette_restante, enregistre l’éventuelle dette du client
Mais avec id_cmd je voudrais faire ceci ;
Qu’elle auto incrémente les valeurs du type « int » propre à chaque date de la commande,
Il y a déjà le numero_commande qui s’auto incrémente avec cette méthode :

SELECT * from Commande where numero_cmd=(select max(numero_cmd) from Commande

Ceci est pour le champ de numero_commande,

Et je reprends encore pour id_cmd,
Il fait la même action que pour le numero_commande à la seule différence que l’id_cmd s’auto incremente par rapport à une date qui est bien sûr date_cmd, que si je vais faire un nouvel ajout des enregistrements l’id_cmd donne valeur 1.

A supposé que j’ai commencé le 25 avril 2011, et je fais 13 enregistrement dans la table commande,

Donc le numero_commande aura sa valeur « max 13 » et l’id_cmd aura aussi 13 comme valeur maximal

Et le 26 avril 2011, en introduisant une nouvelle commande l’id_cmd me donne la valeur 1
Comme je suis un nouveau jour, mais le numero_commande lui continue son auto incrémentation toute en me donnant 14 comme valeur

Et si je sélectionne une date passé que ça me donne la dernière valeur, exemple, si je sélectionne la date du 25 avril 2011 que l’id_cmd donne la valeur 13 comme valeur maximal

….Donc c’est ainsi que je parle d’un nouveau id_cmd pour une nouvelle date

Et le grans problème que je rencontre est de faire cela pour l'id_cmd

Merci pour votre aide

Théom@f
Messages postés
94
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
15 janvier 2014

Merci Jopop
Je veux encore m'expliquer beaucoup plus que je peux
J'ai une table Commande, et Client dont la base des données est en Sql Server 2000
Quelques champs important de la table Commande:
numero_commande, pour donner un numéro auto à chaque commande
matricule, qui provient de la table client, pour permettre à avoir seulement le matricule du client déjà enregistré dans la base de données, et permet à afficher le nom du client.
id_cmd, ?????
Montant, enregistre le montant payé par le client
Date_cmd, enregistre la date du commande
Commission, enregistre la commission que le client obtient lors de la commande
Dette_restante, enregistre l'éventuelle dette du client

Mais avec id_cmd je voudrais faire ceci ;
Qu'elle auto incrémente les valeurs du type « int » propre à chaque date de la commande,
Il y a déjà le numero_commande qui s'auto incrémente avec cette méthode :

SELECT * from Commande where numero_cmd=(select max(numero_cmd) from Commande

Ceci est pour le champ de numero_commande,

Et je reprends encore pour id_cmd,
Il fait la même action que pour le numero_commande à la seule différence que l'id_cmd s'auto incremente par rapport à une date qui est bien sûr date_cmd, que si je vais faire un nouvel ajout des enregistrements l'id_cmd donne valeur 1.

A supposé que j';ai commencé le 25 avril 2011, et je fais 13 enregistrement dans la table commande,

Donc le numero_commande aura sa valeur « max 13 » et l'id_cmd aura aussi 13 comme valeur maximal

Et le 26 avril 2011, en introduisant une nouvelle commande l’id_cmd me donne la valeur 1
Comme je suis un nouveau jour, mais le numero_commande lui continue son auto incrémentation toute en me donnant 14 comme valeur

Et si je sélectionne une date passé que ça me donne la dernière valeur, exemple, si je sélectionne la date du 25 avril 2011 que l'id_cmd donne la valeur 13 comme valeur maximal

.Donc c'est ainsi que je parle d'un nouveau id_cmd pour une nouvelle date

Et le grans problème que je rencontre est de faire cela pour l'id_cmd

Merci pour votre aide

Théom@f
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
Déplacé du Bar vers "VB6 / Divers / Général".

Prière de poster dans la bonne section la prochaine fois :-)

Cordialement,
Nurgle (Antoine)
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Re,

oki, je comprends un peu mieux avec cette nouvelle explication ;)
Remarque, ça correspond à ce que j'avais compris de ton deuxième message, et les requêtes que je t'ai filées sont valables (enfin il faut changer les noms de table et de champs, les miens étaient arbitraires).

NB : la requête que tu as écrite et qui doit auto-incrémenter numero_cmd n'est pas celle-ci (rappel : SELECT * from Commande where numero_cmd=(select max(numero_cmd) from Commande). Cette requête retourne les info de la dernière commande insérée.