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

Delphi .NET Discussion :

[Delphi.Net] Erreur de Cast ?


Sujet :

Delphi .NET

  1. #1
    Débutant

    Inscrit en
    Décembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 166
    Points : 120
    Points
    120
    Par défaut [Delphi.Net] Erreur de Cast ?
    Bonjour.
    J'ai une erreur que je ne comprend pas.
    Je vous met a la suite le detail de la page d'erreur a la quelle j'ai droit :

    Détails de l'exception: Borland.Data.Common.BdpException: Le cast spécifié n'est pas valide.

    Erreur source:


    Ligne 63 : MyBdpconnection.ConnectionString := 'assembly=Borland.Data.Oracle,Version=2.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b;vendorclient=oci.dll;database=TOTO;provider=Oracle;username=PANORAMA;password=PANORAMA';
    Ligne 64 : MyBdpconnection.Close;
    Ligne 65 : MyBdpconnection.Open;
    Ligne 66 : temp := 'select distinct(rownum || enseigne) as toto,rownum from magasins order by rownum';
    Ligne 67 : MyCommand := BdpCommand.Create(temp, MyBdpconnection);
    Quelqu'un pourrait il m'expliquer ce qu'un probleme de cast pourrait venir faire ici ?


  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Pourquoi cherche tu a fermer la connection avant de l'ouvrir :

  3. #3
    Débutant

    Inscrit en
    Décembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 166
    Points : 120
    Points
    120
    Par défaut
    Oui, j'ai vu ca apres, c'est le reflexe de le faire avec les TQuery...
    Je fais le Close avant de changer son DataBaseName des fois ...

    Bref, ... Et mon probleme de Cast ? Vous n'auriezpas une idée ?

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Ben l'idée qui me vient c'est la connectionstring mais pour ce faire il faudrait que tu puisse le tester en refaisant la manoeuvre en mode design, en posant ta Bdpconnection et en utilisant parcourir dans la fénêtre propriété afin de voir si une différence apparaît entre la chaine générée automatiquement et celle que tu as formulé

    A moins que tu essayes par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var
         connectionstring : String;
         myBdpConnection: BdpConnection;
    begin
       try
         connectionstring :=  ' assembly=Borland.Data.Oracle,Version=2.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b;vendorclient=oci.dll;database=TOTO;provider=Oracle;username=PANORAMA;password=PANORAMA';
         myBdpConnection:= BdpConnection.Create(connectionstring);
         myBdpConnection.Open;
    ...

  5. #5
    Débutant

    Inscrit en
    Décembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 166
    Points : 120
    Points
    120
    Par défaut
    Je l'ai d'abord fait en mode design puis j'ai copier/collé le resultat de la fenetre de propriete dans mon code ...

    PAr contre maintenant, c'est tres fort !
    En fait, je pose un composant BdpConnection sur ma form.
    Quand je clic sur la propriete "ConnectionString" il ne fait rien du tout !
    J'essaie donc en faisant clic droit sur le composant puis "Editeur de connexion".
    Et la il me sort une erreur non specifiée puis :

    "La reference d'objet n'est pas definie a une instance d'objet"

  6. #6
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    tu as été plus vite que moi je viens de réediter mon post

  7. #7
    Débutant

    Inscrit en
    Décembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 166
    Points : 120
    Points
    120
    Par défaut
    hehe !
    J'ai fait ce que tu m'as dit avant de passer par un composant...

    Je post mon "page_load" :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    procedure Panorama.Page_Load(sender: System.Object; e: System.EventArgs);
    var
      Script: String;
      MyAdapter : BdpDataAdapter;
      MyCommand : BdpCommand;
      MyBdpconnection : BdpConnection;
      MyReader: BdpDataReader;
      temp: String;
    begin
      if not Page.IsPostBack then
      begin
        MyBdpconnection := BdpConnection.Create;
        MyBdpconnection.ConnectionString := 'assembly=Borland.Data.Oracle,Version=2.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b;vendorclient=oci.dll;database=TOTO;provider=Oracle;username=PANORAMA;password=PANORAMA';
        MyBdpconnection.Open;   // ===> Toujours pareil ! (@_@)
        temp := 'select distinct(rownum || enseigne) as toto,rownum from magasins order by rownum';
        MyCommand := BdpCommand.Create(temp, MyBdpconnection);
     
        response.Write('toto');
        Exit;
     
        Myreader := MyCommand.ExecuteReader;
        while MyReader.Read do
          Response.Write(MyReader.Item['toto'].ToString + '<BR>');
     
        MyBdpconnection.Close;
      end;
    end;

  8. #8
    Débutant

    Inscrit en
    Décembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 166
    Points : 120
    Points
    120
    Par défaut
    Ca inspire pas, hein ?
    Moi non plus, c'est la 2° semaine que j'entame avec ca !!

  9. #9
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    ok mais en fait je t'ai proposé de faire le create directement surchargé avec la chaine de connection.

    1. mets un try catch
    2. Quand tu debbug pas à pas c'est bien connection.Open qui fait passé au catch (c'est sûr : )
    3. dans ce cas espion sur exception que dit exception.Message

    sinon en mode design tu n'as pas la possiblité de faire générer la chaine de connection et de la tester en direct :

    dernière chose, au pire tu peux allez voir dans la facq delphi.Net qui sont les pros du site dans ce domaine et les contacter direct par mp

  10. #10
    Débutant

    Inscrit en
    Décembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 166
    Points : 120
    Points
    120
    Par défaut
    Arf, la ca deviens compliké !
    Je ne peux pas deboguer sur mon poste ! Les pages que je modifie sont sur un serveur et lorsque j'essaie de deboguer en direct sur mon post, le WEB.COnfig pose souci, il retrouve pas ses petits !

    C'est pour ca que je passe par des response.write sans arrets
    Mais c'est bien le "Open" qui pose souci.
    Si je met mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reponse.write('toto'); Exit;
    avant le "Open", tout se passe bien.
    Mais des que je le met apres ca platouille !

  11. #11
    Débutant

    Inscrit en
    Décembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 166
    Points : 120
    Points
    120
    Par défaut
    UP !
    Apres avoir mis ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyBdpconnection := BdpConnection.Create('assembly=Borland.Data.Oracle,Version=2.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b;vendorclient=oci.dll;database=TOTO;provider=Oracle;username=PANORAMA;password=PANORAMA');
    C'est la que ca plante !
    De quoi il parle quand il dit :"Le cast spécifié n'est pas valide." ???

  12. #12
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    ben tu vois, je crois bien que c'est un problème de chine de connection et c'est dommage que tu ne puisses pas apparemment la tester en design

  13. #13
    Débutant

    Inscrit en
    Décembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 166
    Points : 120
    Points
    120
    Par défaut
    En meme temps, je l'ai testé cette chaine avant de la copier/coller ds le code !
    Mais bon, c'est comme un test sur une chaine de connexion a Ms Access, ca marche tout le tps

    nb: juste pour dire, 'ai eu au debut une erreur car il ne trouvait pas la DLL "bdpora20.dll", je lui ai donc fournie et la c'est autre chose ...

  14. #14
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    essayes avec çà (au point où on en est )
    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
    20
    21
    22
     
    const
       databasefile= '..\...\toto.extension';
       connectionString := 'assembly=Borland.Data.Oracle,Version=2.0.0.0,'
        + 'Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b;vendorclient=oci.dll;'
        + 'database='+ databasefile+ ';'
        + 'provider=Oracle;username=PANORAMA;password=PANORAMA';
     
    procedure Panorama.Page_Load(sender: System.Object; e: System.EventArgs); 
    var 
      Script: String; 
      MyAdapter : BdpDataAdapter; 
      MyCommand : BdpCommand; 
      MyBdpconnection : BdpConnection; 
      MyReader: BdpDataReader; 
      temp: String; 
    begin 
      if not Page.IsPostBack then 
      begin 
        MyBdpconnection := BdpConnection.Create(connectionString)
        MyBdpconnection.Open;
    ...
    sinon t'es sûr à propos de "vendorclient=oci.dll" :

  15. #15
    Débutant

    Inscrit en
    Décembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 166
    Points : 120
    Points
    120
    Par défaut
    pour OCI.DLL j'en sais absolument rien, je suppose que c'est lui qui m'as mis ca par defaut ...
    J'vais réessayer !

  16. #16
    Débutant

    Inscrit en
    Décembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 166
    Points : 120
    Points
    120
    Par défaut
    Ca marche !!
    Avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    database=TOTO;assembly=Borland.Data.Oracle,Version=2.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b;vendorclient=oci.dll;provider=Oracle;username=PANORAMA;password=PANORAMA
    Maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    assembly=Borland.Data.Oracle,Version=2.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b;vendorclient=oci.dll;database=TOTO;provider=Oracle;username=PANORAMA;password=PANORAMA
    Mystere, mystere ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ASP.NET C# 1.1 erreur de cast avec CDOEXM
    Par Seth_75 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/02/2009, 10h45
  2. Réponses: 0
    Dernier message: 02/05/2008, 16h19
  3. Erreur inconnue de Turbo Delphi.NET
    Par TryExceptEnd dans le forum Delphi .NET
    Réponses: 4
    Dernier message: 30/12/2006, 17h05
  4. [D3] erreur dans faq asp.net, version Delphi.NET
    Par adaneels dans le forum Contribuez
    Réponses: 1
    Dernier message: 01/11/2006, 21h38
  5. [VB.NET] Erreur conversion de code c=>vb (opendialogfile)
    Par hirochirak dans le forum Windows Forms
    Réponses: 19
    Dernier message: 02/06/2004, 16h31

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