Newsgroup: it.comp.lang.visual-basic
Titolo: [?][DataGrid] Messaggio di errore

Salve a tutti
posto in relazione ad un argomento che sicuramente è inflazionato ma a me
sconosciuto.
Sto utilizzando un controllo datagrid popolato da un recordset da codice e
fin qui tutto funziona, ma quando modifico una cella del controllo e passo
ad un'altra cella, ottengo il seguente messaggio: "Le informazioni sulla
colonna chiave non sono sufficienti per effetttuare l'aggiornamneto".
Queste sono le righe di codice che ho inserito:
tv sta per treeview
Dim rscontatti As New ADODB.Recordset
frmmenu.cnn.CursorLocation = adUseClient
rscontatti.Open "SELECT paga_fattorini.id_servizio, contatti.nominativo,
servizi.tipo_servizio, servizi.zona, servizi.importo, servizi.credito,
servizi.[abbonato_si/no],
servizi.incassofattura,paga_fattorini.[rit/cons],paga_fattorini.paga" _
& " FROM (contatti INNER JOIN servizi ON contatti.[codice cliente] =
servizi.id_cliente) INNER JOIN paga_fattorini ON servizi.id_servizio =
paga_fattorini.id_servizio where paga_fattorini.data=" & "#" &
Format(tv.SelectedItem.Parent.Text, "mm/dd/yyyy") & "#" & " and " _
& "paga_fattorini.fattorino=""" & tv.SelectedItem.Text & """", frmmenu.cnn,
adOpenStatic, adLockOptimistic, adCmdText
    Set DataGrid1.DataSource = rscontatti
    Dim sdfcredito As New StdDataFormat
    Dim sdfabb As New StdDataFormat
    Dim sdfincassato As New StdDataFormat
    For h = 0 To rscontatti.Fields.Count - 1
        Select Case h
            Case 7
                DataGrid1.Columns(h).DataField = rspaghe.Fields(h).Name
                sdfincassato.Type = fmtBoolean
                sdfincassato.FalseValue = "No Incasso"
                sdfincassato.TrueValue = "Incasso Fatt"
                Set DataGrid1.Columns(h).DataFormat = sdfincassato
            Case 6
                DataGrid1.Columns(h).DataField = rspaghe.Fields(h).Name
                sdfabb.Type = fmtBoolean
                sdfabb.FalseValue = "Pagante"
                sdfabb.TrueValue = "Abbonato"
                Set DataGrid1.Columns(h).DataFormat = sdfabb
            Case 5
                DataGrid1.Columns(h).DataField = rscontatti.Fields(h).Name
                sdfcredito.Type = fmtBoolean
                sdfcredito.FalseValue = "Saldato"
                sdfcredito.TrueValue = "Credito"
                Set DataGrid1.Columns(h).DataFormat = sdfcredito
            Case Else
                DataGrid1.Columns(h).DataField = rscontatti.Fields(h).Name
        End Select
    Next h
        DataGrid1.ReBind
La proprieta AllowUpdate del controllo DataGrid è impostato a True
Dov'è l'impiccio?
Premetto che ho scandagliato google alla ricerca di una risposta, ma quello
che ho trovato, non soddisfa il mio programmino. Sapete è molto volubile.
Grazie dell'aiuto
Fabio

Scusa, ma non capisco il senso di tutto questo codice.
Perchè fai questo, a cosa ti serve???

 Perchè fai questo, a cosa ti serve???
Cosa suggerisci?
Ciao
Fabio


Non so a cosa ti serve, ma comunque non dovresti riempire tu la griglia.
Basta che la rendi bound ad un ADODC e si riempe da sola.
Per la formattazione lo fai a design time direttamente sulla griglia.


il tipo di formattazione che gli chiedo è particolare quindi preferisco
impostarla in questo modo
Ciao
Fabio

 Il recordset associato, cosa ha per chiave?? un contatore????
Indice univoco


 Indice univoco
Se non sbaglio quando immetti valori nella griglia e non dai subito un
valore alla chiave ti da errore.


 valore alla chiave ti da errore.
Fortunatamente no
Così come l'ho impostato, funziona.
Ciao
Fabio


Quì allora c'è un altro problema.
Strano che non recuperi i campi.
Datasource, datamember tutto a posto??
Non mi è mai capitato


Cmq funziona tutto bene. Considerando che è la prima volta che lo utilizzo,
sono soddisfatto.
Ciao
Fabio