Newsgroup: it.comp.appl.access
Titolo: evitare ripetizioni "-"

ciao a tutti
 
ho questa situazione ...
Do Until rst.EOF
  ValDoc_Fatt = ValDoc_Fatt & rst!Doc_Fatt & "-"
  rst.MoveNext
Loop
 
se p.e. rst!Doc_Fatt non ha alcuni valori
mi ritrovo con
 
200---250-120---160 ecc.
 
ho provato anche cosi
ValDoc_Fatt = ValDoc_Fatt + rst!Doc_Fatt & "-"
oppure
ValDoc_Fatt = ValDoc_Fatt + rst!Doc_Fatt + "-"
 
ma il risultato è uguale
 
 
grazie

Ciao, 
la risposta l'hai data tu stesso, il problema è che ci sono alcuni record con il campo non valorizzato pertanto devi racchiudere l'istruzione di concatenazione all'interno di una if che verifichi questa condizione.
Rimane il fatto che dovrai rimuovere l'ultimo "-" .
Ciao
Mat.


grazie Potone
 
ma anche in questo modo c'e' qualcosa che non va,
forse mi sfugge qualcosa...
 
If Not rst.EOF Then
  rst.MoveFirst
  Do Until rst.EOF
  ValDoc_Fatt = ValDoc_Fatt & IIf(rst!Doc_Fatt = "", "", rst!Doc_Fatt & "-")
  rst.MoveNext
  Loop
 
  ValDoc_Fatt = Left(ValDoc_Fatt, Len(ValDoc_Fatt) - 1)
 
End If
 
perchè se manca il valore non avro' neppure -> "-"
quindi qui avro' errore...
ValDoc_Fatt = Left(ValDoc_Fatt, Len(ValDoc_Fatt) - 1)
perchè manca il trattino da togliere.


al mom ho trovato questa soluzione
anche se non mi convince...
ValDoc_Fatt = ValDoc_Fatt & IIf(rst!Doc_Fatt = "", IIf(ValDoc_Fatt = "", "-", ValDoc_Fatt), rst!Doc_Fatt & "-")

 perchè manca il trattino da togliere.
 
-- 
Ciao
Karl
*********
http://www.AccessDevCon.com
 
Access FAQ: 
http://www.donkarl.com/it
 

 ValDoc_Fatt = ValDoc_Fatt & IIf(rst!Doc_Fatt > "", rst!Doc_Fatt & "-")
 
Ah, l'Iif di VBA...
 
ValDoc_Fatt = ValDoc_Fatt & IIf(rst!Doc_Fatt > "", rst!Doc_Fatt & "-", Null)
 


ciao Karl e grazie
 
allego l'intera funzione che vorrei richiamare nelle query, ma ancora qualcosa non va...
 
Public Function ValDoc(MioCampo As Long) As Variant
 
  Dim rst As DAO.Recordset
  Dim ValDoc_Fatt As String, ValDoc_NA As String
  Dim strSql As String
 
  ValDoc_Fatt = ""
  ValDoc_NA = ""
  strSql = vbNullString
  strSql = strSql & "SELECT "
  strSql = strSql & "IIf(IdTipoDocumento = 1, numeroDoc, '') As Doc_Fatt, "
  strSql = strSql & "IIf(IdTipoDocumento = 2, numeroDoc, '') As Doc_NA "
  strSql = strSql & "FROM TbNumDocFornitori "
  strSql = strSql & "WHERE IdFatturaFo =" & MioCampo & ";"
  Set rst = CurrentDb().OpenRecordset(strSql)
 
  If Not rst.EOF Then
    rst.MoveFirst
    Do Until rst.EOF
      ValDoc_Fatt = ValDoc_Fatt & IIf(rst!Doc_Fatt > "", rst!Doc_Fatt & "-", Null)
      ValDoc_NA = ValDoc_NA & IIf(rst!Doc_NA > "", rst!Doc_NA & "-", Null)
      rst.MoveNext
    Loop
    If Right(ValDoc_Fatt, 1) = "-" Then
      ValDoc_Fatt = Left(ValDoc_Fatt, Len(ValDoc_Fatt) - 1)
    ElseIf Right(ValDoc_NA, 1) = "-" Then
      ValDoc_NA = Left(ValDoc_NA, Len(ValDoc_NA) - 1)
 
    End If
 
  End If
 
  Set rst = Nothing
  ValDoc = ValDoc_Fatt & "|" & ValDoc_NA
End Function
 
grazie ancora


con questa modifica funziona
 
If Right(ValDoc_Fatt, 1) = "-" Then _
  ValDoc_Fatt = Left(ValDoc_Fatt, Len(ValDoc_Fatt) - 1)
If Right(ValDoc_NA, 1) = "-" Then _


   ValDoc_NA = Left(ValDoc_NA, Len(ValDoc_NA) - 1)
 
tanto per dire qualcosa, in attesa dell'esito di Cardiff ...
 
si può testare la presenza del doppio trattino e sostituirlo
APPENA la stringa prende forma
if instr(1,ValDoc_Fatt,"--") >0 then replace(ValDoc_Fatt,"--","-")
così la serie dei trattini non si allunga mai 
(e io diminuisco l'attesa ...)