IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

interroger une base Progress OpenEdge 10


Sujet :

WinDev

  1. #1
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut interroger une base Progress OpenEdge 10
    Bonjour à tous,

    au boulot on me demande de développer un module qui devra synthétiser un certain nombre d'informations se trouvant dans deux gpao, l'une sous Sql server (là pas de problème), et l'autre qui tourne sous Progress OpenEdge 10.2B

    Je suis en WinDev 17, sans licence pour l'accès natif Progress.

    Je voudrais savoir quelles possibilités s'offrent à moi, si je peux passer par une librairie tierce, auquel cas m'indiquer un fournisseur, gratuit si possible.

    Ou bien peut-on se procurer l'accès natif pcsoft pour une v17, à un coût moindre ?

    Merci pour vos conseils.

    Cordialement.
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 327
    Points : 3 840
    Points
    3 840
    Par défaut
    Bonjour,

    Il doit bien y avoir un ODBC pour Progress ?

  3. #3
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Apparemment le driver ODBC doit s'installer en même temps que le Progress Client Networking

    Ensuite côté serveur il faut créer un serveur qui écoute sur un port à définir

    je m'appuies sur cette doc : https://wiki.windward.net/Wiki/09.Kn...L-92_Connector

    Je suis en train de chercher si j'ai le setup du Progress Client Networking
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  4. #4
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Citation Envoyé par droliprane Voir le message
    Apparemment le driver ODBC doit s'installer en même temps que le Progress Client Networking

    Ensuite côté serveur il faut créer un serveur qui écoute sur un port à définir

    je m'appuies sur cette doc : https://wiki.windward.net/Wiki/09.Kn...L-92_Connector

    Je suis en train de chercher si j'ai le setup du Progress Client Networking
    Mince la page de mon dernier lien vers windward.net a disparu, et je ne l'ai meme pas sauvegardée ou imprimée

    Quelqu'un saurait ce qui a pu se passer? Il y avait toute une procédure qui décrivait l'installation, la création d'un service d'écoute sur le serveur progress, et tout ce qu'il faut savoir, je suis dégouté
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Pour ma part, côté client j'ai installé le "Client Networking", ce qui semble suffisant pour pouvoir créer la source de données ODBC.
    Ensuite côté serveur, j'ai ajouté la ligne suivante dans le script de démarrage de la base:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    call proserve MaBase -m3 -Ma 5 -Mpb 4 -S sqlcol -ServerType SQL -SQLTempPgSize 128 -SQLTempBuff 16000
    sqlcol est le nom du port associé à la connexion ODBC, qui doit être spécifié dans la source de données.

    Tatayo.

  6. #6
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Bonjour tatayo,

    désolé pour la réponse tardive, j'ai du mettre ce sujet de côté quelques temps

    J'ai pu récupérer une archive qui s'appelle 102b_sqlclientaccess_nt et qui contient un dossier d'install du client networking

    Quand je le lance, j'ai une étape où on me demande une licence (serial num + control number) ça c'est bon, et ensuite le setup crash au moment d'installer le base Client (RT) ...

    Je me dis que le package n'est peut-être pas adapté à mon OS...

    Bref, je voulais te demander où tu t'étais procuré le client networking ou si éventuellement tu pouvais me le mettre à dispo sur un partage hébergé ?

    Codialement,

    droliprane
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Je n'ai pas récupéré de package particulier, j'utilise celui qui permet d'installer le client Progress, le moteur de la base... Seul le numéro de série (et sa clé) permet de savoir ce qu'on va installer.
    L'exécutable d'origine se nomme OE102A02_nt64.exe, mais je ne sais pas si c'est légal de le mettre "à disposition".
    Normalement on peut le récupérer directement sur le site d'OpenEdge.

    Concernant le crash, je pense qu'il faut voir directement avec le support...

    Tatayo.

  8. #8
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    En fait c'est pas moi qui ai fait l'installation de l'erp qui tourne sous progress

    mais effectivement, les intégrateurs ont laissé des sources sur le serveur, et j'ai un fichier OE10B_nt64.exe

    Je suis en train de rapatrier le setup de 500Mo, j'espère juste que je peut attaquer mon serveur de base de données progress (à priori installé en 64 bits, comment le vérifier car j'ai aussi le setup en 32 bits) à partir du client networking en 32bits

    Car je projette de développer mon appli WinDev en 32bits, donc j'imagine obligé d'utiliser un connecteur 32bits ?
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Pour le 32/64 bits, aucun problème.
    J'ai installé le client 32 bits sur un Windows 2008R2 64 bits, et la base de données a été migrée il y a déjà quelques temps en 64 bits (dump/load, que du bonheur...).
    C'est complètement transparent, y compris pour l'ERP (on utilise peut-être le même !).
    L'exécutable dont tu parles est la version 64 bits. La 32 bits se nomme OE102A02_nt.exe (enfin pour la 10.2A02, évidemment).

    Tatayo.

  10. #10
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    oui mais c'était pour faire un essai.

    la version x64 pèse 2 fois moins lourd que la 32

    par contre mon projet WinDev sera compilé en 32bits, je dois donc forcément installer le module networking en 32 pour que ça fonctionne ou bien un exe WinDev 32bits saurait dialoguer avec le client networking 64bits ?

    Quant à notre ERP il s'agit de QAD, pas formidable
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Et non, pour une application 32 bits, il faut absolument le client 32 bits. Idem pour une application 64 bits, il faut le client 64 bits.
    Si ta base utilise plus de 3.5Go de mémoire cache, elle est en 64 bits. Mais comme je l'ai dit, peu importe, le client 32 bits peut attaquer les deux "versions".

    Tatayo.

    P.S. notre ERP c'est Colombus, qu'on va "bientôt" remplacer par Divalto.

  12. #12
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Super, apparemment j'ai réussi à installer le client networking

    Je suis maintenant sur le serveur à essayer de lancer une session "serveur" comme tu me l'as expliqué la dernière fois

    J'ai l'impression que ça fonctionne, j'ai lancé le script sur le port 12345 pour tester, j'ai cette réponse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    E:\QAD\db\prod>call proserve mfgprod -m3 -Ma 5 -Mpb 4 -S 12345 -ServerType SQL -
    SQLTempPgSize 128 -SQLTempBuff 16000
    OpenEdge Release 10.2B07 as of Fri Sep  7 02:16:54 EDT 2012
    17:22:33 SRV        Ce broker de base de donnÚes se terminera quand la session se terminera. (5405)
    17:22:33 SRV     9: Connexion de l'utilisateur Administrateur Ó CON:. (452)
    17:22:33 BROKER  9: D��marrage de 12345 en utilisant TCP IPV4 address 0.0.0.0, pid 6644. (5644)
    17:22:33 BROKER  9: Ceci est un brokeur supplÚmentaire pour ce protocole. (5645)
    17:22:33 BROKER  9: Ce broker prend seulement en charge le groupe de serveurs SQL. (8864)
     
    E:\QAD\db\prod>
    Il me redonne le prompt et le serveur est apparemment lancé puisque que quand je fais un telnet localhost 12345 ça se connecte.

    Je vais tenter de configurer mon ODBC qui servira pour mon appli windev, mais en attendant, comment je stoppe mon serveur ?

    Merci encore
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Pourquoi veux tu le stopper ?

    Tatayo.

  14. #14
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    En fait je veux changer de port, et puis j'aime pas laisser des trucs en mémoire pour rien.

    Mais c'est vrai que c'est pas un drame s'il reste actif
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  15. #15
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    A ma connaissance la seule façon de l'arrêter est de stopper la base.
    Pour ce qui est de l'empreinte mémoire, elle est vraiment négligeable par rapport au Buffer Cache par exemple (quelques centaines de Ko au pire, contre plusieurs (dizaines de) Go).
    C'est juste un process supplémentaire qui s'occupe des connexions ODBC (juste des connexions), le reste est géré par le moteur de Progress.

    C'est pour cela que je ne voyais pas trop l'intérêt de l'arrêter, au même titre que le moteur "standard" de la base de données.
    La dernière fois que j'ai arrêté la base, c'était pour y ajouter des extends (manque de place...). En dehors des opérations de maintenance, elle tourne 24/7.

    Tatayo.

  16. #16
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Bon hé bien je n'arrive pas à créer ma source de données ODBC, je ne vois même pas le driver dans la liste.



    Est-ce que j'ai manqué une étape ?
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 303
    Points : 812
    Points
    812
    Par défaut Drivers ODBC 32 bits gérés séparément des drivers ODBC 64 bits
    Bonjour à tous,

    En clair: un processus WOW64 est un processus 32 bits qui s'exécute sur une plateforme 64 bits, à l'intérieur d'une "boîte de compatibilité 32 bits".


  18. #18
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Ok, un grand merci, j'aurais du me douter j'ai déjà galéré comme ça pour des extensions 32bits à ajouter à un serveur IIS, il fallait les mettre dans SYSWOW64

    Je vois donc bien mon driver OpenEdge, et j'ai même pu créer ma source de données utilisateurs, testé la connexion, ça fonctionne, une bonne chose de faite.

    Maintenant je bloque sur la définition de cette source de données dans un nouveau projet WinDev, est-ce que je dois choisir un type de BD dans la définition du projet ? ou sachant que je vais fonctionner en ODBC direct, tout se fera par programmation et donc y'aura pas d'analyse dans le projet ?

    Je vais partir sur cette seconde piste pour l'instant, en attendant vos conseils.

    Merci à tous
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  19. #19
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Rebonjour,

    bon à priori j'arrive à me connecter par programmation en faisant un SQLConnecte sur ma source ODBC et en précisant les credentials de connexion à la base

    en revanche, je n'arrive pas à soumettre une requête et ramener un jeu de données, juste pour tester

    voici comment je procède :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PROCEDURE query()
     
    // Exécuter la requête et récupérer le résultat ligne à ligne
    i est un entier = 0
    SQLExec("SELECT pt_part FROM PUB.pt_mstr", "REQ1")
    TANTQUE SQLAvance("REQ1") = 0  // Il y a encore une ligne à lire
    	i++
    	// Récupérer les données
    	Trace(SQLLitCol("REQ1", 1))
    FIN
    SQLFerme("REQ1")
    J'ai lu sur différent forums qu'il fallait préfixer le nom de la table par PUB, je ne sais pas pourquoi...

    En tout cas, je n'ai aucun résultat, et j'ai pourtant plus de 9000 articles dans la table pt_mstr

    La connexion doit être bonne puisque ce code passe avec succès :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Cnx = SQLConnecte("nom ODBC", "user", "password")
     
    SI Cnx <> 0 ALORS
    	// La connexion s'est bien passée
            query()		
    SINON
    	// La connexion a échoué : affichage d'un message explicatif
    	SQLInfoGene()
    	Erreur("La connexion à la source de données a échoué." + RC + ...
    	"Code erreur : " + SQL.Erreur + RC + SQL.MesErreur)
     
    	LIB_patienter..Visible = Faux
     
    	Ferme()
     
    FIN
     
     
    LIB_patienter..Visible = Faux
    Une fois que je saurai faire une bête requête select c'en sera fini de mes questions, je pourrai me débrouiller seul...

    Merci


    EDIT : voici l'erreur résultant de la requête :

    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  20. #20
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Le mieux ici est de tester le retour de SqlExec(), ainsi en cas d'échec WinDev pourra te dire ce qui ne va pas (avec SqlInfoGene() et SQL.MesErreur).

    Tatayo.

Discussions similaires

  1. Interroger une base access via le web
    Par pascale86 dans le forum Access
    Réponses: 1
    Dernier message: 15/03/2007, 15h33
  2. [VBA Excel]Interroger une base access depuis Excel
    Par Stephane_123 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 12/02/2007, 10h43
  3. [Conception] Outil pour INTERROGER une base de donnees
    Par barthelv dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/05/2006, 15h23
  4. [VB] interroger une base Access contenant des libellés Russe
    Par roby dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/03/2006, 15h03
  5. Interroger une base MySQL
    Par Nicolas69 dans le forum MFC
    Réponses: 2
    Dernier message: 25/04/2005, 12h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo