Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Controllo dati
sabato 15 giugno 2013 - 07.38
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
Access (.mdb)
sergranero
Profilo
| Junior Member
100
messaggi | Data Invio:
sab 15 giu 2013 - 07:38
Ciao a tutti
Avrei bisogno di un vostro aiuto.
Ho un database con una colonna “Numero Autodata” contenente delle cifre che possono essere ripetute in più record ed una colonna “Rif” contenente un numero che dovrebbe variare progressivamente in funzione se il numero presente in “Numero Autodata” è sempre lo stesso o varia.
Vi faccio un esempio:
“Numero Autodata” 2515 à “Rif” 001_01
“Numero Autodata” 2515 à “Rif” 001_02
“Numero Autodata” 2718 à “Rif” 002_01
Mi servirebbe poi che ogni qualvolta che varia il numero “rif” nella colonna “Rif giorno”, venga riportato le prime 3 cifre del numero (001…002) con il giorno della settimana ( dal lunedì al venerdì)
Segue un esempio
“Numero Autodata” 2515 à “Rif” 001_01 à “Rif giorno” 001_lunedì
“Numero Autodata” 2515 à “Rif” 001_02 à “Rif giorno” 001_lunedì
“Numero Autodata” 2718 à “Rif” 002_01 à “Rif giorno” 002_martedì
Spero di essere stato chiaro.
Vi ringrazio
Ciao
renarig
Profilo
| Expert
517
messaggi | Data Invio:
sab 15 giu 2013 - 20:48
>“Numero Autodata” 2515 à “Rif” 001_01 à “Rif giorno” 001_lunedì
>“Numero Autodata” 2515 à “Rif” 001_02 à “Rif giorno” 001_lunedì
>“Numero Autodata” 2718 à “Rif” 002_01 à “Rif giorno” 002_martedì
Vediamo prima se ho capito tutto: ( dimmi dove sbaglio )
Hai il campo “Numero Autodata” con dentro 2 valori:
-- un progressivo che ammette duplicati ( 2515, 2515, 2517 eccetera ) (Chiamiamolo NAPr)
-- un carattere costante ( à ) di cui non capisco il significato (Chiamiamolo NACo)
Poi vuoi calcolare “Rif” che contiene 2 contatori
-- (001, 001, 002 ) che conta RAGGRUPPATI gli NAPr ( Chiamiamolo RIC1 )
-- ( 01, 02, 01) cha conta all'interno dei singoli gruppi di NAPr i record (Chiamiamolo RIC2)
Poi vuoi calcolare ancora “Rif giorno” che contiene altri 2 valori
-- (001, 001, 002 ) che assomiglia moltissimo a RIC1 ( chiamiamolo RGC1 )
-- ( lunedi, lunedi, martedi ) che sembrano i giorni della settimana ( chiamiamolo RGC2 )
alcune domande:
-- esiste un legame in NAPr fra il numero 2515 e una data del calendario ??
------ direi di si perche alla fine va tradotto in un giorno della settimana
------ quale è il legame ??
-- NACo è sempre costante ??
-- RIC2 varia da 01 a 07 oppure da 01 a n ??
------ Direi il 2° caso ma non sono sicuro
-- RGC1 è effettivamente la stessa cosa di RIC1 ???
----- se si perche lo duplichi ??
-- RGC2 sembrerebbe poter assumere solo 7 valori
------ da quale data prende il giorno della settimana ?
Facci sapere
.
sergranero
Profilo
| Junior Member
100
messaggi | Data Invio:
dom 16 giu 2013 - 07:50
Ciao, ti risp ai vari punti:
Hai il campo “Numero Autodata” con dentro 2 valori:
-- un progressivo che ammette duplicati ( 2515, 2515, 2517 eccetera ) (Chiamiamolo NAPr)
-- un carattere costante ( à ) di cui non capisco il significato (Chiamiamolo NACo)
Il "NAPr" ammette duplicati e può essere composto da 4 o 5 cifre. Il valore NACo non esiste..... volevo scrivere la preposizione semplice "a" e ho sbagliato mettendo l'accento. SCUSA.......
Poi vuoi calcolare “Rif” che contiene 2 contatori
-- (001, 001, 002 ) che conta RAGGRUPPATI gli NAPr ( Chiamiamolo RIC1 )
-- ( 01, 02, 01) cha conta all'interno dei singoli gruppi di NAPr i record (Chiamiamolo RIC2)
Esatto
....purtroppo la cosa s'è complicata... prima dei numeri NAPr sono state aggiunte 2 lettere che corrispondono a delle iniziali. In pratica la numerazione riparte da 001 ogniqualvolta che cambia la sigla. Vi faccio un esempio per essere più chiaro: si potrebbe trovare AU001_01....AU001_02....AU002_01.....AU002_02_AU002_03....CI001_01....CI001_02... poi AU003_01 etc etc.
Poi vuoi calcolare ancora “Rif giorno” che contiene altri 2 valori
-- (001, 001, 002 ) che assomiglia moltissimo a RIC1 ( chiamiamolo RGC1 )
-- ( lunedi, lunedi, martedi ) che sembrano i giorni della settimana ( chiamiamolo RGC2 )
Esatto.... in pratica i RIC1 + RIC2 rappresentano dei numeri associati a dei disegni. il RIC2 significa che il disegno è lo stesso con delle varianti e dev'essere associtato allo stesso giorno. Ad es. 001_01 e 001_02 dovrebbe avere come valore sempre il 001_lunedì. Ho messo 001_lunedì come es. In effetti trattandosi di una programmazione, mi sarebbe utile che lui partisse da lunedì e andasse fino a venerdì per poi ripartire il conto da lunedì e così via
alcune domande:
-- esiste un legame in NAPr fra il numero 2515 e una data del calendario ??
------ direi di si perche alla fine va tradotto in un giorno della settimana
------ quale è il legame ??
In pratica il passaggio sarebbe questo: se ipotizziamo che il 2515 corrisponde a 001_01 ed è inserito nel primo record del database, dovrebbe comparire la scritta 001_lunedì. Diciamo che non conta l'ordine crescente del NAPr bensì quello del RIC1
Per spiegarmi meglio ti faccio un altro esempio. Nella tabella potrebbe esserci scritto 2515 --> 001_01 --> 001_lunedì e nel secondo record 1800 -- 002_01 --> 002_martedì
-- NACo è sempre costante ??
come ti dicevo prima è un mio errore...
-- RIC2 varia da 01 a 07 oppure da 01 a n ??
da 01 a n ma dev'essere sempre abbinato allo stesso giorno se non varia il RIC1 ( 001_01... 001_n devono essere sempre associati allo stesso giorno della settimana )
------ Direi il 2° caso ma non sono sicuro
-- RGC1 è effettivamente la stessa cosa di RIC1 ??? Sì è la stessa cosa
----- se si perche lo duplichi ?? Perchè si riferiscono allo stesso disegno ma variano solamente dei dati identificativi. In pratica è la stessa scheda duplicata con il nome del modello diverso e quindi è una scheda diversa consegata lo stesso giorno
-- RGC2 sembrerebbe poter assumere solo 7 valori No ne assume solamente 5 ( lunedì, martedì, mercoledì,giovedì,venerdì)
------ da quale data prende il giorno della settimana ? Non ho capito la domanda...
Ciao e scusa la poca chiarezza nella mia richiesta
Facci sapere
.
dinoxet
Profilo
| Senior Member
484
messaggi | Data Invio:
lun 17 giu 2013 - 08:03
Salve perchè non ci posti un db access di esempio.?
con quello che hai e quello che vuoi ottenere.?
DINOXET
__________________________________________
impossible is only a word
sergranero
Profilo
| Junior Member
100
messaggi | Data Invio:
lun 17 giu 2013 - 08:44
1876_Esempio.zip
Grazie
1000
Ciao, ho trovato su internte questo codice Ve lo riporto così può servire a qualcuno
Ciao
Dim db As Database
Dim rstBrand As Recordset
Dim rstModel As Recordset
Dim rstVersion As Recordset
Dim sSQL As String
Dim sBrand As String
Dim sModel As String
Dim sVersion As String
Dim sUK As String
Dim iMax As Integer
Dim iVersion As Integer
Set db = CurrentDb
sSQL = "SELECT Brand FROM tblTest GROUP BY Brand ORDER BY Brand"
Set rstBrand = db.OpenRecordset(sSQL)
If rstBrand.RecordCount > 0 Then
Do While rstBrand.EOF <> True
sBrand = rstBrand.Fields("Brand")
Debug.Print sBrand
sSQL = "SELECT Model FROM tblTest WHERE ((Brand) = '" & sBrand & "' AND (UK) Is Null) GROUP BY Model ORDER BY Model"
Set rstModel = db.OpenRecordset(sSQL)
If rstModel.RecordCount > 0 Then
'determines current maximum integer assigned to this brand/model
If DCount("[UK]", "tblTest", "[Brand] = '" & sBrand & "' AND [Model] = '" & rstModel.Fields("Model") & "'") = 0 Then
iMax = 1
Else
iMax = CInt(Mid(DMax("UK", "tblTest", "[Brand] = '" & sBrand & "' AND [Model] = '" & rstModel.Fields("Model") & "'"), 3, 4)) + 1
End If
Do While rstModel.EOF <> True
sModel = rstModel.Fields("Model")
Debug.Print " " & sModel
sSQL = "SELECT Version, UK FROM tblTest WHERE ((Brand) = '" & sBrand & "' AND (Model) = '" & sModel & "' AND (UK) Is Null)"
Set rstVersion = db.OpenRecordset(sSQL)
If rstVersion.RecordCount <> 0 Then
'determines current maximum integer assigned to this version
If DCount("[UK]", "tblTest", "[Brand] = '" & sBrand & "' AND [Model] = '" & sModel & "'") = 0 Then
iVersion = 1
Else
iVersion = CInt(Right(DMax("UK", "tblTest", "[Brand] = '" & sBrand & "' AND [Model] = '" & sModel & "'"), 2)) + 1
End If
Do While rstVersion.EOF <> True
sVersion = rstVersion.Fields("Version")
Debug.Print " " & sVersion
sUK = UCase(Left(sBrand, 2)) & Right("0000" & iMax, 4) & "_" & Right("00" & iVersion, 2)
rstVersion.Edit
rstVersion!UK = sUK
rstVersion.Update
iVersion = iVersion + 1
Debug.Print " " & sUK
rstVersion.MoveNext
Loop
End If
rstVersion.Close
iMax = iMax + 1
rstModel.MoveNext
Loop
End If
rstModel.Close
rstBrand.MoveNext
Loop
End If
rstBrand.Close
Set db = Nothing
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !