Accueil > Forum > > > > Positionner sur un enregistrement à patir d'un n° et d'une date
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
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|