Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel


Réponse
 
LinkBack Outils de la discussion
Vieux 27/10/2005, 16h54   #31 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 094
Par défaut Re:= "Petite" DEMO (entre amiEs) pas encore 2000 !

Re Michel

OK Capito, ne cherche pas...


Citation:
Function CompanyDetailADOQuery(ByVal TheCode As String) AsString
Dim Source As ADODB.Connection
Dim ADOQuery As ADODB.Recordset
Dim SQLString AsString
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
EndFunction

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 :

Citation:
Function CompanyDetailADOQuery(ByVal TheCode As String) AsString
Dim Source As ADODB.Connection
Dim ADOQuery As ADODB.Recordset
Dim SQLString AsString
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
EndFunction
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
_Thierry est déconnecté   Réponse avec citation
ANNONCES
Vieux 27/10/2005, 17h56   #32 (permalink)
XLDnaute Accro
 
Date d'inscription: février 2005
Localisation: Aubenas
Version Excel : Excel 2000 (PC)
Messages: 1 126
Par défaut 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
__________________
A+
Michel_M
michel_m est déconnecté   Réponse avec citation
Vieux 27/10/2005, 18h09   #33 (permalink)
Jam
XLDnaute Impliqué
 
Avatar de Jam
 
Date d'inscription: février 2005
Localisation: Chambourcy
Version Excel : Excel 2003 (PC)
Messages: 653
Envoyer un message via MSN à Jam
Par défaut 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+
__________________
Toutes les bonnes idées ne sont pas dans la même tête.
Jam est déconnecté   Réponse avec citation
Vieux 27/10/2005, 18h24   #34 (permalink)
Jam
XLDnaute Impliqué
 
Avatar de Jam
 
Date d'inscription: février 2005
Localisation: Chambourcy
Version Excel : Excel 2003 (PC)
Messages: 653
Envoyer un message via MSN à Jam
Par défaut 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
__________________
Toutes les bonnes idées ne sont pas dans la même tête.
Jam est déconnecté   Réponse avec citation
Vieux 27/10/2005, 19h10   #35 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 094
Par défaut 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 V02.02 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]
_Thierry est déconnecté   Réponse avec citation
Vieux 28/10/2005, 18h04   #36 (permalink)
Jam
XLDnaute Impliqué
 
Avatar de Jam
 
Date d'inscription: février 2005
Localisation: Chambourcy
Version Excel : Excel 2003 (PC)
Messages: 653
Envoyer un message via MSN à Jam
Par défaut 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:
Citation:
SELECT [Mon Champs] FROM ...
Si tu n'as qu'une table, pas besoin de l'ajouter aux champs:
Citation:
SELECT MonChamps FROM MaTable
et non
Citation:
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:
__________________
Toutes les bonnes idées ne sont pas dans la même tête.
Jam est déconnecté   Réponse avec citation
Vieux 28/10/2005, 19h19   #37 (permalink)
Jam
XLDnaute Impliqué
 
Avatar de Jam
 
Date d'inscription: février 2005
Localisation: Chambourcy
Version Excel : Excel 2003 (PC)
Messages: 653
Envoyer un message via MSN à Jam
Par défaut 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
__________________
Toutes les bonnes idées ne sont pas dans la même tête.
Jam est déconnecté   Réponse avec citation
Vieux 29/10/2005, 08h44   #38 (permalink)
XLDnaute Accro
 
Date d'inscription: février 2005
Localisation: Aubenas
Version Excel : Excel 2000 (PC)
Messages: 1 126
Par défaut 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
__________________
A+
Michel_M
michel_m est déconnecté   Réponse avec citation
Vieux 01/11/2005, 13h43   #39 (permalink)
XLDnaute Impliqué
 
Avatar de Bricofire
 
Date d'inscription: mars 2005
Localisation: Nantes, France, Terre
Version Excel : Excel 2003 (PC)
Messages: 998
Par défaut 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]
Fichiers attachés
Type de fichier : zip PlantBrico.zip (32,1 Ko, 6 affichages)
__________________
Bricofire est déconnecté   Réponse avec citation
Vieux 01/11/2005, 14h06   #40 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 094
Par défaut 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 :

]=> DEMO Userform Filter sans autofilter par Control 'SpreadSheet' avec report[/color]

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]
_Thierry est déconnecté   Réponse avec citation
Vieux 02/11/2005, 10h02   #41 (permalink)
Jam
XLDnaute Impliqué
 
Avatar de Jam
 
Date d'inscription: février 2005
Localisation: Chambourcy
Version Excel : Excel 2003 (PC)
Messages: 653
Envoyer un message via MSN à Jam
Par défaut Re:= "Petite" DEMO (entre amiEs) pas encore 2000 !

Salut _Thierry, et tout le monde,

En coup de vent...2 liens concernant les connexions aux BDD + syntaxe SQL:

Pour SQL: http://sqlpro.developpez.com/
Pour BDD: http://www.carlprothman.net/Default.aspx?tabid=81

A+
Jam
__________________
Toutes les bonnes idées ne sont pas dans la même tête.
Jam est déconnecté   Réponse avec citation
Vieux 02/11/2005, 10h17   #42 (permalink)
Jam
XLDnaute Impliqué
 
Avatar de Jam
 
Date d'inscription: février 2005
Localisation: Chambourcy
Version Excel : Excel 2003 (PC)
Messages: 653
Envoyer un message via MSN à Jam
Par défaut 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
__________________
Toutes les bonnes idées ne sont pas dans la même tête.
Jam est déconnecté   Réponse avec citation
Vieux 17/11/2005, 19h16   #43 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 094
Par défaut 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]
_Thierry est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +2. Il est actuellement 22h42.


(C) 2006 Excel Downloads