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

VB.NET Discussion :

Problème de récupération d'ID


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Par défaut Problème de récupération d'ID
    Bonjour à toute la communauté,

    Je suis débutant en développement VB.NET et je viens ici vous demandez conseil, voici mon code-source :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Imports System.Data.SqlClient
    Imports System.Net.Mime.MediaTypeNames
     
    Public Class WebForm4
     
        Inherits System.Web.UI.Page
     
        'DECLARATION DES VARIABLES
     
        Dim myConnection As SqlConnection
        Dim executercommand As Integer
        Dim IDmax As String = " SELECT MAX (ID_dossier) FROM Dossier"
        Dim IDdossier As String = IDmax + 1
        Dim timer As DateTime
        'FIN DE LA DECLARATION
     
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     
        End Sub
     
        Private Sub Ajouterdossier_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Ajouterdossier.Click
     
            'DECLARATION DE LA CONNECTION SQL
            myConnection = New SqlConnection("server=;uid=;pwd=;database=")
            'FIN DE LA DECLARATION
     
            '----------------------------------------------------------------------------------------------------------
     
            'DECLARATION DES VARIABLES D'INSERTION SQL
            Dim myInsertQueryDossier As String = "INSERT INTO [Dossier] ([ID_dossier], [Description], [Emplacement], [ID_Filiale], [ID_Nom_Tiers], [Date_Creation] ) VALUES ( '" + IDdossier + "' , '" + descriptiondossier.Text.ToString() + "' , '" + emplacementdossier.Text.ToString() + "' , '" + nomfilialedrop.SelectedValue + "' , '" + naturefilialedrop.SelectedValue + "')"
            Dim myInsertQueryLigne As String = " INSERT INTO [Ligne] ([ID_dossier], [objet_ligne], [commentaires_ligne], [ID_nat_doc], [avenant]) VALUES ( '" + IDdossier + "' , '" + objet.Text.ToString() + "' , '" + commentaires.Text.ToString() + "' , '" + naturedocid.Text.ToString() + "' , '" + avenant.Text + "')"
            Dim myCommand As New SqlCommand(myInsertQueryDossier + myInsertQueryLigne)
            'FIN DES DECLARATIONS
     
            '-----------------------------------------------------------------------------------------------------------
     
     
            myCommand.Connection = myConnection 'INITIALISATION DE LA CONNECTION
            myConnection.Open() 'OUVERTURE DE LA CONNECTION
            myCommand.ExecuteNonQuery() 'EXECUTION DE LA REQUETE SQL
            myCommand.Connection.Close() 'FERMETURE DE LA CONNECTION
            Response.AppendHeader("Refresh", "0") 'ACTUALISATION DE LA PAGE POUR VIDER LE FORMULAIRE
            AlertWindow("Le dossier et la ligne ont bien été ajoutés.") 'MESSAGE D'AVERTISSEMENT 
     
        End Sub
     
        'SCRIPT POUR ALERTWINDOW
        Private Sub AlertWindow(ByVal Message As String)
            Message = Message.Replace("'", "\'")
            Message = Message.Replace(Convert.ToChar(10), "\n")
            Message = Message.Replace(Convert.ToChar(13), "")
            ltlAlert.Text = "alert('" & Message & "')"
        End Sub
        'FIN DU SCRIPT
     
    End Class
    Alors déjà j'ai un problème pour insérer la Date à l'aide d'un DateTime dans ma requête SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim myInsertQueryDossier As String = "INSERT INTO [Dossier] ([ID_dossier], [Description], [Emplacement], [ID_Filiale], [ID_Nom_Tiers], [Date_Creation] ) VALUES ( '" + IDdossier + "' , '" + descriptiondossier.Text.ToString() + "' , '" + emplacementdossier.Text.ToString() + "' , '" + nomfilialedrop.SelectedValue + "' , '" + naturefilialedrop.SelectedValue + "')"
    Et ensuite j'ai un soucis au niveau de l'ID :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim IDmax As String = " SELECT MAX (ID_dossier) FROM Dossier"
    Dim IDdossier As String = IDmax + 1
    J'aimerais en effet dans ce cas générer moi-même l'ID car le principe c'est qu'il y a un dossier auquel on ajoute des lignes ( on peut ajouter des contrats etc. par exemple) et du coup pour insérer mes lignes j'ai besoin de récupérer cet ID. Mon problème qui ce pose aussi (il y a peu de chance que cela ce produise mais imaginons) c'est que deux utilisateurs saisissent en même temps des données, admettons un pc plus rapide qu'un autre etc., du coup les lignes ne correspondrais pas au dossier initialement créer il y aurait un décalage, comment puis-je palier à cela?

    Si je ne suis pas très clair dites le moi

    Je vous remercie à tous

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Premier problème: un seul mot d'ordre : " Requêtes Paramétrés "

    Deuxième problème : N'insert pas toi même l'ID. Utilise un auto increment. A l'insertion, un nouvel ID sera générer.

  3. #3
    Nouveau candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    Premier problème: un seul mot d'ordre : " Requêtes Paramétrés "
    Merci pour votre réponse, comme je l'ai préciser je suis vraiment novice, comment puis-je faire des requêtes paramétrés ?

    Citation Envoyé par mactwist69 Voir le message
    Deuxième problème : N'insert pas toi même l'ID. Utilise un auto increment. A l'insertion, un nouvel ID sera générer.
    A la base oui tout les ID s'auto increment mais le soucis c'est que si quelqu'un créer un dossier en même temps il y a un risque que les lignes ne correspondent pas... vu que celle-ci récupère les valeurs de l'ID_dossier créer juste avant, comment puis-je palier à cela ?

    Merci beaucoup pour votre aide.

  4. #4
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Pour les requêtes paramétrées:

    http://webman.developpez.com/article...rameter/vbnet/

    Sinon pour l'auto-incrément, je suis pas sur que tu vois le truc. Car non, a la base tout les ID ne sont pas auto increment, ça se configure sur le serveur sql.

    Si tu insères toi même l'id ca ressemble à ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim MaxId as integer = FonctionRetourneID 'Fonction qui fait: Select Max ID from
    la requete d'insertion ressemblera a ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "INSERT INTO personne (id,nom,prenom) VALUES(" & MAxid & ",'toto','tata')"
    Et c'est ce que tu fais. Car même si ton ID est auto increment, ca n'empeche pas que tu puisses l'insérer toi même.

    Par contre si il y a un auto increment et que tu l'utilise ca donne ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "INSERT INTO personne (nom,prenom) VALUES('toto','tata')"
    Pas besoin de donner l'ID, pas besoin d'aller le chercher, et pas de doublon.

Discussions similaires

  1. [TIBSQL] Problème de récupération d'un champs
    Par TitiFr dans le forum Bases de données
    Réponses: 6
    Dernier message: 07/08/2005, 13h33
  2. [hibernate]Problème de récupération d'objet...
    Par roxx62 dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/07/2005, 11h36
  3. Réponses: 8
    Dernier message: 12/05/2005, 08h16
  4. Nouveau problème de récupération de valeurs.
    Par pmboutteau dans le forum ASP
    Réponses: 4
    Dernier message: 09/03/2005, 10h48
  5. Problème de récupération de texte de formulaire
    Par bigourson dans le forum Langage
    Réponses: 4
    Dernier message: 15/09/2004, 16h27

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