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

Bases de données Delphi Discussion :

Se connecter a une bdd dbase


Sujet :

Bases de données Delphi

  1. #1
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut Se connecter a une bdd dbase
    Bonjour,

    J'ai recu une bdd de type dbase (*.dbf) que je dois intégrer dans la bdd d'un de mes logiciels, j'ai pas l'habitude de travailler avec dbase alors voici ce que j'ai fait : Un alias ODBC, un alias BDE, si je place un compo TTable + DataSource + DBGrid (pour avoir un apercu), je specifie l'alias et la table dans le TTable, je lie les autres compos : lorsque j'active dans delphi le compo TTable, les données s'affichent bien dans le DBGrid, losque je lance l'appli et que je fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monTTable.Active := True;
    j'ai la boite de dialogue de mot de passe et d'utilisateur qui s'affiche et si je fait 'Ok' au lieu d'ouvrire la table j'ai l'erreur :
    Nom de table Incorrect
    Pourquoi ?

    EDIT : Ca marche à 100% avec certaines tables, pas avec dautres

  2. #2
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 104
    Points
    19 104
    Par défaut
    Pourquoi un Alias ODBC ?

    le BDE peut ouvrir directement les tables DBase. Essaye dans ton appli de sur le monTTable :
    - DataBaseName à vide
    - TableName avec le nom de la table y compris son chemin d'accès.

  3. #3
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut
    J'ai crée l'alias ODBC parceque lorsque j'ai fait directement dans le BDE l'alias voulait pas s'ouvrir. Mais bon, ca ne me gêne pas, je veux accéder a cette bdd seulement pour en exporter les données vers une autre bdd, donc c un accès spontané.

    J'ai trouvé une solution temporaire, enfin je crois : si je referme Delphi et que je le réouvre, si je veux choisir le TableName du compo TTable il me dit :
    Index de production manquant ou endommagé, on ne peux interpréter la clé d'index.
    On a plusieurs chois mais la seule qui marche c'est :
    Detacher les Index
    J'ai donc fait cela et a l'usage les tables s'ouvrent, la première j'ai pu la lire et en copier les champs sans problème, la deuxième j'ai le message
    Violation de clé
    après avoir lu les 3 premiers champs (oui juste lire!), je me demande si ce n'est pas à cause des index justement, pourtant cette table s'ouvre bien avec DBF Viewer 2000. Je ne voit pas de doublons dans les index au debut de la table (dans ceux qui était lus lors de l'erreur) mais j'ai pas tout regardé vu qu'il y en a quand meme plus de 24000 enregistrements..

    Mici quand meme NONO, je vais essayer de réenregistrer la table avec DBF Viewer 2000, je vous tiens au courant.
    Edit : le reenregistrer n'a rien changé

    Edit2 : Avec le module de bdd a l'ouverture il y a un message
    Impossible de trouver les fichiers BLOB
    et il ne veux bien afficher que les 2 premières lignes.

  4. #4
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut Re: Se connecter a une bdd dbase
    Citation Envoyé par Harry
    Bonjour,

    EDIT : Ca marche à 100% avec certaines tables, pas avec dautres
    Le "problème" des fichiers .dbf.... c'est que cela peut être du dBase II, III III+, IV, xBase, Visual dBase, du Foxpro... j'en passe et des meilleurs...

    Bonne chance

  5. #5
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut
    La se sont plusieurs tables d'une meme base, de plus la lecture avec les composants de Delphi 7 sont en theorie compatible avec toutes les versions, je penche plus pour un pb de fichiers endommagés ou manquants. Mais comment réparer?

  6. #6
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Citation Envoyé par Harry
    La se sont plusieurs tables d'une meme base, de plus la lecture avec les composants de Delphi 7 sont en theorie compatible avec toutes les versions, je penche plus pour un pb de fichiers endommagés ou manquants. Mais comment réparer?
    Il y a qlq années... j'avais les outils pour faire des rebuild.... mais maintenant, nada

    par contre j'ai trouvé un lien:
    http://www.abri.com/recover.html#FpRun

    Recover is far more than a glorified file header fixer.

    It is a comprehensive, automated, FoxPro file error detection and recovery utility, used worldwide by major corporations and government agencies.

    It can also repair Clipper/FoxBase+/dBASEIII DBF and memo file headers and restore records from the corrupted .DBF files.
    Single User and Royalty Free Recover from non-FoxPro applications:

    A tes risques et périls

    Sinon on peut essayer avec le "Modules basde de données" de delphi pour voir s'il n'y a pas des bizarretés dans la structure

  7. #7
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut
    Humm, that look's good, (mais c payant, j'espere que la demo est fonctionnelle).

    Le module n'arrive pas à lire plus que les 2 premiers enregistrements et donne les messages d'erreur à l'ouverture concernant les fichiers de blob et les index.

    Je vais tester le lien, mais je vais aussi essayer de me faire reenvoyer les fichiers (ils m'avaient été envoyé par ftp) car je pense que tout n'est pas passé.

    Comme d'hab je vous tiens au jus.

    ++

  8. #8
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Citation Envoyé par Harry
    Humm, that look's good, (mais c payant, j'espere que la demo est fonctionnelle).

    ++
    Single User and Royalty Free Recover from non-FoxPro applications:

    Normalement c'est gratos pour les dbf non foxpro ?!

    Je me souviens que l'on avait des prob avec les blobs dbf... on arivé a faire des rebuild nous mêmes avec un option que l'on mettait dans un menu de nos prog.... mais pour savoir comment ????

    Pour ce qui est des index..... tu peux toujours les virés s'il ne sont pas utile..et voir ce qui se passe

  9. #9
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Ahhh les souvenir reviennent un peu, on utilisé les API BDE (DBi)

    Peut être que celle là serait suffisante

    C syntax

    DBIResult DBIFN DbiPackTable (hDb, hCursor, pszTableName, [pszDriverType], bRegenIdxs);

    Delphi syntax

    function DbiPackTable (hDb: hDBIDb; hCursor: hDBICur; pszTableName: PChar; pszDriverType: PChar; bRegenIdxs: Bool): DBIResult stdcall;

    Description

    DbiPackTable optimizes table space by rebuilding the table associated with hCursor and releasing any free space.

    Parameters

    hDb Type: hDBIDb (Input)
    Specifies the valid database handle.
    hCursor Type: hDBICur (Input)
    Specifies the cursor on the table to be packed. Optional. If hCursor is specified, the operation is performed on the table associated with the cursor. If hCursor is NULL, pszTableName and pszDriverType determine the table to be used.
    pszTableName Type: pCHAR (Input)
    Pointer to the table name. Optional. If hCursor is NULL, pszTblName and pszTblType determine the table to be used. (If both pszTableName and hCursor are specified, pszTableName is ignored.) If pszTableName is a fully qualified name of a table, the pszDriverType parameter need not be specified. If the path is not included, the path name is taken from the current directory of the database associated with hDb.

    pszDriverType Type: pCHAR (Input)
    Pointer to the driver type. Optional. This parameter is required if pszTableName has no extension. The only valid pszDriverType is szDBASE.
    bRegenIdxs Type: BOOL (Input)
    Specifies whether or not to regenerate out-of-date table indexes. If TRUE, all out-of-date table indexes are regenerated (applies to maintained indexes only). Otherwise, out-of-date indexes are not regenerated.

    Usage

    dBASE or FoxPro: dBASE and FoxPro let users mark a record for deletion (as opposed to actually removing it from the table). The only way to permanently remove marked records is with DbiPackTable.

    Paradox: This function is not valid for Paradox tables. Use DbiDoRestructure with the bPack option, instead.

    SQL, Access: This function is not valid for SQL or Access tables.

    Prerequisites

    Exclusive access to the table is required.

    DbiResult Meaning

    DBIERR_NONE The table was successfully rebuilt.
    DBIERR_INVALIDPARAM The specified table name or the pointer to the table name is NULL.
    DBIERR_INVALIDHNDL The specified database handle or cursor handle is invalid or NULL.
    DBIERR_NOSUCHTABLE Table name does not exist.
    DBIERR_UNKNOWNTBLTYPE Table type is unknown.
    DBIERR_NEEDEXCLACCESS The table is not open in exclusive mode.

    See also

    DbiOpenTable, DbiDeleteRecord, DbiDoRestructure

Discussions similaires

  1. Problème de connection à une BDD
    Par peppena dans le forum Linux
    Réponses: 2
    Dernier message: 24/05/2006, 16h54
  2. [MySQL] Faut il fermé les connections a une BDD?
    Par Death83 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/01/2006, 13h38
  3. [VB.Net] Problème de connection à une BDD
    Par Catalan dans le forum ASP.NET
    Réponses: 22
    Dernier message: 03/10/2005, 15h29
  4. [Mysql] Connection delphi à une bdd sous easyphp...
    Par pataluc dans le forum Bases de données
    Réponses: 2
    Dernier message: 14/06/2004, 09h07
  5. connection a une BDD MySql
    Par delire8 dans le forum MFC
    Réponses: 7
    Dernier message: 19/06/2002, 18h18

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