penchu
Messages postés167Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 janvier 2006
-
26 avril 2005 à 11:06
penchu
Messages postés167Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 janvier 2006
-
28 avril 2005 à 15:05
Bonjour à tous,
je suis en stage dans une entreprise dans laquelle on m'a demandé de
faire un programme de gestion des stocks avec un envoi de commande chez
le fournisseur.
Voici le problème. J'ai une datagrid, et en dessous, des textbox qui
affichent toutes les données de la ligne sélectionnée. Je peux m'y
déplacer, et les textbox changent en fonction de l'endroit ou je me
trouve dans la datagrid.
Tout fonctionne nickel sauf la fonction de commande.
En fait dans ma base de données (une seule table), pour chaque pièce j'ai le fournisseur correspondant.
Je voudrais, pour chaque fournisseur créer un dossier avec son nom.
Dans ce dossier, je mettrais des fichiers textes dont le nom est la
date du jour. Ces fichiers contiendront les pièces du stock dont le
stock minimum est atteint.
A partir de ce moment chaque fichier sera envoyé à un contremaitre par
mail, qui fera suivre après vérification, vers les fournisseurs
respectifs.
Pour l'instant, si je veux faire ça, je dois faire une recherche par
fournisseur dans ma base de données pour que le fichier se remplisse
avec les pièces de ce fournisseur affichées dans ma datagrid. Mais le
problème c'est que je dois faire ça pour tous les fournisseurs. Donc ça
ne peux pas aller (il suffit d'imaginer qu'il y ait 2500 fournisseurs ).
Donc en gros, comment faire ça automatiquement en cliquant sur un seul bouton?
Merci beaucoup beaucoup beaucoup à ceux qui pourront m'aider.
Horfee
Messages postés188Date d'inscriptionmercredi 9 avril 2003StatutMembreDernière intervention10 août 2009 26 avril 2005 à 14:12
je suppose que tu remplit ton datagrid a partir donc le truc c dans ta requete sql tu met un order by fournisseur, comme ca tu auras toutes les pieces trié par nom de fournisseur
ensuite a chaque ligne tu fais un truc du style :
if fournisseur_actuel=fournisseur_ancien then
'tes inscriptions dans le fichier
else
ancien_fournisseur=fournisseur_actuel
' fermeture nacien fichier
' ouverture nouveau fichier'
'inscription de la premiere ligne uniquement : les autres lignes seront traité par le if
end if
sinon je vois pas trop comment ca marche ton code :
while (ligne>=0)... ligne +=1 ---> toujours verifié!! donc la boucle ne s'arrete que lors d'une erreur ( survenue surement apres la tentative d'une lecture de ligne vide)
ensuite tu utilise un dataset je pense (dtset) et un objet de type tableau (repertoire), qu'est ce dont???
donne moi les infos sur la structure de la table et je t'aiderais un peu plus... parce que c pas bien compliqué ton probleme
Horfee
Messages postés188Date d'inscriptionmercredi 9 avril 2003StatutMembreDernière intervention10 août 2009 26 avril 2005 à 23:58
bon alors deja en ce qui concerne le sql, a eviter :
les "SELECT * FROM..." dans certains cas c'est deconseillé car
surcharge la com, surtout si tu passe par un reseau ( bd distante)
ne jms tout mettre dans une seule table --> créer plusieurs tables
permet de garder une cohérence des données ( si le nom du fournisseur
change, on ne le change pas pour tout les lignes)
les fonction LIKE sont certes puissantes mais a eviter... bon des fois on peut pas faire autrement
en ce qui concerne le code, apparament ton dataset est equivalent a ton
datagrid, donc tant qu'a faire n'en n'utiliser qu'un des deux ( pour la
lisibilité du code)
tant que ligne courante <> derniere ligne
if fournisseur_actuel=fournisseur_ancien then
'tes inscriptions dans le fichier
else
ancien_fournisseur=fournisseur_actuel
' fermeture nacien fichier
' ouverture nouveau fichier'
'inscription de la premiere ligne uniquement : les autres lignes seront traité par le if
end if
fin tant que
je pense que ca devrait etre sympa ca!
ensuite pour ne pas ecrire et donc ecraser plusieurs fois le meme
fichier, soit tu l'ouvre en mode creation,ecriture et append ( rajout
en fin de fichier) soit tu change ta requete en "SELECT * FROM pieces
ORDER BY fournisseur" ( je sais là j'utilise un SELECT * mais c juste
pour l'exemple : a ne pas utiliser)
penchu
Messages postés167Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 janvier 2006 27 avril 2005 à 10:08
[citation]en ce qui concerne le code, apparament ton dataset est equivalent a ton datagrid, donc tant qu'a faire n'en n'utiliser qu'un des deux ( pour la lisibilité du code)
tant que ligne courante <> derniere ligne
if fournisseur_actuel=fournisseur_ancien then
'tes inscriptions dans le fichier
else
ancien_fournisseur=fournisseur_actuel
' fermeture nacien fichier
' ouverture nouveau fichier'
'inscription de la premiere ligne uniquement : les autres lignes seront traité par le if
end if
fin tant que
/citation
quand tu dis ça, je vois pas trop comment tu veux faire au niveau code lui même
Vous n’avez pas trouvé la réponse que vous recherchez ?
avec ce code, un dossier dont le nom est le nom du fournisseur est bien créé pour chaque fournisseur.
Dans chaque dossier je retrouve bien un fichier dont le nom est la date du jour.
Mais le problème est là :
dans le fichier, je retrouve à chaque fois mon en-tête (ca c'est bon), mais je ne retrouve que le permier enregistrement de ma base de données. Et c'est le meme que je retrouve dans tous le fichiers. Dans certains fichiers, je le retrouve une seule fois, dans d'autres fichiers, je le retrouve plusieurs fois.
Voici le contenu d'un fichier (qui est donc le même ou a peu près dans tous les autres fichiers)
Mon entête avec l'adresse de l'usine
Tel. ............
Fax. ............
ensuite evite de rajouter du code inutile ( :: dim test as string
test = repertoire...
)ensuite avec vb.net on evite les On error ... on prefere les
structures Try ... Catch .. Finally... End try c plus pro... meme si on
error marche bien !
penchu
Messages postés167Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 janvier 2006 27 avril 2005 à 19:32
je suis au regret de t'annoncer qu'aucun de ces 2 codes ne fonctionnent.
Le 1er crée un fichier texte (normalement) et met les enregistrements en boucle dedans => un fichier texte de 177 Mo ca fait drôle... (lol)
Ca m'embete fortement car je ne trouve pas de solution idéale.
Par contre, je viens de penser à un truc, je pourrais, mais je ne sais pas trop comment faire, appeler ma fonction connecter_recherche(byval fournisseur) et ce pour tous les fournisseurs présents dans ma db.
Donc un truc du genre :
connecter_recherche(le truc qu'il faut mettre pour que ça le fasse pour tous les fournisseurs).
Parce que quand je remplis mes fichiers textes en fonction de ce qu'il y a d'affiché dans ma datagrid, ...
Mais je sais pas comment faire?
ca devrait etre mieux : en clair dans le deuxieme cas du if ( cas ou on
change de fournisseur )il faut ajouter le fait qu'on change de fichier
( je l'avais oublié). donc d'abord on ferme le fichier en cours, on
crée le rep et on cree le fichier ( copier-coller de ce que tu avais
fait) et on ajoute les premieres lignes
penchu
Messages postés167Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 janvier 2006 28 avril 2005 à 10:44
je vais encore t'embêter parce que ça ne marche pas, j'ai toujours une exception :
Une exception non gérée du type 'System.IO.IOException' s'est produite dans mscorlib.dll
Informations supplémentaires : Le processus ne peut pas accéder au
fichier "c:\martin\28_04_2005.txt", car il est en cours d'utilisation
par un autre processus.
je ne comprend rien du tout à tout ça...
j'ai essayé de modifier qq lignes pour voir si je pouvais y changer qqch, mais toujours des erreurs....