Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Could not update; currently locked.

[es] :: Access :: Could not update; currently locked.

[ Pregleda: 1863 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Neznalica_sa_ugla
split

Član broj: 83282
Poruke: 390
*.adsl.net.t-com.hr.



Profil

icon Could not update; currently locked.07.08.2008. u 01:04 - pre 192 meseci
Bicu iskren , Access nisam nikada volio.Al kako sam htio da moja aplikacija koristi SQL, mySQl, Access , prisiljen sam na njega .I cinimi se da ga s pravom nikada nisam cijenio .Naime ponekada , ne mogu nikako otkriti pravilo izbaci mi grešku "Could not update; currently locked. " ili ne prijavi greški ali tablicu ne napravi << Update <<
Ovdje je nezgodno da stavim kod jer je dosta metoda u dll , ili u drugim klasama pa cu staviti samo dio koda :
Code:

      if (kpi.tip == tip_baza.myS || kpi.tip == tip_baza.Acc)
                        {
                           kom_upis_kpi_p.CommandText = "Update knjtro set Datum ='" + ClassLibrary1.Class1.format_datum
                                (Dokument.dDatum_dokumenta, kpi.stip) + "' " + suvijet;
                        }

                 kom_upis_kpi_p.ExecuteNonQuery();

  

Cudno je sto pola stavki upise korektno a pola jednostavno ignorira. Mozda sam napisao premalo , ali mozda ce to biti nekome dovoljno , barem za neku ideju. mMenjao sam konekcije, komande ... , radi neko vreme a onda ista stvar .
Hvala
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2832



+45 Profil

icon Re: Could not update; currently locked.07.08.2008. u 06:07 - pre 192 meseci
Greška koju napiše je da ne može da ažurira jer je tekući zapis zaključan. Mogućnosti su različite. Od nespretnog i mislim suvišnog zaključavanja u kodu do korišćenja izvora ili cilja ažuriranja od strane druge mašine u mreži.

Tačno je , da je malo podataka za lociranje greške. Trebalo bi u VBA kodu koristiti Debugging okruženje za njeno otkrivanje.

U temi "Brzo učenje Acccess-a" zakačio sam fajl "VBA Debugging okolina.zip". To je prevod sa sajta: http://www.techonthenet.com/access/tutorials/vbadebug/debug01.php

Nadam se da će ti ova metoda pomoći da otkriješ grešku i da ćeš zavoleti Access.


 
Odgovor na temu

Neznalica_sa_ugla
split

Član broj: 83282
Poruke: 390
*.adsl.net.t-com.hr.



Profil

icon Re: Could not update; currently locked.07.08.2008. u 12:21 - pre 192 meseci
Ja namijerno ne zakljucavam , niti tablicu niti zapis , ono sto sama baza radi automatski , onda bi trebala i otkljucati zapis automatski .
Druge pristupa nema bazi ! Mislio sam da mi negdje u kodu ostala neka veza ,ali ne sve sam prosao postoji samo aktivna jedna veza , za tu komandu . MEni se ovo dogadja u While petlji , gdje pola datuma upise a pola nece , provijereno datumi su ok , jednostavno nasumice (bez ikakva pravila) neke upise ,neke ne upise .
jos kakva ideja
da) probao sam sa Jet OLEDB:Database Locking Mode=1" ; //Jet OLEDB:Locking Granularity=1";
ali ni to ne pomaze
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
79.101.162.*



+79 Profil

icon Re: Could not update; currently locked.07.08.2008. u 12:43 - pre 192 meseci
Ako ne volis Access, nemoj ga ni koristiti za front end. Ako moras za back end, eto ti ga pa probaj. Zasto? Tvoje prethodno iskustvo je isuvise programersko i ne zelis da se toga oslobodis. kao rezultat, pristup ti je suvise komplikovan, sto dovodi do gresaka i frustracije. Kakve bre klase i metodi i bakraci.

Da ne mislis da je sad problem u tome sto je Access glup a ti prepametan, moramda ti ukazem i na greske koje si napravio:

CommandText = "Update knjtro set Datum ='" + ClassLibrary1.Class1.format_datum
(Dokument.dDatum_dokumenta, kpi.stip) + "' " + suvijet

Command text. kad se izracuna, vratice ti ovakav string:

Update knjtro set Datum ='12/08/2008' WHERE x=2

Pretpostavljam da si suvijet napravio kako treba, kao " WHERE <neki izraz> "
Gde je greska? Datum ne ide izmedju apostrofa, nego izmedju # pa tvoj izraz treba da glasi nesto kao:

Update knjtro set Datum =#12/08/2008# WHERE x=2

Ovo ce vec da se izvrsi u nekoj Execute komandi, jer je sintaksno tacno. Medjutim, sta predstavlja #12/08/2008# ? 12 August 2008? Access to razume kao 8 Decembar 2008. Zasto? Zato sto su Access pisali amerikanci i interno Access radi sa americkim formatom datuma. Treba ti dakle funkcija koja ce datum da pretvori u americki format. Moze i metod ako bas hoces, funkcije su staromodne. Imas takvu funkciju na ovom forumu ili nekom od Access sajtova koje opet mozes naci na ovom forumu. ili kucaj u Google "Allen Browne Access" i eto te gde treba.

Zasto ti zakljucava ono sto nisi zakljucao u kodu? Moze svasta da bude, a najverovatnije imas bound formu (mozda nisi ni svestan da je forma bound), pa otvoris rekord kroz formu a istovremeno aktiviras kod koji treba taj isti rekord da izmeni.

Access je relaciona baza podataka a ne programski jezik. VB i C# su programski jezici. ADO nije Accesov prirodni nacin za rad, mada moze. DAO je mnogo jednostavniji, ali treba dobro poznavati Accesov object model.

Ne bi bilo lose da posle izracunavanja CommandText sa debug.print ispises text da visi sta si dobio, pa probas da izvrsis taj izraz u query SQL prozoru, tek da sisiguran da si ga dobro sastavio. Mozda dobri ne-Access programeri ne proveravaju kod u debug rezimu i ne pis kod za obradu gresaka jer imaju dobre alate. Access je prilicno primitivan i zahteva d aprogramer nesto zna i da proverava svaki korak. I da ima sto jednostavniji pristup resavanju problema.

Cuo si za zidarevu teoremu: "the best code is no code at all"

:-)



 
Odgovor na temu

Neznalica_sa_ugla
split

Član broj: 83282
Poruke: 390
*.adsl.net.t-com.hr.



Profil

icon Re: Could not update; currently locked.07.08.2008. u 14:25 - pre 192 meseci
Zidar ..

Pogledao sam sto si napisao i pažljivo proučio ,mada se mi ponekada ne slažemo , tvoje primijedbe znaju biti korisne ( ako si i ponekada , malo zajedljive , nema ljutnje bistra misao i oštar jezik). Ali mi se cini da nisi pažljivo prociatao gore napisano NAIME: onako kako stoji sada u kodu ( uvijeti su C# , platvorma net , baze SQL, mySQL , Access ) (baze su samo BAZE , ne koristiti nikakve forme iz baze sql , mysql to nebi podrzale)
U petnji while citam iz jedne tablice
Code:

kom_sinteza.CommandText = "select id_izvoda,sifra_partnera,duguje, potrazuje,uzt,konto,sifra_partner,naziv_partner from izvod_stavke,partner where ( godina = '" + Dokument.strKnjig_Godina + "'  and  izvod_stavke.sifra_partnera=partner.sifra_partner )";
                oDR_sinteza = kom_sinteza.ExecuteReader();

                while (oDR_sinteza.Read())
                {
....................... 

 


citam vrijednosti
Code:

 vkonto = oDR_sinteza["konto"].ToString();
// samo  primijer // 


//citam  datum //
 Dokument.dDatum_dokumenta = Convert.ToDateTime(oDR_datum["datum"]);



Sada ovaj datum update u drugu tablicu

Code:


              if ((kpi.tip == tip_baza.SQL))
                        {
                            param.Value = Dokument.dDatum_dokumenta;
                            kom_upis_kpi_p.CommandText = "Update knjtro set datum =@datum_up " + suvijet;
                        }
                     
                      
                        if (kpi.tip == tip_baza.myS )
                        {
                         
                           kom_upis_kpi_p.CommandText = "Update knjtro set datum ='" + ClassLibrary1.Class1.format_datum(Dokument.dDatum_dokumenta, kpi.stip) + "' " + suvijet;
                    
                        }
                        if (kpi.tip == tip_baza.Acc)
                        {
                           // kom_upis_kpi_p.CommandText = "Update knjtro set datum ='" + Dokument.dDatum_dokumenta.ToString() + "' " + suvijet;
                            kom_upis_kpi_p.CommandText = "Update knjtro set Datum ='" + ClassLibrary1.Class1.format_datum(Dokument.dDatum_dokumenta, kpi.stip) +"' " +   suvijet;
                            kpi.Upis_info_log(kom_upis_kpi_p.CommandText);
                        } 
                   

                         // try
                       //  {
                          kom_upis_kpi_p.ExecuteNonQuery();
                        // }
                        /*
                          catch
                          {
                              kpi.Upis_error_log("Ne moze upisati : " + kom_upis_kpi_p.CommandText);
                              MessageBox.Show(kom_upis_kpi_p.CommandText+ " " +kpi.tip.ToString());
                          }
                       */




vidi se da sam iskljucio try blok da ako ima gresku da prijavi , ali PROGRAM NE PRIJAVI GRESKU I UPISE SAMO PONEKE (NEMA PRAVILA) DATUME .
naravno SQL i mySQL , rade ok .

takvu metodu koja vraca tip zapisa imama i vraca ok format





Code:


  public static string format_datum(DateTime datum, string tip)
        {
            string god = datum.Year.ToString();
            string mj = "00" + datum.Month.ToString();

            mj = mj.Substring(mj.Length - 2, 2);

            string dan = "00" + datum.Day.ToString();
            dan = dan.Substring(dan.Length - 2, 2);


            string dat = null;
            if (tip == "myS")
            {
                dat = god + "-" + mj + "-" + dan;

            }
            if (tip == "SQL")
            {
                dat = dan + "." + mj + "." + god;
            }
            if (tip == "Acc")
            {
                dat = mj + "." + dan + "." + god;
                // dat="#"+mj + "." + dan + "." + god +"#";    //    puno  svakakvih  pokusaja  
                //dat = dan + "." + mj + "." + god;
                //dat = dan + "//" + mj + "//" + god;

            }

            return dat;


        }




E ne znam sta bi moglo biti ....

 
Odgovor na temu

Neznalica_sa_ugla
split

Član broj: 83282
Poruke: 390
*.adsl.net.t-com.hr.



Profil

icon Re: Could not update; currently locked.07.08.2008. u 14:39 - pre 192 meseci
e ovo zaboravih , evo kako to izgleda ;
Update knjtro set Datum ='07.10.2008' where (redni_broj= '0001' and godina= '2008') ;
Update knjtro set Datum ='07.25.2008' where (redni_broj= '0002' and godina= '2008') ;
Update knjtro set Datum ='08.06.2008' where (redni_broj= '0003' and godina= '2008') ;
Update knjtro set Datum ='07.30.2008' where (redni_broj= '0004' and godina= '2008') ;
Update knjtro set Datum ='07.10.2008' where (redni_broj= '0013' and godina= '2008') ;
Update knjtro set Datum ='07.25.2008' where (redni_broj= '0014' and godina= '2008') ;
Update knjtro set Datum ='08.06.2008' where (redni_broj= '0015' and godina= '2008') ;
Update knjtro set Datum ='07.30.2008' where (redni_broj= '0016' and godina= '2008') ;

prodje obicno 4-5 datuma napominjem nasumice ne uvek isti ostali se ne updat-aju
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
77.46.236.*



+79 Profil

icon Re: Could not update; currently locked.07.08.2008. u 21:52 - pre 192 meseci
Ej, no hard feelings :-)

Ovo pokusavam da ti kazem:

Citat:

Update knjtro set Datum ='07.10.2008' where (redni_broj= '0001' and godina= '2008')

nije dobra sintaksa za Access kverije. Mora da pise ovako:

Code:

Update knjtro set Datum =#07.10.2008# where (redni_broj= '0001' and godina= '2008') 


Naravno da Try/Catch nece da javi gresku, nema greske u programiranju. Greska je u sastavljanju stringa koji saljes na egzekuciju. I nazalost, Access pokusa da i pored greske progura naredbu i ne uspe svaki put. Zasto ti C# ne javi gresku, to jest da zeljeeni UPDATE kveri nije prosao ili ima gresku, to ne znam Jednostavno, takav je Access, abogami i C#. A za to je kriv Bil Gates, ne ja ili ti. Naredba kom_upis_kpi_p.ExecuteNonQuery() ne bi smela da prodje ni za jednu instancu jer saljes pogresan SQL izkaz Accessu. To sto poneke prodju samo te zbunjuje i muti vodu.

I pokusavam da ti skrenem paznju na to kako Access tumaci datum. '07.10.2008' ce se ucitati kao 7. Oktobar umesto kao 10. Juli. Tu gresku ti ni jedan program nece prijaviti. SQL Sintaksa koja vazi za MS SQL ili MySQL jednostavno ne vazi u Accessu. Nije isti SQL dijalekt. MS SQL ce da proguta datum '07.10.2008' i ako si dobro podesio server i international settings, znace da si mislio na 10 Juli. Access jednostavno nije toliko pametan kao MS SQL. E sad, ako si stavio da je kolona Datum tekstualnog tipa, onda '07.10.2008' treba da prodje.

A moram da budem malo cinican jer dodjes na Access forum sa C# problemom i onda ti ne valja Access. Problem ti je delom u Accessu (nepravilan SQL izkaz) kao sto vidis, ali delom i u C# (pusta pogresne SQL iskaze da prodju, ali ne uvek)
Mozda na formu gde se bave C# mogu da ti vise pomognu. Ja sam ti rekao sta zbunjuje Access i gde ce imati problem sa formatiranjem datuma. Za drugu boljku - moras kod specijalste za tu vrstu boljke. :-)

Ako pises aplikaciju koja treba da radi u bilo kom od navedenih okruzenja, onda za svako okruzenje moras da pises drugi kod, ako vec gradis SQL izraze u kodu. Ja sam imao priliku da radim na aplikaciji koja je birala izmedju MS SAL, ORACLE< SBASE, DB2 i naravno Accessa. I gradili smo stringove za SQL. I imali smo puno IF ili CASE naredbi, tipa:

IF flag = Access THEN strSQL = " ...... "

IF flag = "ORACLE" THEN strSQL = " "

If Flag = "MSSQL" THE strSQl = "....."

Takva ti je sudbina kad radis na resenju koje ce biti generalno i na vise platformi.

 
Odgovor na temu

Trtko
Koprivnica

Član broj: 69494
Poruke: 695
87.252.134.*



+8 Profil

icon Re: Could not update; currently locked.07.08.2008. u 23:01 - pre 192 meseci
Evo da se i ja malo uključim u razgovor.

Kao prvo , ako su tablice linkovane na bilo koju bazu(iz accesa), Oracle , access , mysql ... itd
svaki sql upit i sintaksa rade normalno , znači greška nije u accessu.
Ovo govorim iz iskustva, jel su mi programi , regalno skladište , povezani na tablicu u oracleu 8i .
No primjetio sam da se glupe greške javljaju kad puknu mrežne veze, od poruka da nema macroa, kojih nikad ne koristim
itd...

Znači provjeri kako ti radi mreža.
Isključi mrežni kabel u toku rada pa vidi što če ti javiti, koju poruku.

Sam access kao baza sigurno dobro radi, stvar je ponekad u logici programa koju ponekad previdimo ili
možda u mrežnoj vezi, koja pukne il zataji na minut dva a poslije opet proradi.


Pozdrav.

 
Odgovor na temu

Neznalica_sa_ugla
split

Član broj: 83282
Poruke: 390
*.adsl.net.t-com.hr.



Profil

icon Re: Could not update; currently locked.25.08.2008. u 19:17 - pre 191 meseci
Ovdje dugujem objašnjenje , možda cak i izvinjenje ..

Naime sve probleme je izazivala komanda kom_upis_kpi_p . u dijeli koda njoj se dodaje parametar a u samom izvršananju u slucaju kada je baza Access taj se parametar ne koristi i u toku rada on se nekoliko puta setuje i brise , sto je dovodilo do pogresnog izvrsavanj i pucanja . Hvala svima na trudu .
 
Odgovor na temu

[es] :: Access :: Could not update; currently locked.

[ Pregleda: 1863 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.