non esattamente, la fonte dei dati è un database.
Come da te descritto sposto il valore cella, io devo andare a cambiare la data nel record, quindi ho un array con caricato gli id di ogni riga, quindi nell'evento GridView1_Drop() prelevo l'id corrispondente e vado a fare l'update.
' Gambas class file
Private datecaricate As New Date[]
Private consDay As New String[]
Private conscaricate As New String[]
Private newrow As Integer
Private oldrow As Integer
Public Sub _new()
Refresh()
End
Public Sub Refresh()
caricadate(Now, SpinBox1.Value)
loadgrid()
End
Private Sub caricadate(datainizio As Date, numerogiorni As Integer)
Dim i, ic As Integer
conscaricate.Clear
datecaricate.Clear
For i = 0 To numerogiorni - 1
If WeekDay(DateAdd(datainizio, gb.Day, i)) = 6 Then Continue
If WeekDay(DateAdd(datainizio, gb.Day, i)) = 0 Then Continue
If caricaconsegne(DateAdd(datainizio, gb.Day, i)) = True Then
For ic = 0 To consDay.Count - 1
conscaricate.Add(consDay[ic])
datecaricate.Add(DateAdd(datainizio, gb.Day, i))
Next
Else
conscaricate.Add("0")
datecaricate.Add(DateAdd(datainizio, gb.Day, i))
Endif
Next
End
Public Sub loadgrid()
Dim i, ic As Integer
GridView1.Clear
GridView1.Mode = Select.Single
GridView1.Header = GridView1.Horizontal
GridView1.Columns.Count = 3
GridView1.Columns[0].Text = "Data"
GridView1.Columns[2].Text = "Consegna"
GridView1.Columns[0].Alignment = Align.Right
GridView1.Columns[0].Width = 180
GridView1.Columns[1].Width = 20
GridView1.Rows.Count = datecaricate.Count
For i = 0 To datecaricate.Count - 1
GridView1[i, 0].Text = Format(datecaricate[i], "dddd dd-mm")
GridView1[i, 2].Text = testoconsegna(conscaricate[i])
Next
Catch
Message.Error(Error.Text)
End
Private Sub testoconsegna(idprev As Integer) As String
Dim sql, stringa As String
Dim MyRS As Result
Dim i As Integer
sql = "SELECT clienti.cognome, clienti.idcliente, clienti.nome, preventivi.consegnato, preventivi.accettazione, preventivi.dataconsegna, preventivi.idpreventivo, preventivi.consegna, preventivi.giornilavoro, preventivi.descrizionelavoro " &
"FROM preventivi " &
"INNER JOIN clienti on preventivi.idcliente=clienti.idcliente " &
"WHERE preventivi.idpreventivo ='" & idprev & "';"
MyRS = Avvio.$myconn.Exec(sql)
If MyRS.Available = True Then
stringa = MyRS!cognome & " " &
MyRS!nome & " " &
MyRS!descrizionelavoro
Return stringa
Else
Return ""
Endif
End
Private Sub caricaconsegne(mdata As Date) As Boolean
Dim sql As String
Dim MyRS3 As Result
Dim i As Integer
sql = "SELECT clienti.cognome, clienti.idcliente, preventivi.consegnato, preventivi.accettazione, preventivi.dataconsegna, preventivi.idpreventivo, preventivi.consegna, preventivi.giornilavoro, preventivi.descrizione " &
"FROM preventivi " &
"INNER JOIN clienti on preventivi.idcliente=clienti.idcliente " &
"WHERE preventivi.consegna='-1' AND preventivi.accettazione='-1' AND preventivi.consegnato='0' AND dataconsegna ='" & Format(mdata, "yyyy-mm-dd") & "';"
consDay.Clear
MyRS3 = Avvio.$myconn.Exec(sql)
If MyRS3.Available = True Then
i = 0
For Each MyRS3
consDay.Add(MyRS3!idpreventivo)
Inc i
Next
Return True
Endif
End
Public Sub GridView1_DblClick()
If GridView1[GridView1.Row, 2].Text <> "" Then FConsegna.Run(conscaricate[GridView1.Row])
End
Public Sub GridView1_click()
oldrow = GridView1.Row
End
Public Sub GridView1_Drag()
' oldrow = GridView1.RowAt(Drag.y)
End
Public Sub GridView1_Drop()
newrow = GridView1.RowAt(Drag.y)
spostaconsegna()
End
Public Sub GridView1_MouseDrag()
GridView1.Drag("")
End
Private Sub spostaconsegna()
Dim MyRS As Result
MyRS = Avvio.$myconn.Edit("preventivi", "idpreventivo=" & conscaricate[oldrow])
MyRS!dataconsegna = CDate(datecaricate[newrow])
MyRS.Update ' aggiorno
Avvio.$myconn.Commit
Refresh()
End
Public Sub BtRefresh_Click()
Refresh()
End