OVH Cloud OVH Cloud

VB6 - SQL Server

4 réponses
Avatar
Julien
Bonjour,

J'ai réussi à installer SQL Server sur mon ordinateur. J'aurais voulu
développer une application fonctionnant en réseau et permettant d'accéder et
de modifier des données sur le serveur.

Je connait certaines choses dans le domaine mais pas assez profondément que
pour gérer les utilisateurs multiple.

Quelle méthodes utiliser? Quel fourniseur sqlodbe?
Positionnement du curseur? adUseServer?
Verrouillage?

Il faudrait que si un utilisateur essaie de modifier qqch qui est en cours
d'edition il en soit averti et que si qqun d'autre a modifié un
enregistrement, les mises a jours soient directement visible lorsque celui ci
a validé ses modifications.

Merci d'avance

4 réponses

Avatar
SAISAS
Bonjour,

je crois qu'à peu près trut ce qui permet d'accéder à Access permet
d'accéder à SQLServer. Personnellement j'ai essayé les deux choses suivantes :

1. les Dataenvironment : tu définis ton accès comme une base SQLServer et tu
l'utilises comme dans Access

2. les tables liées Access : Tu définis une base Access et tu lie les
données SQLServer à la base Access (données externes dans les bases Access)

Les deux fonctionnent sans problème. Attention, il y a cependant quelques
différences en particulier les messages d'erreur.

Personnellement, j'ai une préférence pour le 2. qui me permet de développer
des applications monoposte (avec Access) ou multiposte (avec SQLServer
derrière Access). Seul problème, récupérer la valeur de clé (type autonum) de
nouveaux enrigsitrements, déjà accrobatique avec un seul moteur, mais quasi
ingérable avec le mix des deux.

En ce qui concerne le partage des données SQLServer se débrouille comme un
grand, et te le fait savoir par des erreurs en cas de conflit.

Bonne rédaction de code.

"Julien" a écrit :

Bonjour,

J'ai réussi à installer SQL Server sur mon ordinateur. J'aurais voulu
développer une application fonctionnant en réseau et permettant d'accéder et
de modifier des données sur le serveur.

Je connait certaines choses dans le domaine mais pas assez profondément que
pour gérer les utilisateurs multiple.

Quelle méthodes utiliser? Quel fourniseur sqlodbe?
Positionnement du curseur? adUseServer?
Verrouillage?

Il faudrait que si un utilisateur essaie de modifier qqch qui est en cours
d'edition il en soit averti et que si qqun d'autre a modifié un
enregistrement, les mises a jours soient directement visible lorsque celui ci
a validé ses modifications.

Merci d'avance



Avatar
Julien
Le probleme est le suivant, je ne peux developper cette application car Acces
est limité a certains niveaux que j'ai besoin d'exploiter. J'utilise donc
Visual Basic.

J'ai des erreurs du type
"L'ensemble de lignes ne prend pas en charge les récupérations arrière."
"L'opération demandée n'est pas autorisée dans ce contexte."Lors de
déplacements entre les enregistrements.

Je devrais savoir exactement ce que me permet tel ou tel fournieeur, telle
ou telle type de connection, de verrouillage, etc...
Par exemple au neveau des différents fonctions (Movelast, MoveFirst, Find,
...) qui me posent des problemes en ce moment. J'utilise ADO Recordset par
code pour acceder a SQL Server actuellement.


"SAISAS" a écrit :

Bonjour,

je crois qu'à peu près trut ce qui permet d'accéder à Access permet
d'accéder à SQLServer. Personnellement j'ai essayé les deux choses suivantes :

1. les Dataenvironment : tu définis ton accès comme une base SQLServer et tu
l'utilises comme dans Access

2. les tables liées Access : Tu définis une base Access et tu lie les
données SQLServer à la base Access (données externes dans les bases Access)

Les deux fonctionnent sans problème. Attention, il y a cependant quelques
différences en particulier les messages d'erreur.

Personnellement, j'ai une préférence pour le 2. qui me permet de développer
des applications monoposte (avec Access) ou multiposte (avec SQLServer
derrière Access). Seul problème, récupérer la valeur de clé (type autonum) de
nouveaux enrigsitrements, déjà accrobatique avec un seul moteur, mais quasi
ingérable avec le mix des deux.

En ce qui concerne le partage des données SQLServer se débrouille comme un
grand, et te le fait savoir par des erreurs en cas de conflit.

Bonne rédaction de code.

"Julien" a écrit :

> Bonjour,
>
> J'ai réussi à installer SQL Server sur mon ordinateur. J'aurais voulu
> développer une application fonctionnant en réseau et permettant d'accéder et
> de modifier des données sur le serveur.
>
> Je connait certaines choses dans le domaine mais pas assez profondément que
> pour gérer les utilisateurs multiple.
>
> Quelle méthodes utiliser? Quel fourniseur sqlodbe?
> Positionnement du curseur? adUseServer?
> Verrouillage?
>
> Il faudrait que si un utilisateur essaie de modifier qqch qui est en cours
> d'edition il en soit averti et que si qqun d'autre a modifié un
> enregistrement, les mises a jours soient directement visible lorsque celui ci
> a validé ses modifications.
>
> Merci d'avance
>


Avatar
SAISAS
Re-bonjour Julien,

d'abord, ce que je te dis dans mon message conserne la programmation VB6, et
pas la programmation en Access. Donc j'imagine que nous parlons de la même
chose. Lorsque je te parle d'Access, c'est aux données que je fais référence.

Il me semble que dans ton cas, le problème n'est pas le moteur de données,
mais la manière dont tu définis ces données : la définition du type d'accès
(Dynaset, ...), le type de curseur (coté client, coté serveur) le type de
lock (optimiste, pessimiste) qui produit des résultats différents. Tout cela
associé au fait que tu peux passer par une table, ou par un ordre de
selection, que le traitement n'est pas pareil selon que un ou plusieurs
programmes accèdent ensemble aux données te donne différents messages
d'erreur possible.

Quelques pistes (et bogues courants) :

"L'ensemble de lignes ne prend pas en charge les récupérations arrière." :
classique du fichier ouvert en snapshot ou en output suivi d'un movefirst ou
d'un moveprev ... je me demande si un UNION dans ton SELECT ne génère pas ce
genre d'erreur.

"L'opération demandée n'est pas autorisée dans ce contexte." : tu as mis à
jour une table en lecture seule, ou tu violes une contrainte d'intégrité lors
du traitement de ton enregistrement précédent, et le problème t'est signalé
lors de la mise à jour, qui s'effectue lorsque tu exécutes un move quelque
chose (sachant que le close oublie de faire la mise à jour).

Autre piste : regarde si ton programme fonctionne lorsqu'il n'y a pas de
partage de données.

Dans les deux cas, c'est Visual Basic qui génère l'erreur, qui est la même
que ce soit de l'Access ou du SQLServer. Il y a une discussion intéressante
sur le sujet entre les différents modes d'accès dans le forum.

Enfin, en ce qui concerne le verrouillage de données, tu peux regarder les
notions de BeginTrans, CommitTrans et Rollback, mais à tes risques et périls.

"Julien" a écrit :

Le probleme est le suivant, je ne peux developper cette application car Acces
est limité a certains niveaux que j'ai besoin d'exploiter. J'utilise donc
Visual Basic.

J'ai des erreurs du type
"L'ensemble de lignes ne prend pas en charge les récupérations arrière."
"L'opération demandée n'est pas autorisée dans ce contexte."Lors de
déplacements entre les enregistrements.

Je devrais savoir exactement ce que me permet tel ou tel fournieeur, telle
ou telle type de connection, de verrouillage, etc...
Par exemple au neveau des différents fonctions (Movelast, MoveFirst, Find,
...) qui me posent des problemes en ce moment. J'utilise ADO Recordset par
code pour acceder a SQL Server actuellement.


"SAISAS" a écrit :

> Bonjour,
>
> je crois qu'à peu près trut ce qui permet d'accéder à Access permet
> d'accéder à SQLServer. Personnellement j'ai essayé les deux choses suivantes :
>
> 1. les Dataenvironment : tu définis ton accès comme une base SQLServer et tu
> l'utilises comme dans Access
>
> 2. les tables liées Access : Tu définis une base Access et tu lie les
> données SQLServer à la base Access (données externes dans les bases Access)
>
> Les deux fonctionnent sans problème. Attention, il y a cependant quelques
> différences en particulier les messages d'erreur.
>
> Personnellement, j'ai une préférence pour le 2. qui me permet de développer
> des applications monoposte (avec Access) ou multiposte (avec SQLServer
> derrière Access). Seul problème, récupérer la valeur de clé (type autonum) de
> nouveaux enrigsitrements, déjà accrobatique avec un seul moteur, mais quasi
> ingérable avec le mix des deux.
>
> En ce qui concerne le partage des données SQLServer se débrouille comme un
> grand, et te le fait savoir par des erreurs en cas de conflit.
>
> Bonne rédaction de code.
>
> "Julien" a écrit :
>
> > Bonjour,
> >
> > J'ai réussi à installer SQL Server sur mon ordinateur. J'aurais voulu
> > développer une application fonctionnant en réseau et permettant d'accéder et
> > de modifier des données sur le serveur.
> >
> > Je connait certaines choses dans le domaine mais pas assez profondément que
> > pour gérer les utilisateurs multiple.
> >
> > Quelle méthodes utiliser? Quel fourniseur sqlodbe?
> > Positionnement du curseur? adUseServer?
> > Verrouillage?
> >
> > Il faudrait que si un utilisateur essaie de modifier qqch qui est en cours
> > d'edition il en soit averti et que si qqun d'autre a modifié un
> > enregistrement, les mises a jours soient directement visible lorsque celui ci
> > a validé ses modifications.
> >
> > Merci d'avance
> >


Avatar
Julien
Je voudrais bien justement comprendre clairement ces différents méthodes
d'accès a SQL Server, CursorType, CursorLocation, Locktype...

Ma requete est du type

SELECT * FROM Tblname ORDER BY Name

Si quelqu'un pouvait me fournir ses propres méthodes de connection pour je
que comprenne le principe.

Je sais ce que font ces différentes propriétés (Curseur serveur, Dynamic -
Keyset, Pessimistic - Optimistic) mais je n'ai aucune idée des limitations de
chacun, ou de la compatibilité entreces options...