Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1504 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Appel Procédure Stockée Access depuis WinForm VB .Net en OLEDB

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Appel Procédure Stockée Access depuis WinForm VB .Net en OLEDB

n°1200026
Floppy_AD
Posté le 15-09-2005 à 10:22:16  profilanswer
 

Bonjour,
 
Voilà mon problème (je simplifie pour rester clair):
 
J'ai une base access avec une requête qui utilise une fonction qui est dans un module :
 
Module :

Code :
  1. Public Function changeNullEnVide(champ)
  2.     If (IsNull(champ)) Then
  3.         changeNullEnVide = ""
  4.     Else
  5.         changeNullEnVide = champ
  6.     End If
  7. End Function


 
Requête "TEST" :

Code :
  1. INSERT INTO TABLE2 (CHAMP1, CHAMP2)
  2. SELECT CHAMP1, changeNullEnVide(CHAMP2) FROM TABLE1


 
Lorsque je lance la requete TEST depuis Access, tout va bien
Mais impossible de lancer cette requête (procédure stockée) depuis VB .Net avec OLEDB :
 

Code :
  1. ' on suppose que conn contient la connexion ouverte
  2. Dim cmd As OleDbCommand
  3. cmd = New OleDbCommand("TEST", conn)
  4. cmd.CommandType = CommandType.StoredProcedure
  5. cmd.ExecuteNonQuery()


 
Là, j'ai l'erreur :

Code :
  1. Fonction 'changeNullEnVide' non définie dans l'expression.


 
Qu'est-je oublié ???
 
Merci d'avance...

mood
Publicité
Posté le 15-09-2005 à 10:22:16  profilanswer
 

n°1200789
Floppy_AD
Posté le 16-09-2005 à 08:15:52  profilanswer
 

En attendant une solution qui fonctionne en OLEDB, j'utilise ca :
 

Citation :

Dim accApp As Access.Application
 
accApp = CreateObject("Access.application" )
accApp.OpenCurrentDatabase("base.mdb" )
accApp.DoCmd.OpenQuery("TEST)
accApp.Quit()
accApp = Nothing


 
Mais j'attends toujours vos propositions...

n°1200801
FlorentG
Posté le 16-09-2005 à 08:53:44  profilanswer
 

Sauf qu'avec la dernière solution, il faut Access d'installé sur le poste, c'est pas top :(
 
Sinon, pour exécuter la fonction "changeNullEnVide", c'est un peu louche :( Je crois pas que c'est nécéssaire du côté de .NET. Ca doit être pris en charge avec les requêtes paramétrées...

n°1200804
olivthill
Posté le 16-09-2005 à 09:02:49  profilanswer
 

Bonjour !
 
Access n'a pas de procédure stockée.
Access a du code VBA, mais il n'est pas possible de le lancer et de le faire s'interpreter en OLE ni avec l'automation. Peut-être avec une future version d'Access.
 
Par ailleurs, l'instruction NZ() permet de donner une valeur à un champ nul, et la sélection peut se faire avec :

SELECT CHAMP1, NZ(CHAMP2,"" ) FROM TABLE1

:)

n°1200805
FlorentG
Posté le 16-09-2005 à 09:06:18  profilanswer
 

olivthill a écrit :

Access n'a pas de procédure stockée.


Si, en quelques sortes.

n°1202054
Floppy_AD
Posté le 19-09-2005 à 08:45:34  profilanswer
 

L'exemple changeNullEnVide n'est qu'un exemple.
Dans la réalité, c'est une fonction qui convertie une date issue de JD-Edwards vers une date au format classique...
 
Merci de vos réponses, mais ca ne résoud donc pas mon problème, de comment executer ma requete contenant une fonction à moi dedans...

n°1204394
Floppy_AD
Posté le 21-09-2005 à 14:42:16  profilanswer
 

Up pour une solution !!!

n°1850596
Mirolao
Posté le 12-02-2009 à 22:06:12  profilanswer
 

Floppy_AD a écrit :

Up pour une solution !!!


 
Bonjour, je suis nouveau sur ce forum. En fait je me suis inscrit aujourd'hui même (Jeudi 12 Février 2009).
J'ai une solution pour votre problème.
Il suffit d'utiliser la fonction IIF qui prend 3 parametres.
Syntaxe : IIF(Condition,valeur_de_retour_si_condition_vraie,valeur_de_retour_si_condition_fausse)
 
Faites comme suit:
SELECT CHAMP1, IIF(CHAMP2 IS NULL,'',CHAMP2) AS Alias_de_votre_choix FROM TABLE1.
Remarque : L'alias n'est obligatoire.
 
La fonction IIF teste la condition CHAMP2 IS NULL. Si celle-ci vrai, la fonction retourne '', sinon elle retourne la valeur de CHAMP2
 
J'espère que cette réponse vous aidera.
Salut !!
 
PS: Au fait, il y a toute une panoplie de fonction VB qui peuvent être utilisée dans les requêtes.
J'en donne quelques unes:
LEN(nom_du_champ) --> donne la longueur de la chaine de caractères
MID(nom_du_champ,index_départ,longueur_chaine) --> extrait la sous-chaine qui commence à la position index_départ et qui a pour longueur longueur_chaine
etc.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Appel Procédure Stockée Access depuis WinForm VB .Net en OLEDB

 

Sujets relatifs
[C# sous VS.NET] Développement pour PDA/Portable ??Etats dans access : probleme de comptage de champs vides
comment afficher des données Access sur Excel ?probleme Formulaire Access en plein écran
connection de plusieurs tables avec ado (access)Problème de connection à SQL Server depuis ASP.NET
Fichier DBS et Access...?Base access impossible à ouvrir "MSysDb" non trouvé...access 2003
[RESOLU] Supprimmer les droits sur une base ACCESS[Access] Un "Conflit d'écriture" aléatoire plante tout
Plus de sujets relatifs à : Appel Procédure Stockée Access depuis WinForm VB .Net en OLEDB


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR