am folosit 2 tabele:
Table1 contine datele originale la care am adaugat eu o coloana
PROGRAME_TEMP care o folosesc pt calcule
Table2 contine rezultatele la care am adaugat o col
Program care o folosesc pt calcule
(dupa ce rulezi query-urile o sa vezi exact la ce se folosesc coloanele adaugate)
si apoi am rulat query-urile:
1. aduc in col
PROGRAME_TEMP ce ai tu in programe si pun "
;" (punct si virgula) la sfarsit (ca sa avem un format de genul
"C1:2;" pt fiecare set de program) - tb sa ai grija ca sirul original sa nu aibe deja "
;" la sfarsit ca in cazul "
20 BB A1:10;" pt ca atunci se termina cu 2 "
;" si nu e bine (eventual fa un
replace in care sa inlocuiesti "
;;" cu "
;" pe toate inregistrarile ca sa fi sigur) - totodata inlocuiesc valorile nulle cu "
:0;"ca sa rezolv si problema celor nulle
UPDATE Table1 SET Table1.PROGRAME_TEMP = IIf(IsNull(Table1!programe)," :0;",Table1!programe+";");aici ar trebui facuta o bucla pt punctele 2 si 3 care sa se opreasca cand nu mai exista inregitrari care sa aibe pe campul
PROGRAME_TEMP valori diferite de ""
2. copiez in tabelul de rezultate un set de inregistrari punand pe campul Program vlori de genul "A1:10" urmand sa le sparg la punctul 4; conditia pusa ma asigura ca nu introduc acele inregistrari goale de care ziceai tu ca s-ar putea sa apara din cauza numarului diferit de programe.
INSERT INTO Table2 ( Program, Tip, Bucati )
SELECT Mid(Table1!PROGRAME_TEMP,1,InStr(1,Table1!PROGRAME_TEMP,";")-1) AS Expr1, Table1.tip, Table1.bucati
FROM Table1
WHERE (((Table1.PROGRAME_TEMP)<>""));
3. sterg de pe campul PROGRAME_TEMP ceea am introdus deja in rezultate la punctul anterior lasand doar ce a ramas de introdus
UPDATE Table1 SET Table1.PROGRAME_TEMP = Mid(Table1!PROGRAME_TEMP,InStr(1,Table1!PROGRAME_TEMP,";")+1)
WHERE (((Table1.PROGRAME_TEMP)<>""));
aici se incheie bucla
4. sparg campul
Program in cele 2 campuri:
Programa si
Bucati_Pe_Programa :)
UPDATE Table2 SET Table2.Programa = Mid(Table2!Program,1,InStr(1,Table2!Program,":")-1), Table2.Bucati_Pe_Programa = Mid(Table2!Program,InStr(1,Table2!Program,":")+1);cam atat, eu nu am reusit alta varianta sa fac chestia asta prin sql fara bucla :(