Newsgroup: it.comp.appl.access
Titolo: query da un'unica tb

ciao a tutti
ho una tabella con questi valori
 
tabella
id  cli  prodotto1  idBan  IdConf   IdUM   
1            11       1      54       1  
2            21       1      70       1
3            76       1       4       1
4            10       2       4       1
5            25       4       4       1
6            70       5       7       1
7   50                2               2
 
e vorrei con una query arrivare a quest'altro risultato
id  cli  prodotto1  idBan  IdConf   IdUM   
1            11       2      54       2  
2            21       2      70       2
3            76       2       4       2
4            10       2       4       2
5            25       2       4       2
6            70       2       7       2
 
 
grazie

La logica segreta quale sarebbe..? 
 
@Alex

 @Alex
 
ciao Alex e grazie
 
vorrei migliorare questa sub che a suo tempo mi avevi detto che non andava bene:
 
1-Dim rst As DAO.Recordset
  Dim strSql As String
  Dim X As Variant, x1 As Variant, x2 As Variant
 
  strSql = "SELECT * FROM TbImpostazioni" _
    & " WHERE IdProdotto1 = " & Frm!CboProdotto.Value _
    & " And IdCliente1 = " & cliCriterio()
  Set rst = CurrentDb().OpenRecordset(strSql)
 
  If Not rst.EOF Then
    X = rst!IdBancale
    x1 = rst!IdConfezione
    x2 = rst!IdUnitàMisura
    GoTo Fine
 
  End If
 
  strSql = "SELECT * FROM TbImpostazioni WHERE IdProdotto = " & Frm!CboProdotto.Value
  Set rst = CurrentDb().OpenRecordset(strSql)
 
  If Not rst.EOF Then
    X = rst!IdBancale
    x1 = rst!IdConfezione
    x2 = rst!IdUnitàMisura
 
  End If
 
  strSql = "SELECT * FROM TbImpostazioni WHERE IdCliente = " & cliCriterio()
  Set rst = CurrentDb().OpenRecordset(strSql)
 
  If Not rst.EOF Then
    X = rst!IdBancale
    x2 = rst!IdUnitàMisura
 
  End If
 
Fine:
  Frm!CboBancale.Value = IIf(X = "", 1, X)
  Frm!CboUnitàMisura.Value = IIf(x2 = "", 1, x2) 
  Frm!CboConfezione.Value = IIf(x1 = "", Frm!CboConfezione.Value, x1)
 
  Set rst = Nothing
_______________
 
con quest'altra che ancora non mi funziona:
 
2-Dim rst As DAO.Recordset
  Dim strSql As String
  Dim Opzione As Integer
  Dim X As String
  Dim x1 As Variant, x2 As Variant, x3 As Variant
 
  Opzione = 1
 
  Do
  strSql = vbNullString
  strSql = strSql & "SELECT * FROM TbImpostazioni "
  Select Case Opzione
    Case Is = 1
    strSql = strSql & "WHERE IdProdotto1 = " & Frm!CboProdotto.Value
    strSql = strSql & "And IdCliente1 = " & cliCriterio()
    Case Is = 2
    strSql = strSql & "WHERE IdCliente = " & cliCriterio()
    Case Is = 3
    strSql = strSql & "WHERE IdProdotto = " & Frm!CboProdotto.Value
 
  End Select
 
  Set rst = CurrentDb().OpenRecordset(strSql)
 
  If rst.EOF And Opzione = 1 Then
    Opzione = 2
  ElseIf Not rst.EOF And Opzione = 2 Then
    x1 = rst!IdBancale
    x3 = rst!IdUnitàMisura
    Opzione = 3
  Else
    X = "Stop"
  End If
 
  Loop Until X = "Stop"
 
  If Not rst.EOF Then
    x1 = x1
    x2 = rst!IdConfezione
    x3 = x3
 
  End If
 
  Frm!CboBancale.Value = IIf(x1 = "", 1, x1)
  Frm!CboUnitàMisura.Value = IIf(x3 = "", 1, x3)
  Frm!CboConfezione.Value = IIf(x2 = "", Frm!CboConfezione.Value, x2)
 
  Set rst = Nothing
 

Franco... facciamo un pezzetto alla volta...
La domanda iniziale vedeva una tabella iniziale ed una finale... che vorresti ottenere in qualche modo...
Non capiamo la logica che porta i dati al valore assunto nella seconda ipotesi.
Ora se posti tutto quel codice... di cui sono terrorizzato... io continuo a non capire...
 
@ALEX


ciao Alex
i due codici postati, dovrebbero dare lo stesso risultato.
Ho creato il secondo perchè volevo evitare di aprire piu' volte il recordset 
per la medesima tb.
Ma, visto il risultato negativo (con il secondo codice), volevo provare, se riuscivo, modificando la query.