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

Linq Discussion :

extraction des données sur views avec linq to sql


Sujet :

Linq

  1. #1
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Points : 40
    Points
    40
    Par défaut extraction des données sur views avec linq to sql
    Bonjour,
    sur mon datagridview, j'aimerai remplir une colonne à partir d'une valeur disponible sur une vue que j'ai mappé au dbml avec le cocepteur. J'utilise donc ce code dans l'editeur visual basic
    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
    Private Sub TransfertDetailDataGridView_CellEndEdit_1(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles TransfertDetailDataGridView.CellEndEdit
            Dim db As New EasyContextDataContext
            If Me.TransfertDetailDataGridView.CurrentCell.ColumnIndex = DataGridViewTextBoxColumn2.Index Then
                Me.tsansitbox.Text = TransfertDetailDataGridView(1, CInt(TransfertDetailDataGridView.CurrentRow.Index)).Value
     
                Dim avail = From ava In db.AvailablaStocks Where ava.ProductID = CInt(Me.tsansitbox.Text) And ava.StoreID = Me.ComboBox1.SelectedValue Select ava.AvailStock, ava.ProductID
                Dim availa = (From av In db.AvailablaStocks Where av.StoreID Like ComboBox2.SelectedValue And av.ProductID Like CInt(Me.tsansitbox.Text) _
                Select av.AvailStock).First
                Try
                    TransfertDetailDataGridView(4, CInt(TransfertDetailDataGridView.CurrentRow.Index)).Value = avail.First.AvailStock
                    TransfertDetailDataGridView(5, CInt(TransfertDetailDataGridView.CurrentRow.Index)).Value = availa.Value
     
                Catch ex As Exception
                    MsgBox(ex.Message, , "EasyPharma")
                End Try
     
            ElseIf Me.TransfertDetailDataGridView.CurrentCell.ColumnIndex = DataGridViewTextBoxColumn3.Index Then
                Try
                    Me.Validate()
                    Me.TransfertDetailBindingSource.EndEdit()
                    Me.StockTransfertBindingSource.EndEdit()
                    Me.TableAdapterManager.UpdateAll(Me.Productlinkset)
     
                Catch ex As Exception
                    MsgBox(ex.Message & "  " & "Pas enregistré, recommencer et renseigné toutes les rubriques depuis le haut du formulaire", , "EasyPharma")
                    TransfertDetailDataGridView.Rows.Remove(TransfertDetailDataGridView.CurrentRow)
     
                End Try
     
            End If
        End Sub
    seulement, je reçois le message d'erreur : ................ne supporte pas la traduction en sql

    comment pourrais je remedier à la situation ? Votre aide me soulagerai beaucoup svp.

    Merci d'avance
    Lendcap

  2. #2
    Membre confirmé

    Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2004
    Messages : 178
    Points : 648
    Points
    648
    Par défaut
    Bonjour,

    A priori, l'une de tes requêtes (ou les deux) semblent poser problème lors de leur génération en sql:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim avail = From ava In db.AvailablaStocks Where ava.ProductID = CInt(Me.tsansitbox.Text) And ava.StoreID = Me.ComboBox1.SelectedValue Select ava.AvailStock, ava.ProductID
                Dim availa = (From av In db.AvailablaStocks Where av.StoreID Like ComboBox2.SelectedValue And av.ProductID Like CInt(Me.tsansitbox.Text) _
                Select av.AvailStock).First
    Mets en une commentaire pour tenter d'isoler le problème histoire d'y voir plus clair.

    A priori un like est possible du C# vers sql, avec notammement SqlMethods.Like (http://msdn.microsoft.com/fr-fr/libr...hods.like.aspx).

    Par contre, à vue de nez, je dirais que ce qui pose problème, c'est peut-être la convertion en int dans la requête. Essaie en plaçant cette convertion avant la requête. Peut-être que le CInt ne se traduit pas du C# vers sql.

  3. #3
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    +1, je pense aussi au CInt. Avec Int.Parse ça peut aller.

  4. #4
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Points : 40
    Points
    40
    Par défaut
    Bonjour,
    Merci bien pour vos promptes reponses.
    J'ai essayé les deux solutions mais l'exeption persiste
    La methode system.ObjetCompareObjetEqual(System.Objet, System.Objet, Boolean)ne prend pas en charge la traduction en sql
    Voici ce que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim val As Decimal
                val = Int32.Parse(Me.tsansitbox.Text)
     
     
                'TransfertDetailDataGridView(4, CInt(TransfertDetailDataGridView.CurrentRow.Index)).Value = db.Function2(CInt(tsansitbox.Text), ComboBox2.SelectedValue)
                'Dim prod = (From pro In db.Products Where pro.ProductID = CInt(Me.tsansitbox.Text) Select pro.PublicPrice, pro.SecurityStock)
     
                Try
                    Dim avail = From ava In db.AvailablaStocks Where ava.ProductID =Int32.Parse(val) And ava.StoreID = Me.ComboBox1.SelectedValue Select ava

  5. #5
    Membre confirmé

    Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2004
    Messages : 178
    Points : 648
    Points
    648
    Par défaut
    Je pense que c'est parce que tu fais ta convertion dans la requête Linq.

    Au tout début de ton code, tu fais déjà la convertion en int avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     val = Int32.Parse(Me.tsansitbox.Text)
    Alors pourquoi le refaire dans la requête avec ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ava.ProductID =Int32.Parse(val)
    Essai donc avec ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim avail = From ava In db.AvailablaStocks Where ava.ProductID = val And ava.StoreID = Me.ComboBox1 .SelectedValue Select ava

  6. #6
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Points : 40
    Points
    40
    Par défaut
    Bonjour,
    j'ai essayé à nouveau en suivant le dernier conseil mais la situation reste la même.

    Je crois que le problème devrait être ailleurs.

    Je demeure penché sur vos écrits.

    Merci d'avance

    Lendcap

Discussions similaires

  1. l'extraction des donnés sur les site internet avec python
    Par zakaria spearfishing dans le forum Général Python
    Réponses: 0
    Dernier message: 17/04/2013, 00h14
  2. Select dynamique sur PK avec LINQ to SQL
    Par celes dans le forum C#
    Réponses: 0
    Dernier message: 26/10/2012, 14h23
  3. Graver des données sur un CD avec FORMS
    Par ghazli dans le forum Forms
    Réponses: 3
    Dernier message: 09/08/2011, 15h23
  4. Extraction des Liens sur Internet avec java
    Par jaja2 dans le forum Général Java
    Réponses: 1
    Dernier message: 28/02/2008, 13h23
  5. Extraction de données sur des fichiers excel
    Par iupgeii dans le forum MFC
    Réponses: 3
    Dernier message: 23/01/2004, 13h53

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