=> DEMO UserForm ADO Access Deposits Management

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir à Tous et Toutes

Bon j'ai pas mal travaillé ce week end car je dois faire une sorte de maquette des 'Process' que je veux obtenir sur un 'Vrai' programme.

Access/Excel et VBA me servant ici pour construire cette Maquette.

Je suis désolé par contre tout est en anglais. (Boulot oblige)

Grosso modo voici le topo, c'est un programme de gestion de Cash en Dépôts à courts termes. Le tout dans un souci d'ergonomie et du minimum de manipulation manuelle des utilisateurs finaux.

Le programme proposera une liste de Dépots arrivant à maturité (en provenance d'un système comptable), ceci permettra de les renouveller, de les diviser (split), de les fermer, ou de les augmenter. Il sortira des Fax en impression à moins que ne passiez sur une imprimante virtuelle (PDF), et enfin une simulation d'écriture comptables sera générée, le tout en quelques clicks et autres 'Drag & Drop'

Les Outils Nécessaires :

[li]Access (réalisé sous Access 2003, testé sous 2002)[/li] PAS INDISPENSABLE en consultation!!! (voir plus bas Post du 25/10/2005 08:44 !)
[li]Excel (réalisé sous 2003, testé sous 2002)[/li]
[li]DTPicker (Microsoft Date and Time Picker) Mscomct2.ocx (fourni)[/li]

Dans le Fichier Zip ci-joint, vous trouverez :

[li]Database_2005-10-22.mdb[/li]
[li]Demo_Deposits_V02_01_XLD.xls[/li]
[li]Mscomct2.ocx[/li]
[li]READ_ME_First.txt[/li]


Phases d'Installation :

L'OCX doit être copiée dans le répertoire Windows System32

Ensuite vous devez l'enregistrer avec une ligne de commande à exécuter dans la fenêtre 'exécuter' que l'on atteind par le menu Démarrer. (voir le READ_ME_First.txt)

Enfin les deux Fichiers Access et Excel doivent être placés dans le répertoire que vous souhaitez à condition que ces deux fichier soient bien dans ce même répertoire.

Sous Excel 2003 il est possible que vous ayez un message vous indiquant que le projet initialise des ActiveX non sûrs... et de vérifier si la source est fiable... Je pense qu'elle l'est c'est mon travail !

Pour l'instant ce n'est qu'une Beta version, mais je compte sur vous pour me signaler toute anomalie en détail, ce qui me fera avancer un max.

En contre-partie, vous aurez sous les yeux une appli quasi complète, un peu encore en bazard au niveau des codes car je n'ai pas encore passé à l'optimisation, je n'en suis qu'aux concepts de base.


Ce lien n'existe plus (841 Ko)


Ce lien n'existe plus (729 Ko elle maigrit !!!)


Merci à tous et toutes d'avance et bonne nuit

[ol]@+Thierry[/ol]


EDITION !!!

Mise en Ligne de la Mise à Jour de la V02.02
(Bug Fix plus Help Card on Spilt Deposits Userform)


Sorry for inconvenience ! et bonne nuit ;)

Message édité par: _Thierry, à: 25/10/2005 00:25

EDITION !!!

Il s'avère qu'en consultation Access n'est pas indispensable sur la Machine ...

Message édité par: _Thierry, à: 25/10/2005 09:02


EDITION !!!!

Bien vu Jam, le lien n'était pas bon vers la V02.02

Message édité par: _Thierry, à: 27/10/2005 19:05

Message édité par: _Thierry, à: 22/01/2006 13:10
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:= "Petite" DEMO (entre amiEs) pas encore 2000 !

Re Michel

OK Capito, ne cherche pas...


Function CompanyDetailADOQuery(ByVal TheCode As String) As String
Dim Source As ADODB.Connection
Dim ADOQuery As ADODB.Recordset
Dim SQLString As String
SQLString = 'SELECT Codes FROM Company WHERE Codes='

Set Source = New ADODB.Connection
Source.Provider = 'Microsoft.jet.OLEDB.4.0;'
Source.Open ThePath & ACCESSBase

Set ADOQuery = New ADODB.Recordset
Set ADOQuery = Source.Execute(SQLString & TheCode)

CompanyDetailADOQuery = ADOQuery.Fields(0)

ADOQuery.Close
Source.Close
End Function


Ici No Problemo...

Mais je reste bien dans le Champs 'Codes' (Field(0)) et celà passe ensuite par un retour précis sur un champs de mon Objet RecordSet.... : CompanyDetailADOQuery = ADOQuery.Fields(0)


Par contre là où celà se corse et devient impossible c'est de dire que je veux récupérer un autre Champs (exemple Fiekd(4)), ce qui est normal la requête SQL me construit un RecordSet limité à un seul champs....

Je peux donc faire une approche comme ceci :

Function CompanyDetailADOQuery(ByVal TheCode As String) As String
Dim Source As ADODB.Connection
Dim ADOQuery As ADODB.Recordset
Dim SQLString As String
SQLString = 'SELECT Codes,Deposit FROM Company WHERE Codes='

Set Source = New ADODB.Connection
Source.Provider = 'Microsoft.jet.OLEDB.4.0;'
Source.Open ThePath & ACCESSBase

Set ADOQuery = New ADODB.Recordset
Set ADOQuery = Source.Execute(SQLString & TheCode)

CompanyDetailADOQuery = ADOQuery.Fields(1)

ADOQuery.Close
Source.Close
End Function

Mais dans le cas de Figure réél de ma Démo, en fait cette Function me passe en argument le Champs que je veux récupérer de mon RecordSet (Function CompanyDetailADOQuery(ByVal TheCode As String, Champs As Integer) As String) et d'où mes plantages de ce matin...

En tout cas grand grand merci de ta suggestion qui me servira sûrement dans d'autres cas.

Bonne Fin d'Aprèm
@+Thierry
 

michel_m

XLDnaute Accro
Re:= "Petite" DEMO (entre amiEs) pas encore 2000 !

Salut Thierry et le fil,

Je viens de lire ton post juste avant de quitter la mine; je regarderai tout çà at home ce soir ou demain car je suis vanné.

Toutefois, un truc me parait bizarre mais il faut que je décortique un peu plus ta procédure: tu envoie le tout dans listbox1 (j'écris de mémoire...) ce qui voudrait dire que les données venant de tables différentes seraient liées d'où l'idée qui trotte dans ma tête d'une double jointure ( 3 tables) ce qui ferait gagner du temps; c'est une idée m^me pas une hypothèse..

j'apprend beaucoup en essayant de comprendre et peut-être tenter d'améliorer ce super job que tu as pondu.
Super ce forum car quand on mesure le chemin parcouru depuis les premiers échanges sur ADO-SQL il y a un peu plus d'un an, je m'apercois que j'ai fait de sacrés progrès et il y a encore beaucoup de feraille à limer...

Amitiés

Michel_M
 

Jam

XLDnaute Accro
Re:= "Petite" DEMO (entre amiEs) pas encore 2000 !

Salut _Thierry et tout le post,

1 petite remarque avant de me lancer (maintenant que je suis de retour aux affaires, je compte bien jeter un coup d'oeil à l'alléchante appli que tu concoctes):
J'ai chargé le dernier (?) zip, mais le N° ne correspond pas à la version affiché (entre nous j'ai peut-être raté un post). Peux-tu confirmer, car je voudrais éviter de tester une version incorrecte.
Tu donnes aussi un patch (du code à remplacer dans un post) qu'en est-il dans le zip ?

Bref, j'veux pas être trop chiant en tant que testeur, mais que fais tu de la gestion des versions :p :p :p :lol:

A+
 

Jam

XLDnaute Accro
Re:= "Petite" DEMO (entre amiEs) pas encore 2000 !

Re Salut à tous,

Bon très rapidos, juste avant de partir, j'ai lancé mon petit utilitaire d'analyse de code favori. En fichier joint tu trouveras la liste des variables qui apparaissent non utilisées dans ton code ;)

Comme j'chui un mec âchement sympa je te communique l'adresse du site qui te permettra d'ajouter un addon ô combien pratique et efficace (et en plus gratuit) qui fonction sous VBA (que du bonheur):
http://www.mztools.com/...A voir de toute urgence :)

A+
Jam
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:= "Petite" DEMO (entre amiEs) pas encore 2000 !

Bonsoir Michel, Jam, les Copains, les Copinnes, le Forum

Moi aussi rapidos je dois filer, c'est clair Michel, depuis ta première intervention DAO/ADO sur 'XLD first generation' moi j'ai aussi un peu décollé grace à toi et à notre autre ami Michel... ADO m'est devenu un outil indispensable.

Pour Jam, je ne sais plus tu me mets un doute, il y a en fait une dizaine de version de cette Démo, celle qui est chez Navision est une variante de celles du Forum, elle est l'aboutissement de la maquette des Process que je veux obtenir en ERP. (Aufait j'ai reçu une quotation entre 24/32 Heures de développement)

Je viens de vérifier et dans l'Edition de mon premier Post, le lien n'était pas bon, bien vu Jam, corrigé...Maintenant tu devrais tomber sur la Ce lien n'existe plus qui est la plus récente version XLD (intégrant le Patch comme indiqué dans mon premier post de ce Fil)

Pour les variables, c'est clair, je n'ai strictement rien optimisé dans les codes, d'ailleurs je l'explique... Mais je regarderai ton lien Jam, merci à toi.

Je dois filer, Bonne Soirée à tous
[ol]@+Thierry[/ol]
 

Jam

XLDnaute Accro
Re:= "Petite" DEMO (entre amiEs) pas encore 2000 !

Salut _Thierry, Michel_m, et tout les autres,

1. Si j'ai bien compris ton problème concernant le passage d'un argument qui serait un champs directement dans ta requête:
Tu as 2 possibilités:
Tu fais un SELECT * FROM MaTable, puis tu parcours les champs jusqu'à ce que tu trouves le champs qui t'intéresse
Tu reconstruis ta requête, sSQL='SELECT' & monChamp & ' FROM...'.

L'avantage de la seconde méthode est que tu n'as pas à parcourir tous les champs....

2. Concernant la syntaxe des requêtes ma préférence va vers:
Code:
Set oRec = New ADODB.Recordset
oRec.Open Source:='SELECT * FROM toto'
mais bon ce n'est que ma préférence :)

3. Petits trucs pour les requêtes:
Si ton champs comprend des espaces il faut le mettre entre crochet:
SELECT [Mon Champs] FROM ...
Si tu n'as qu'une table, pas besoin de l'ajouter aux champs:
SELECT MonChamps FROM MaTable
et non
SELECT MaTable.MonChamps FROM MaTable
Par contre cela est nécessaire si tu fais des jointures ;)

4. Si tu utilises toujours les mêmes requêtes, tu peux les mettre dans Access et les appeler directement de ton programme pour ne récupérer que son résultat. Avantage, tu modifies ta requête dans Access uniquement sans avoir à vérifier tout ton code où il y a des requêtes.

5. Je n'ai pas la réponse mais à ce que je vois tu n'utilises pas les jointures dans tes requêtes! Or c'est particulièrement pratique pour faire le lien entre un enregistrement d'une table avec ceux d'une autre. Bon, il faut que je regarde ton code bien plus en profondeur pour savoir si cela est nécessaire (mais ca l'est souvent :lol:).

6. Un autre truc que personnellement j'adore dans le couple Access/Excel. Je rapatrie ma (partie de) table dans une feuille masquée et je la manipule avec Excel (via les noms). Ca évite de se torturer l'esprit avec les requêtes Access (genre écrire une requête avec jointure, condition WHERE avec des AND ou des OR, etc). C'est plus facile à débuguer. Bref cela donne quelquechose qui ressemble à cela:
Code:
With oRec
.Open Source:='MA REQUETE'
'Pour récupérer les noms des champs
For i = 1 To .Fields.Count
        Feuil7.Cells(1, i) = .Fields(i - 1).Name
Next
'Pour recopier le recrdset dans la feuille        
With Feuil7.Cells(2, 1)
     .CopyFromRecordset oRec
     .CurrentRegion.Name = 'Bdd_Papier'
End With
.Close
End With
'Après y'a plus qu'à...

Bon, c'est tout pour le moment. J'ai quand même ton code à regarder. :lol:
 

Jam

XLDnaute Accro
Re:= \"Petite\" DEMO (entre amiEs) pas encore 2000 !

Re à tous,

Module BuildingAnacode:
Tu crées des tableaux à partir de 2 autres tableaux, le tout en Variant (beurk, beurk, beurk :))
Je te propose d'en supprimer un GROS bout avec plutôt:
Code:
Function ArrayGROUP() As Variant
Const sString As String = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
Dim x As Long
Dim i As Integer, J As Integer
Dim myArray(0 to 937) as String
For i = 1 To Len(sString) - 10
    For j = 1 To Len(sString)
        myArray(x)=Mid$(sString, i, 1) & Mid$(sString, j, 1)
        x=x+1
    Next
Next
ArrayGROUP=myArray()
End Function
Testé et cela fonctionne très bien.
PS./ La constante peut-être mise en entête de module.
PS2./ Testé sous XL2K...or je crois ne pas me tromper en disant que le passage de tableau a été modifié avec XLXP.

Bon weekend
Jam

Message édité par: jam, à: 30/10/2005 01:51
 

michel_m

XLDnaute Accro
Re:= "Petite" DEMO (entre amiEs) pas encore 2000 !

Bonjour Thierry Jam et le fil

Petite rectification avant de partir sur la syntaxe SQL des jointures:

Si il n'y a pas ambiguité dans les noms de champs, le nom de la table n'est pas nécessaire, sauf dans sa spécification (inner join) nottament pour la clarté (maintenance).

Par exemple cette requete SQL double jointure , présente sur un fil xld, extrait dans Excel 20000 enregistrements sur 3 tables dont la principale comporte 100000 lignes, crée une nouvelle colonne avec multiplication en un clin d'oeil ( pas de sablier qui apparait):

texte_SQL = 'SELECT u_ope,u_code,m_design, m_pxunit,u_nbre,' & '[u_nbre]*[m_pxunit] AS prix ' & _
'FROM T_mag INNER JOIN (T_staff INNER JOIN T_usage ON T_staff.s_mat = T_usage.u_mat) ' & _
'ON T_mag.m_mag = T_usage.u_code WHERE ((s_nom='' & choix & ''));'

Bon WE avec j'espère pour tous, un pont pour lundi

Michel_M
 

Bricofire

XLDnaute Impliqué
Re:= "Petite" DEMO (entre amiEs) pas encore 2000 !

Bonjour à tous :) , @+Thierry

OUI ! ça marche sans Acces etc.... Récit : :)

Sur ma config : XP édition familiale, P4 - 2.8, 512 Mo, Excel 2000 Version 9.0, pack Microsoft Office 2000 version PME (sans Acces ni PP)

Bon l’install suivant le read-me est sans pb.

Après un double click sur le fichier Excel, je me suis fait traiter de « Beta » en plein écran, mais renseignements pris, ça ne me concernait pas directement…. :)

Ensuite, un click sur Run Demo et Microsoft forms m’a dit que « le objet » n’était pas disponible sur ma machine, click sur OK et l’USF Deposit s’est ouverte sans pb, , le calendar runant sans pb non plus. Là si je ferme l’USF et le classeur et que je dis oui à sauver les modifs, je n’ai plus le message de manque d’objet après le Run désormais, alors qu’en faisant avant des sorties sans sauvegarde, je l’avais à chaque fois.
Calendar / maturity date = Ok aussi ensuite.
Ensuite bon c’est en anglais :whistle: (comme annoncé, mais moi...) après divers manip, il m’a demandé si je voulais conserver une date ou un truc non changé quand même, j’ai fait OK et j’ai eu le plantage dont tu as la copie écran en PJ, mais il m’a bien sorti 2 pages de fax imprimées, que je vais laisser traîner négligemment sur mon bureau, car je trouve que ça fait très sérieux :) :)

Bon, il me reste à prendre un mois de vacances pour voir si je comprends ce qui se passe dans le code…

Sinon, oui j’ai attendu le WE pour découvrir (ou savourer) l’appli, mais ne dit-on pas : « La patience est la clé du bien-être »

Bon ça pourra servir ausssi de réponse aux fils qui demandent si le VBA c'est sérieux ! ;)

Bonne fin de WE,

Brico

[file name=PlantBrico.zip size=32841]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PlantBrico.zip[/file]
 

Pièces jointes

  • PlantBrico.zip
    32.1 KB · Affichages: 59

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:= "Petite" DEMO (entre amiEs) pas encore 2000 !

Bonjour Brico, Michel, Jam


Merci beaucoup Jam et Michel de vos post.

Je vais revenir plus en temps nécessaire sur ce fil, car là je suis sur un nouveau bb, tout petit bb, un vaio TX1 XP, un miracle de technologie pour ceux qui connaissent, que je suis en train de me le paramétrer et d'y installer tout ce qui faut y compris Office pro 2003 avec Excel Of Course !!! lol

Pour Brico, ton message est clair, il semblerait que tu n'aies pas le Contrôle SpreadSheet...

Regarde cette Démo dans ce Fil :

Lien supprimé

J'ai fait ceci sous Office 2000 Standard Edition (sans Access), avec le Controle 'Microsoft Office SpreadSheet 9.0'...

Testes moi ça et tiens nous au courant

Bonne journée Off
[ol]@+Thierry[/ol]
 

Jam

XLDnaute Accro
Re:= "Petite" DEMO (entre amiEs) pas encore 2000 !

Re _Thierry,

Huuuuum, vaio TX1 XP...petit veinard ;)

C'est une bien belle bête de course que tu as là :p J'en ai eu 2 en main et je me suis régalé, même si l'écran est un ch'touille petit surtout pour faire du dév. Par contre matter un DVD tranquilou dans le TGV ou l'avion, miam que c'est bon B) :)

A+
Jam
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:= "Petite" DEMO (entre amiEs) pas encore 2000 !

Bonsoir Jam, Michel, Brico, tout le monde

Je n'oublie pas ce Fil non plus et merci pour les liens Jam, je regarderai tout ceci un peu plus en temps voulu car mon boss a beau me dire que les journées ont 24 heures plus les nuits... J'arrive pas à joindre les deux bouts !

Oui le TX1 XP c'est mon petit cadeau de Noël perso ;)

Je repasserai un de ces quatres

Merci beaucoup
[ol]@+Thierry[/ol]
 

Discussions similaires

Réponses
6
Affichages
268

Statistiques des forums

Discussions
311 720
Messages
2 081 897
Membres
101 833
dernier inscrit
sandra25