Login mot de passe
 
Menu Principal
Soutenir SQLManagerX
Certains nous ont demandés comment nous aider voici un lien pour nous soutenir


SQLManagerX
Dossiers
Accès SQLManagerX
Découvrez



SQLManagerX Pro


Qui est en ligne
9 utilisateur(s) en ligne (dont 1 sur Suite SQLManagerX)

Membre(s): 0
Invité(s): 9

plus...
Partenaires

http://www.TeeCod.fr
TeeCod


http://www.microsystem.fr
Microsystem


http://www.dag-system.fr/?lang=fr#
DAG SYSTEM


Suite SQLManagerX
[Retour | Afficher cette page en format imprimable]

Page soumise par Firetox


MSSQL4WD

 

Dernière version

Télécharger la dernière version : MSSQL4WD

(voir dans download pour les informations sur les changements)

Compatibilité : SQLManagerX

Introduction

Ce projet permet un accès à la bases de données SQLserver  au travers de la couche ADO de Microsoft. Il est composé d'une fenêtre de test, d'une classe et d'une DLL.

L'accès encapsule la librairie ADO de Carlos Antollini (A set of ADO Classes - version 2.20). Les sources de la DLL sont donnés.

Principe

La DLL fournit se base essentiellement sur l' éléments suivants :

  • ADO (ActiveX Data Objects)

Cet objet repose sur les APIs OLEDB. Certaines fonctionnalités de ADO ne sont pas supportées par toutes les bases car elles dépendent du fournisseur (provider) OLEDB.

Compléments

Pour utiliser la DLL il est nécessaire :

d'avoir le MDAC version 2.6,
d'avoir installer le provider OLE DB correspondant a SQLserver
un server SQLServer disponible
exemple de connexion :

v_retCode = MSSQL:mySQLConnecte("Provider=SQLOLEDB;server=192.6.1.231;UID=root;PWD=fred;database=Mabase;")

Particularites

Blocage : le blocage a la ligne comprend deux parametres :
timeOut : permettant de modifier le temps d'attente avec  d'avoir un retour

LockSelect : permet de specifier si on veut que le select des autres utilisateur soit bloque ou simplement les update. c'est a dire que si un autre utilisateur demande a bloque la meme ligne le serveur le bloquera au moment du select ou au moment de l'update.

ATTENTION si un utilisateur utilise ce parametre a vrai , le blocage fait avec vrai seront bloque au niveau select, sinon c'est l'update qui renverra le blocage

Clause LIMIT : l'acces natif accepte les requetes de la forme select * from matable LIMT 2,5 pour avoir une navigation par page c'est parfois tres utile. nous avons repris la syntaxe MySQL.

les MEMOS : SQLserver par ADO demande une gestion particuliere des blobs et memos binaire ou photo
pour envoyer un memo

v_retCode = MSSQL:MySQLAttacheMemo(0,fichier_logo,"logo")
 v_retCode = MSSQL:mySQLFlushMemo(0,"mesBlobs"," id=1")

la premier ligne sert a lier le memo a un fihier ensuite avec la deuxieme ligne on l'envoie dans la base le deuxieme parametre etant le where pour identifier la ligne (ici id=1)

pour lire un memo de la base
MSSQL:mySQLExec("select logo from mesblobs where id=1",0)
SI MSSQL:mySQLFetch(0) ALORS
  MSSQL:mySQLLitMemo(0,1,_Logo1)
  //logo1 est le nom du champs image dans la fenetre windev
FIN

Procedures Stockées
Exmple de PROCEDURE stocke
Create Procedure sp_OutputTest
 @IN1 decimal(15,4),
 @OutInt int Output,
 @OutChar varchar(20)Output,
 @OutDecimal decimal(15,5)OutPut
 As
 SELECT @OutChar = 'HelloWorld'
 SELECT @OutInt  = 10 *@IN1
 SELECT @OutDecimal = @IN1*2.5
 RETURN(90)
GO

la classe a des constantes pour gerer les procedure stockees :

   // type de parametre IN /OUT
   BIN                 parametre en entree
   BOUT             parametre en sortie

   // type des variables entier chaine, double ou date
   BINTEGER  parametre de type entier
   BCHAR         parametre de type chaine
   BLONG         parametre de type long
   BDOUBLE    parametre de type double, ou decimal
   BDATE         parametre de type date

FONCTION mySQLDefBind(p_num, p_nom , p_sens , p_type, p_valeur="", p_longueur)
// il faut repsecterl'ordre des parametres pour definir les defBind
// chaque parametre dans l'ordre de leurdefinition dans la procedure

// p_type : voir les constantes pour caBINTERGER,BC§HAR,BDATE,BDOUBLE, etc
// p_sens : IN - OUT

FONCTION mySQLGetBind(p_indice,p_resultat)
// recuperation des parametresenvoyé a la procedure apres son execuion
// indice du parametre : 1 à N comme definit dansle DefBind 1 etant le premier etc ...
// ATTENTION si la procedure renvoie unresultat le 1 est le resultat de la procedure
// p_resultat : chaine recevant leresultat

// exmple de procedure stockee

// CREATE Procedure sp_OutputTest
// @IN1 decimal(15,4),
// @OutInt int Output,
// @OutChar varchar(20)Output,
// @OutDecimal decimal(15,5)OutPut,
// @outDate datetime output
// As
// SELECT @OutChar = 'HelloWorld'
// SELECT @OutInt  = 10 *@IN1
// SELECT @OutDecimal = @IN1*2.5
// SELECT @outDate = getdate()
// RETURN(90)
// GO
//
// appel de parametre
//     il faut repsecter l'ordre des parametre pour definir les defBind
//     chaque parametre dans l'ordre de leur definition dans la procedure

// premier parametre : @IN1
MSSQL:mySQLDefBind(1,"@IN1",MSSQL:BIN,MSSQL:BDOUBLE,40.5676)

// deuxieme parametre : en entree / sortie entier
MSSQL:mySQLDefBind(2,"@outInt",MSSQL:BOUT,MSSQL:BINTEGER)

// troisieme parametre en entee sortie mais chaine
MSSQL:mySQLDefBind(3,"@OutChar",MSSQL:BOUT,MSSQL:BCHAR)

// 4 em parametre en entee sortie mais chaine
MSSQL:mySQLDefBind(4,"@outDecimal",MSSQL:BOUT,MSSQL:BDOUBLE)

// 5 em parametre en entee sortie mais chaine
MSSQL:mySQLDefBind(5,"@outDate",MSSQL:BOUT,MSSQL:BDATE)

IF (MSSQL:MySQLExecPS("sp_OutputTest")) THEN
 
 // recuperation des resultats dans l'exemple on recupere tout
 
 // le resultat de la procedure
 MSSQL:mySQLGetBind(0,v_reponse)
 Trace(v_reponse)
 
 // le premier parametre envoye
 MSSQL:mySQLGetBind(1,v_reponse)
 Trace(v_reponse)
 
 // le deuxieme parametre envoye
 MSSQL:mySQLGetBind(2,v_reponse)
 Trace(v_reponse)
  
 // le troisieme parametres
 MSSQL:mySQLGetBind(3,v_reponse)
 Trace(v_reponse)
 
 // le quatrieme parametres
 MSSQL:mySQLGetBind(4,v_reponse)
 Trace(v_reponse)

ELSE
 Erreur(MSSQL:mySQLGetErrorMessage()) 
END

Le projet exemple a ete teste sur un serveur SQLServer 2005 et contient les nouvelles mise a jours


n'hesitez pas a nous contacter si vous avez des problemes



[Retour | Afficher cette page en format imprimable]

Page soumise par Firetox
Copyright: © 2004 By SQLManagerX
WinDev©, WebDev© et HyperFile© sont des marques déposées par PCSoft.
By Firetox
IMAGO:THEMES Theme Design by IMAGO DESIGN CORP.