Newsgroup: it.comp.appl.access
Titolo: Traformare le righe in campi ?

Devo ricavare da questa Tab, una tabella con tre campi dove nel primo rimane
la prima riga, nel secondo ci và la seconda (Andress), nel terzo la terza
(Phone).
Come posso fare ?
Campo1
Alaska Coca-Cola Bottling Co Juneau
Address: 5452 Shaune Dr, Juneau, AK 99801-9539
Phone: 
1.907.780.4474
Coca-Cola Bottling Company
Address: 8046 W Rezanof Dr, Kodiak, AK 99615-6750
Phone: 
1.907.487.4546
Coca-Cola Bottling Co Anchorage
Address: 128 W 1st Ave, Anchorage, AK 99501-1646
Phone: 
1.907.264.0218
CUT
Grazie 1000 per i suggerimenti
--
Ciao Marco S.
http://digilander.iol.it/santimarco

 ha scritto nel messaggio
news:9gqa6f$gk2$1...@pinco.nettuno.it...

Se la tua tabella si chiama Tab ed è composta da un solo campo chiamato
Campo1.
Se la tabella da ottenere si chiama Tab2 ed ha la seguente struttura:
ID                            Contatore e chiave primaria
RagioneSociale        Testo
Indirizzo                   Testo
Telefono                   Testo
Creati una maschera che contiene solamente un pulsante di comando; a fronte
dell'evento "Su clic" del pulsante di comando genera il seguente codice VBA:
Dim db As Database
Dim rsTab As Recordset
Dim rsTab1 As Recordset
Set db = CurrentDb
Set rsTab = db.OpenRecordset("Tab")
Set rsTab1 = db.OpenRecordset("Tab1")
rsTab.MoveFirst
Do Until rsTab.EOF
    rsTab1.AddNew
    rsTab1!RagioneSociale = rsTab!Campo1
    rsTab.MoveNext
    rsTab1!Indirizzo = Mid(rsTab!Campo1, 10, Len(rsTab!Campo1) - 9)
    rsTab.MoveNext
    rsTab1!Telefono = Mid(rsTab!Campo1, 8, Len(rsTab!Campo1) - 7)
    rsTab1.Update
    rsTab.MoveNext
Loop
rsTab.Close
Set rsTab = Nothing
rsTab1.Close
Set rsTab1 = Nothing
A questo punto apri la maschera e pigia il pulsante di comando.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Grazie 1000 Roberto, domani mattina la provo subito poi ti saprò dire.
Per il momento l'ho risolto in questo modo, ma ammetto di non fidarmi molto
del risultato :-))
Dim db As Database, T1 As Recordset, T2 As Recordset, vName As String
Set db = CurrentDb
Set T1 = db.OpenRecordset("US Coca-Cola")
Set T2 = db.OpenRecordset("US Coca-Cola_ok")
T1.MoveFirst
Do Until T1.EOF
  If IsNull(T1!Campo1) Then GoTo ppp_ERR
  vName = Left(T1!Campo1, 5)
  If (vName <> "Addre") And (vName <> "Phone") Then
    T2.AddNew
      T2!Company = T1!Campo1
    T2.Update
  End If
  If (vName = "Addre") Then
  T2.MoveLast
    T2.Edit
      T2!Andress = T1!Campo1
    T2.Update
  End If
  If (vName = "Phone") Then
  T2.MoveLast
    T2.Edit
      T2!Phone = T1!Campo1
    T2.Update
  End If
ppp_ERR:
T1.MoveNext
Loop


 A questo punto apri la maschera e pigia il pulsante di comando.
Non faccio nessuna maschera, lancio direttamente la Function dal modulo.
Funziona, ma ho il problema che certe volte il record Phone non esiste,
quindi dovrebbe lasciare il campo Telefono vuoto.
Mi ero scordato di dirlo ... mia colpa.
La Tab č cosě strutturata:
Campo1:
Alaska
Coca-Cola Bottling Co Juneau
Address: 5452 Shaune Dr, Juneau, AK 99801-9539
Phone: 
1.907.780.4474
Coca-Cola Bottling Company
Address: 8046 W Rezanof Dr, Kodiak, AK 99615-6750
Coca-Cola Bottling Co Anchorage"
Address: 128 W 1st Ave, Anchorage, AK 99501-1646
Phone: 
1.907.264.0218
Coca-Cola Bottling Co Anchorage"
Address: 240 W 1st Ave, Anchorage, AK 99501-1648
Arkansas
Coca-Cola/Dr Pepper Bottling
Address: 205 E 2nd Ave, Pine Bluff, AR 71601-4495
Phone: 
1.501.534.0621
CUT
Ti ringrazio molto Roberto, se hai altri suggerimenti ;-)



[CUT]

Beh, la prossima volta raccontacela tutta e non a puntate. ;-)
Se l'ultimo record di Tab in Campo1 contiene il valore "CUT".
Se un gruppo di record puň essere formato da:
1) due soli record (Ragione sociale + Address:)
2) tre record (due record per la Ragione Sociale + Address:)
3) tre record (Ragione Sociale + Address: + Phone:)
4) quattro record (due record per la Ragione Sociale + Address: + Phone:)
Se, nel caso in cui i dati della ragione sociale siano su due record, la
ragione sociale risultante č costituita dai dati del secondo record piů i
dati del primo record.
Prova ad usare questo codice VBA:
Dim DepRagSoc As Variant
Dim DepInd As Variant
Dim DepTel As Variant
DepRagSoc = Null
DepInd = Null
DepTel = Null
Dim db As Database
Dim rsTab As Recordset
Dim rsTab1 As Recordset
Set db = CurrentDb
Set rsTab = db.OpenRecordset("Tab")
Set rsTab1 = db.OpenRecordset("Tab1")
rsTab.MoveFirst
Do Until rsTab.EOF
If Left(rsTab!Campo1, 8) = "Address:" Then
DepInd = Mid(rsTab!Campo1, 10, Len(rsTab!Campo1) - 9)
Else
If Left(rsTab!Campo1, 6) = "Phone:" Then
DepTel = Mid(rsTab!Campo1, 8, Len(rsTab!Campo1) - 7)
Else
If Not IsNull(DepInd) Then
rsTab1.AddNew
rsTab1!RagioneSociale = DepRagSoc
rsTab1!Indirizzo = DepInd
If Not IsNull(DepTel) Then
rsTab1!Telefono = DepTel
End If
rsTab1.Update
DepRagSoc = Null
DepInd = Null
DepTel = Null
End If
If Left(rsTab!Campo1, 3) <> "CUT" Then
If IsNull(DepRagSoc) Then
DepRagSoc = rsTab!Campo1
Else
DepRagSoc = rsTab!Campo1 & " " & DepRagSoc
End If
End If
End If
End If
rsTab.MoveNext
Loop
rsTab.Close
Set rsTab = Nothing
rsTab1.Close
Set rsTab1 = Nothing
Facci sapere.


 Facci sapere.
Funziona, sei un grande !
Ciao e grazie 1000
Marco S.