Welcome to Sign in | Help
in Search

AJUTOR !!!

Last post 04-23-2008, 12:59 AM by B_gd_n[ ]Sahlean. 72 replies.
Page 4 of 5 (73 items)   < Previous 1 2 3 4 5 Next >
Sort Posts: Previous Next
  •  04-09-2008, 1:32 AM 4594 in reply to 4591

    Re: AJUTOR !!!

    nickk:
     

    Da m-am bucurat degeaba deci la scrierea acesteea din 500 de inregistrari el a facut o infinitate Sad, am incercat sa folosesc un Select Distinct dar e problematic Sad



    sa inteleg ca ti-a scos mai multe inregistrari decat erau in tabel??
  •  04-09-2008, 8:23 AM 4595 in reply to 4594

    Re: AJUTOR !!!

    Gherry:
    nickk:
     

    Da m-am bucurat degeaba deci la scrierea acesteea din 500 de inregistrari el a facut o infinitate Sad, am incercat sa folosesc un Select Distinct dar e problematic Sad



    sa inteleg ca ti-a scos mai multe inregistrari decat erau in tabel??

    Nu, sa marit numarul de inregistrari, dar am gasit cauza avea o legatura infinita cu un alt tabel, sorry....

  •  04-09-2008, 11:51 AM 4596 in reply to 4595

    Re: AJUTOR !!!

    nickk:

    Nu, sa marit numarul de inregistrari, dar am gasit cauza avea o legatura infinita cu un alt tabel, sorry....



    banuiam Smile
  •  04-09-2008, 4:15 PM 4601 in reply to 4595

    Re: AJUTOR !!!

    nickk:
    Gherry:
    nickk:
     

    Da m-am bucurat degeaba deci la scrierea acesteea din 500 de inregistrari el a facut o infinitate Sad, am incercat sa folosesc un Select Distinct dar e problematic Sad



    sa inteleg ca ti-a scos mai multe inregistrari decat erau in tabel??

    Nu, sa marit numarul de inregistrari, dar am gasit cauza avea o legatura infinita cu un alt tabel, sorry....


    Am si eu o mica curiozitate: ce-i aia "legatura infinita" ?
  •  04-09-2008, 4:28 PM 4603 in reply to 4584

    Re: AJUTOR !!!

    MerciCool
  •  04-10-2008, 11:37 AM 4623 in reply to 4601

    Re: AJUTOR !!!

    B_gd_n[ ]Sahlean:
    nickk:
    Gherry:
    nickk:
     

    Da m-am bucurat degeaba deci la scrierea acesteea din 500 de inregistrari el a facut o infinitate Sad, am incercat sa folosesc un Select Distinct dar e problematic Sad



    sa inteleg ca ti-a scos mai multe inregistrari decat erau in tabel??

    Nu, sa marit numarul de inregistrari, dar am gasit cauza avea o legatura infinita cu un alt tabel, sorry....


    Am si eu o mica curiozitate: ce-i aia "legatura infinita" ?

     

    Legatura tip "-------------∞" eu o numesc infinita Big Smile

  •  04-22-2008, 10:19 AM 4700 in reply to 4601

    Re: AJUTOR !!!

    Buna, Merci foarte mult de ajutor sunteti extraordinari,

    Deci am intilnit o problema foarte mare, pe care nu pot sa o rezolv, daca cineva imi ta o ideie va fi bine,

    Deci iata tabelul:

    T1

    Bucati Tip Programe
    100 AA A1:10;A2:60
    20 BB A1:10;
    5 CC C1:2;C2:3
    60 DD A2:10;C2:10;A1:40
    40 EE B1:10;B2:16
    10 WW  
     Este importat dintr-un fisier txt in baza mea access si deci nu pot sa o schimb, trebuie obtinut un astfel de tabel:

    T2

    Progama Tip Bucati_Pe_Programa Bucati
    A1 AA 10 100
    A2 AA 60 100
    A1 BB 10 20
    C1 CC 2 5
    C2 CC 3 5
    A2 DD 10 60
    C2 DD 10 60
    A1 DD 40 60
    B1 EE 10 40
    B2 EE 16 40
      WW 10 0

    Deci campul 'Programe' din T1 are o lungime variabila, poate sa includa shi 100 de programe, plus acest txt care il importez este dinamic, se schimba zilnic asha ca nu poate fi vorba de o linie stabila Sad cine ma poate ajuta da-ti o ideie macar Sad

  •  04-22-2008, 10:44 AM 4702 in reply to 4700

    Re: AJUTOR !!!

    2 intrebari:
        1. scri functia in C sau C#?
        2. poti garanta ca sirul va fi valid de fiecare data? (sau marchezi ca exceptii inainte si le tratezi separat)

  •  04-22-2008, 10:53 AM 4703 in reply to 4702

    Re: AJUTOR !!!

    Gherry:
    2 intrebari:
        1. scri functia in C sau C#?
        2. poti garanta ca sirul va fi valid de fiecare data? (sau marchezi ca exceptii inainte si le tratezi separat)

    Deci functia trebuie scrisa in SQL este pentru MS Access

    Bucati Tip Programe
    100 AA A1:10;A2:60
    20 BB A1:10;
    5 CC C1:2;C2:3
    60 DD A2:10;C2:10;A1:40
    40 EE B1:10;B2:16
    10 WW  

    Deci pentru cimpul 'Bucati' si 'Tip' intodeauna sunt diferite de NULL, iar campul Programe poate sa fie si NULL, Se poate de tratat acest NULL cu un zero 0, de exemplu

  •  04-22-2008, 11:16 AM 4704 in reply to 4703

    Re: AJUTOR !!!

    pai in cazul asta ai o problema pt ca, din cate stiu eu, Access-ul nu poate face bucle si tu ai nevoie de o bucla - sper sa ma insel. Alternativa ar fi sa faci un query care sa scoata tot cate un element din campul coloane si sa il trateze corespunzator pe care sa il apelezi pana cand nu mai sunt inregistrari care sa aibe valori pe acel camp. Daca nu gasesti o varianta de a face bucla si daca crezi ca este acceptabila solutia propusa de mine spune-mi si atunci o sa iti scriu codul. Oricum o sa incerc sa gasesc si o varianta mai buna doar ca dureaza un pic mai mult Smile
  •  04-22-2008, 11:26 AM 4706 in reply to 4623

    Re: AJUTOR !!!

    nickk:
    B_gd_n[ ]Sahlean:
    nickk:
    Gherry:
    nickk:
     

    Da m-am bucurat degeaba deci la scrierea acesteea din 500 de inregistrari el a facut o infinitate Sad, am incercat sa folosesc un Select Distinct dar e problematic Sad



    sa inteleg ca ti-a scos mai multe inregistrari decat erau in tabel??

    Nu, sa marit numarul de inregistrari, dar am gasit cauza avea o legatura infinita cu un alt tabel, sorry....


    Am si eu o mica curiozitate: ce-i aia "legatura infinita" ?

     

    Legatura tip "-------------∞" eu o numesc infinita Big Smile


    1 --- ∞ este o legătură care se poate citi: de la unu la mai multe.
  •  04-22-2008, 11:32 AM 4707 in reply to 4704

    Re: AJUTOR !!!

    Gherry:
    pai in cazul asta ai o problema pt ca, din cate stiu eu, Access-ul nu poate face bucle si tu ai nevoie de o bucla - sper sa ma insel. Alternativa ar fi sa faci un query care sa scoata tot cate un element din campul coloane si sa il trateze corespunzator pe care sa il apelezi pana cand nu mai sunt inregistrari care sa aibe valori pe acel camp. Daca nu gasesti o varianta de a face bucla si daca crezi ca este acceptabila solutia propusa de mine spune-mi si atunci o sa iti scriu codul. Oricum o sa incerc sa gasesc si o varianta mai buna doar ca dureaza un pic mai mult Smile

    Acum sa ne inchipuim ca coloana 'Programe' contine aproximativ 50 de programe iar alta numai 2 deci cimpul care va avea 2 programe va avea la rindul lui inca 48 de pozitii neutilizabile iar la 100000 de inregistrari in tabel eu ce voi avea Sad ???

  •  04-22-2008, 11:56 AM 4708 in reply to 4707

    Re: AJUTOR !!!

    nickk:

    Gherry:
    pai in cazul asta ai o problema pt ca, din cate stiu eu, Access-ul nu poate face bucle si tu ai nevoie de o bucla - sper sa ma insel. Alternativa ar fi sa faci un query care sa scoata tot cate un element din campul coloane si sa il trateze corespunzator pe care sa il apelezi pana cand nu mai sunt inregistrari care sa aibe valori pe acel camp. Daca nu gasesti o varianta de a face bucla si daca crezi ca este acceptabila solutia propusa de mine spune-mi si atunci o sa iti scriu codul. Oricum o sa incerc sa gasesc si o varianta mai buna doar ca dureaza un pic mai mult Smile

    Acum sa ne inchipuim ca coloana 'Programe' contine aproximativ 50 de programe iar alta numai 2 deci cimpul care va avea 2 programe va avea la rindul lui inca 48 de pozitii neutilizabile iar la 100000 de inregistrari in tabel eu ce voi avea Sad ???


    lol
    :) nici nu se pune problema de asa ceva - aia se rezolva foarte simplu cu o conditie deci singura problema e daca te deranjeaza ca tb sa apelezi in mai multe randuri un query (deci sa pui in C o conditie care sa verifice daca e cazul sa mai ruleze query-ul sau nu - o sa iti spun eu pe ce camp si cum arata conditia)
  •  04-22-2008, 12:03 PM 4710 in reply to 4594

    Re: AJUTOR !!!

    O posibilă soluţie:
    Sub ProceduraPestilorPrajiti()
    Dim rs_t1 As Recordset, rs_t2 As Recordset

    Set rs_t1 = CurrentProject.Connection.Execute("SELECT * FROM T1", , adOpenForwardOnly)
    Set rs_t2 = CurrentProject.Connection.Execute("T2", , adOpenDynamic)

    While Not rs_t1.EOF

    If IsNull(rs_t1.Fields("Programe").Value) Then
    rs_t2.AddNew
    rs_t2.Fields("Programa").Value = rs_t1.Fields("Programe").Value
    rs_t2.Fields("Bucati").Value = 0
    '.............................
    rs_t2.Update

    Else
    Dim vPrograme() As String, iIndex As Integer

    vPrograme = Split(Trim(rs_t1.Fields("Programe").Value), ";")
    For iIndex = LBound(vPrograme) To UBound(vPrograme)
    Dim strInfo As String, strPrograma As String, lngBucati As Long

    strInfo = vPrograme(iIndex)
    strPrograma = Mid(strInfo, 1, InStr(strInfo, ":") - 1)
    lngBucati = CLng(Mid(strInfo, InStr(strInfo, ":") + 1, 10000))

    rs_t2.AddNew
    rs_t2.Fields("Programa").Value = strPrograma
    rs_t2.Fields("Bucati").Value = lngBucati
    '.............................
    rs_t2.Update

    Next iIndex
    End If


    rs_t1.MoveNext
    Wend

    rs_t1.Close
    MsgBox "Pestii au fost prajiti !"
    End Sub

  •  04-22-2008, 1:43 PM 4718 in reply to 4707

    Re: AJUTOR !!!

    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 :(
Page 4 of 5 (73 items)   < Previous 1 2 3 4 5 Next >
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems