Apro una nuvoa discussione in quanto il problema dell'esportazione/conflitto è, se vogliamo, risolto.

Ecco il mio progetto:

Ricapitoliamo:

codice:
Option Explicit

Dim Conn As ADODB.Connection
Dim StringaConn As String
Dim SQL As String
Dim Rs As ADODB.Recordset
Dim Sub_Rs As ADODB.Recordset
codice:
Private Sub Form_Load() con questo popolo la DataGrid con TUTTI i RECORD (ma solo alcuni campi)

Set Conn = New ADODB.Connection
Set Rs = New ADODB.Recordset
StringaConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\database.mdb;Persist Security Info=False"
Conn.Open StringaConn

lbl_username.Caption = Username

SQL = "SELECT ID, Societa, Nome, Cognome, Telefono_1, Cellulare, Mail, Notes FROM Agenda"
    
With Rs
    .ActiveConnection = Conn
    .CursorLocation = adUseServer
    .CursorType = adOpenKeyset
    .LockType = adLockOptimistic
    .Properties("IRowsetIdentity") = True
    .Open SQL, , , , adCmdText
End With

Set dgr_agenda.DataSource = Rs

dgr_agenda.Columns(0).Width = 500
dgr_agenda.Columns(1).Width = 2000
dgr_agenda.Columns(2).Width = 1500
dgr_agenda.Columns(3).Width = 1500
dgr_agenda.Columns(4).Width = 1500
dgr_agenda.Columns(5).Width = 1500
dgr_agenda.Columns(6).Width = 2000
dgr_agenda.Columns(7).Width = 2500

dgr_agenda.MarqueeStyle = 3

End Sub
codice:
Private Sub cmd_cerca_Click() ora, per esempio, stò modificando i dati contenuti nella DataGrid

Dim Cerca As String
Set Rs = New ADODB.Recordset

Cerca = txt_cerca.Text

SQL = "SELECT ID, Societa, Nome, Cognome, Telefono_1, Cellulare, Mail, Notes FROM Agenda WHERE 1=1"

SQL = SQL & " AND Societa LIKE '%" & Cerca & "%' "
SQL = SQL & " OR Nome LIKE '%" & Cerca & "%' "
SQL = SQL & " OR Cognome LIKE '%" & Cerca & "%' "
SQL = SQL & " OR Telefono_1 LIKE '%" & Cerca & "%' "
SQL = SQL & " OR Cellulare LIKE '%" & Cerca & "%' "
SQL = SQL & " OR Mail LIKE '%" & Cerca & "%' "
SQL = SQL & " OR Notes LIKE '%" & Cerca & "%' "

With Rs
    .ActiveConnection = Conn
    .CursorLocation = adUseServer
    .CursorType = adOpenKeyset
    .LockType = adLockOptimistic
    .Properties("IRowsetIdentity") = True
    .Open SQL, , , , adCmdText
End With

Set dgr_agenda.DataSource = Rs

dgr_agenda.Columns(0).Width = 500
dgr_agenda.Columns(1).Width = 2000
dgr_agenda.Columns(2).Width = 1500
dgr_agenda.Columns(3).Width = 1500
dgr_agenda.Columns(4).Width = 1500
dgr_agenda.Columns(5).Width = 1500
dgr_agenda.Columns(6).Width = 2000
dgr_agenda.Columns(7).Width = 2500

dgr_agenda.MarqueeStyle = 3

MsgBox "Ricerca effettuata.", vbOKOnly, "Avviso"

End Sub
codice:
Private Sub dgr_agenda_dblClick() con questo, infine, dovrei passare la variabile alla form_dettagli

ID_Agenda = dgr_agenda.Columns("ID").Value
frm_agenda_dettaglio.Show

End Sub
Nella form dei dettagli:

codice:
Private Sub cmd_esci_Click()

ID_Agenda = "" 'questa messa o meno non cambia nulla..
frm_agenda_dettaglio.Hide

End Sub

Private Sub Form_Unload(Cancel As Integer)

Set Rs = Nothing
Set Conn = Nothing

End Sub
il problema è che prende sempre lo stesso ID, ora prende il primo su cui clicco

Perchè fa così?