begin process at 2012 02 11 16:42:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

Positionner sur un enregistrement à patir d'un n° et d'une date


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Positionner sur un enregistrement à patir d'un n° et d'une date

samedi 10 juillet 2010 à 15:43:33 | Positionner sur un enregistrement à patir d'un n° et d'une date

AEC1

Bonjours à tous,
je bute sur un petit problème dans une base de données d'une bibliothèque. Je cherche à me positionné sur un enregistrement déjà créé et voici le code que j'utilise.
procedure TForm1.Edit13Change(Sender: TObject);
begin // saisie automatique à partir d'un code barre
// pour entrer et/ou sortir un livre
If Length(Edit13.Text)=6 then
begin
// Sélection par le N° code barre du n° du livre avec la douchette
Table12.SetKey;
Table12.Fields[5].AsString := Edit13.Text;
Table12.Fields[4].AsString := '[Rendule]=null'; //Edit14.Text;
Table12.GotoNearest;
end;
end;

j'arrive sans difficulté à me positionné sur le premier enregistrement qu'il trouve avec le N° du livre que je cherche, mais je souhaiterais pouvoir lui demandé aussi de me positionné sur le champ date qui est vide parmi plusieurs même enregistrements du même N° mais un seul champ date est resté vide ce qui veux dire que le livre est sorti de la bibliothèque. Le problème réside dans le retour du livre.
Merci du coup de main et espère avoir été assez clair.
Amitiés...
AEC1
dimanche 25 juillet 2010 à 17:11:03 | Re : Positionner sur un enregistrement à patir d'un n° et d'une date

pierrotk10d



Bonjour,
Je ne connait pas comment est construite la base de données ni son type, (champs indexés?) J'utiliserai la méthode Locate qui permet de travailler sur des champs non indexés pour faire la recherche sur les deux champs.
Le champs contenant le N° du livre saisi et le champs Date == à vide.
La méthode locate est moins rapide car travaillant sur des champs non indexés.
Sinon il y a FindKey si N° livre et date sont indexés
lundi 26 juillet 2010 à 07:06:58 | Re : Positionner sur un enregistrement à patir d'un n° et d'une date

AEC1

Bonjour cher ami,
merci de me répondre. Effectivement j'utilise des champs indexés, mais la première difficulté est de se positionné sur l'enregistrement s'il est existant dans une liste qui est l'inventaire des livres sorties de la bibliothèque. Si telle est le cas alors le code profite d'être sur l'enregistrement afin de complété la date de retour du livre et si celui-ci n'est pas sorti alors je crée automatiquement une nouvel enregistrement dans cette liste d'inventaire en mettant le N° du livre, son titre et la date de pris le.
Finalement mon premier souci est de trouver l'enregistrement existant ou non. Dans cette liste d'inventaire ne paraissent que les livres sortis, mais j'ai 4 champs dont le N° du livre, le titre, la date pris le et la date rendu le qui elle reste toujours vide.
Puisque c'est elle qui me permet de filtrer la liste. Donc je pensais que je pouvais faire la même chose avec la recherche d'un enregistrement mais sans filtrer la liste seulement en indiquant que le champ date rendu le est vide.
Merci pour votre aide si cela est possible ni trop tordu dans mon explication.
Amitiés...
AEC1
jeudi 29 juillet 2010 à 09:13:42 | Re : Positionner sur un enregistrement à patir d'un n° et d'une date

pierrotk10d

Avec un peu de retard pour cause de rando en montagne voilà comment je vois le PB

Var NumeroLivre: String;
begin
// NumLivre := Resultat de la saisie du numéro du livre
With tLivre do begin // tLivre est le nom de la table
// NumLivre et DateRendu sont les noms des champs de la table tLivre
If Locate('NumLivre;DateRendu', VarArrayOf([NumLivre, null]), [loCaseInsensitive]) then
// Le livre est sortie mais pas encore rentrée
// Mettre la date du jour dans le champs DateRendu
else
// Ajouter un nouvel enregistrement et le remplir avec les références du livre
// et la date du jour qui est la date de sortie
end;

En espérant vous avoir aidé
Cordialement
jeudi 29 juillet 2010 à 13:35:57 | Re : Positionner sur un enregistrement à patir d'un n° et d'une date

AEC1

Merci de me répondre, je vais essayer cela car il est vrai il y a pas mal de paramètres dont il faut aussi que je tienne compte. Je vous tiens informé de ce que j'ai pu faire.
Merci encore pour votre aide, au plaisir...
AEC1
lundi 9 août 2010 à 20:40:58 | Re : Positionner sur un enregistrement à patir d'un n° et d'une date

AEC1

Bonsoir cher ami, je me permet de vous adressez un petit mot pour vous remerciez de votre aide car j'ai enfin réaliser les entrées / sorties des livres d'un bibliothèque avec codes barres ou en mode manuel. Je me permet de vous sollicité dans la foulée par une autre question:
voilà, je souhaiterais pour terminer cette appli. de pouvoir éliminé automatiquement tous les livres de mon fichier suivi pour les livres sorties / rentrés et cela en indiquant juste: soit à partir d'une date et tout ce qui est antérieur est vidé du fichier ou soit indiqué une durée par exemple de 5 ans et donc tout ce qui est antérieur à ce calcul seras supprimé du fichier.
Merci encore pour votre aide qui me permet de finaliser ce appli.
Amitiés...
AEC1
mardi 10 août 2010 à 16:04:18 | Re : Positionner sur un enregistrement à patir d'un n° et d'une date

pierrotk10d


Bonjour,
Voici une routine de purge dans un fichier que j'avais réalisé lorsque je travaillait. Voilà 5 ans que j'ai abandonné le boulot et Delphi, mais parfois je regarde les forums pour le fun. (comme disent les jeunes).
La routine suppose que la table soit indexée sur la date de fin. Elle était lancée depuis le menu principal. [Options Utilitaires\Purge des FA\]
Reste à adapter à votre application celle ci.
On peut certainement faire mieux car je n'était pas un pro de la programmation. Je m'y était mis par un peu par obligation car mon travail au service "méthodes" évoluait dans ce sens.
J'ai commencé avec le basic d'Apple, puis ensuite avec Clipper quand les PC sont arrivés dans les ateliers, et enfin avec Delphi lors de l'arrivée de Windows
Amicalement

procedure TMainForm.mnu_UtilPurgeClick(Sender: TObject);
Function SaisieDate: String;
// Fonction de saisie et de controle de la date de début de purge
Var cDate: String;
Begin
cDate := '';
If InputQuery('SAV * Purge des FA',
'FA antérieures à la date du', cDate) then begin
Try
// Délai 3 ans = 1095 jours
If StrToDate(cDate) > (Date - 1095) then begin
MessageDlg('Délai des 3 ans non respecté !',mtWarning, [mbOk],0);
Result := 'DATE_ERR';
end
else
Result := cDate;
Except
On E:EConvertError do begin
ShowMessage(E.ClassName + CRLF + E.Message);
Result := 'DATE_ERR';
end;
End;
End // EndTry
Else
Result := 'DATE_ERR';
end; // End fonction SaisieDate

Function NbEnregAEffacer(tFa: TTable; cDate: string): Integer;
{* Calculer le Nb d'enreg satisfaisant la condition d'effacement
pour initialiser la borne MAX de la jauge *}
Var n: Integer;
begin
n := 0;
DM.tFa.First;
While DM.tFa.FieldByName('DATEFIN').AsDateTime < StrToDate(cDate) do begin
Inc(n);
DM.tFa.Next;
End;
DM.tFa.First;
If n = 0 then
MessageDlg('Aucun enregistrement à effacer', mtInformation, [mbOk],0);
Result := n;
end; // End fonction NbEnregAEffacer
// ----------------------------------------------------------
Var cDate: String;
nRec, nDel: Integer;
Jauge: TProgressBar;
begin
cDate := SaisieDate;
If cDate = 'DATE_ERR' then
Exit;
DM.tFa.IndexFieldNames := 'DateFin'; // Brancher l'index sur DateFin
nRec := NbEnregAEffacer(DM.tFa, cDate);
if nRec = 0 then
Exit;
Jauge := TProgressBar.Create(Self);
Try
With Jauge do begin
Parent := MainForm;
Align := alBottom;
Height := 25;
Min := 1;
Max := nRec;
Step := 1;
end;
With DM.tFa do begin
// ATTENTION : DisableControls détruit la relation maitre détail
nDel := 0;
While (FieldByName('DATEFIN').AsDateTime < StrToDate(cDate))
and (not eof) do begin
Jauge.StepIt;
If DM.tFaDateFin.IsNull then // Champ DateFin vide on n'efface pas
Next
Else begin
Inc(nDel);
Delete;
End;
End; // EndWhile
IndexFieldNames := 'NumFa'; // Rebrancher l'index primaire
First;
End; // EndWith DM.tFa
Finally
Jauge.Free;
End; // EndTry
MessageDlg(IntToStr(nDel) + ' enregistrement(s) supprimé(s)',
mtInformation,[mbOk],0);
end;

mardi 10 août 2010 à 17:32:50 | Re : Positionner sur un enregistrement à patir d'un n° et d'une date

AEC1

Bonjour,
je vous remercie de votre rapidité à me répondre. Je vais donc intégré cette dernière procédure dans le code actuel afin d'en terminé une fois pour toute avec cette appli. qui m'a déjà demandé beaucoup d'amélioration de la part des utilisateurs.
Encore grand merci pour votre aide et au plaisir.
AEC1


Cette discussion est classée dans : enregistrement, date, livre, positionné, table12


Répondre à ce message

Sujets en rapport avec ce message

date par défaut pour nouvel enregistrement [ par snoopline ] Bonjour,Je souhaiterais que la date du jour s'affiche par défaut dans un TDBEdit lors le l'activation du bouton 'Insert record' d'un TDBnavigatorJ'ut Comment poser une condition au cas où la donnée n'est pas trouvée? [ par leading ] Bonjour! Peut être une logique tordue de ma part. Dans les codes ci-dessous; j'essaie de dire que si dans la base de donnée on trouve ce qui est dans revenir sur un enregistrement suite à la fermeture d'une table [ par AEC1 ] Bonjour à tous, voila je cherche à me repositionner sur un enregistrement à l'ouverture d'une table sous Paradox7 sur lequel j'étais juste avant de fe decodate date [ par cam18 ] Bonjour,[^^happy3] J'ai dans une base de donnée un champ qui correspd une date de naissance de type date. En fait, et avec un composant sql, je voud comment faire une selection d'age par sql [ par cam18 ] bonjoue j'ai une base des données qui contienne un champ " date de naissance"; comment faire ( bien sur avec une requette sql) pour sélectionner les g date [ par mahz ] Aidez moi sil vous plait j'ai ce message d'erreur [Erreur] UMPCHAMBRE.pas(144): Opérateur ou point-virgule manquant quand je essaie de compiler ce bou date [ par saimslim ] j'ai un maskedit sur lequel je saisi des dates de naissances avec le format jj/mm/aaaa. une fois la date saisie je cherche comment vérifier d'abord qu problème de suppression [ par malone12 ] Salut tous le monde, j'ai fait un trie d'une table avec un query relié a un dbgrid avec ce code[code=pas]SELECT * FROM LATABLE ORDER BY LACOLONNE[/co suppression des enregistrement [ par douina ] bonjour je veux savoir si je peux supprimer tous les enregistrement d'un tableau (paradox) je vaux programmer une bouton pour ça; j'ai utilisé ce cede Widestring pour l'enregistrement dans fichier Binaire ??? [ par DavKli ] Bonjour j'ai une sorte de base de donnée et souhait d'enregistrer dans un fichier Binaire. Voici une exemple [code=pas] type TExemple = Record


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,006 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales