Qualche informazione sul programma:
ambiente VB6
connessione ODBC (ma ho provato anche OLEDB)
database Access 2000
pc Windows XP
Se servono altre informazioni sono a disposizione
Grazie per l'attenzione
Massimo
Alt: "Accesso Simultaneo" e "database Access" non possono convivere
nella stessa frase senza una negazione.
Il db crea un lock quando viene aperto, tale per cui non � accessibile
da altre postazioni.
La soluzione � quella di passare a db pi� orientati alla multi utenza
come SQL Server (2005/2008) o, nel caso tu voglia lavorare su file
singolo, passare a SQL Server Compact edition o l'ottimo (e leggero!)
SQLite.
Nicola
Grazie per la risposta, ma il nostro programma gira da anni su access
in multiutenza con un unico database...
Il lock di cui parli serve ad impedire rinomina e cancellazione del
file, ma non l'accesso ai dati.
Il problema sembra sorgere solo nel caso di elaborazioni molto pesanti
di scrittura contemporanee (infatti fino ad ora non ci era mai
successo).
La mia impressione è che la connessione tra vb e access non memorizzi
i record singolarmente, ma memorizzi i record in un buffer da
trasferire periodicamente al database. Di conseguenza la scrittura dei
record provoca un blocco del database di qualche secondo.
Ma questa è solo una teoria....
Massimo
eh?
nicola, da te non me l'aspettavo.
> Il db crea un lock quando viene aperto, tale per cui non � accessibile
> da altre postazioni.
access con ado pu� creare *vari tipi* di lock.
un mio mdb su un server sta girando con 5 accessi contemporanei da un
abbastanza bel po'. mai crollato.
lupo, se ricordo, di accessi cont ne aveva una quarantina senza particolari
problemi.
che ci sia di meglio non discuto.
ma se dai informazioni, p.f., dalle corrette.
oppure candidati anche tu :PPP
ciao
azz... beccato da pal. :-P
>
>> Il db crea un lock quando viene aperto, tale per cui non � accessibile
>> da altre postazioni.
>
> access con ado pu� creare *vari tipi* di lock.
> un mio mdb su un server sta girando con 5 accessi contemporanei da un
> abbastanza bel po'. mai crollato.
> lupo, se ricordo, di accessi cont ne aveva una quarantina senza
> particolari problemi.
Mah, io avevo capito che entrambi gli utenti dovevano lanciare la stessa
elaborazione sulla stessa tabella. Quindi, correttamente, andavano a
rompersi le scatole a vicenda sui vari record. O capito male?
Nicola
Scusami eh...sarà il caldo ma stasera non mi riesce restare "neutro"!
Se sono "anni" che gira multi utente....come mai proprio "ora" noti
una cosa del genere?
Forse perchè l'hai sempre venduto mono utente?
Forse perchè l'hanno sempre USATO mono utente?
Usi ODBC hai detto.....e che strategia di accesso multi utente?
API odbc?
DAO?
RDO?
ADO?
ossia...il programma come fà a gestire i conflitti?
Spera in Dio?
E' abbastanza normale che se io sto scrivendo un record...un altra
scrittura vada in conflitto! Una lettura no...dipende dalla tecnologia
(ossia dal cursore usato...un cursore dinamico aspetta...un altro tipo
no! a costo di leggere dati errati!....è per questo che ci sarebbero
trigger semafori e amenità varie in db più "seri")
Inoltre...access è un database COMODO perchè sta in un file
soltanto...ma non puoi chiedere ad una 500 di correre contro una F1!!!
Io ho fatto tanti programmi con access....per piccole imprese....va
benissimo!
Se i posti di lavoro salgono...ah beh...anche le esisgenze salgono
UNA SU TUTTE
se si baca il file mdb?
ti tocca implementare un sistema di backup nel tuo programma...
db seri hanno lo strumento di backup incorporato....
E se vuoi tornare indietro ad alcune transazioni?(Una scrittura
contabile ad esempio)...diventa complicato in access..etc etc
Se uno fa un gestionale prima o poi ci si schianta contro queste
cose!...certo se uno lo fà pagare 80 Euro....non ci possiamo aspettare
tante finezze!
Inoltre nello specifico....
il problema lo hai prchè hai MOLTI records da passare
il driver ODBC comincia a raccogliere i dati della query...e te ne
passa "un pò"....quando ti sposti e ne chiedi ancora "te ne serve un
altro pò"...e così via fino alla fine....
Però quei record per una frazione di tempo sono bloccati...e se il
driver odbc è fermo ad aspettare le tue richieste....
Quei record sono bloccati per altre richieste e falliscono....
Ecco perchè vedi andare a singhiozzo!
Query piccole non ti darebbero questo problema!
Il consiglio di Nicola non era assolutamente campato in aria!
Passa ad un db più "serio"....il tuo lavoro ne acquisterà in
prestazioni e manutenibilità!!!
E butta via ODBC!
E'quello che dicevo. Mi pare di capire che gli utenti possano lanciare
la stessa elaborazione che impatta sulla stessa tabella. Quindi vanno in
conflitto sui vari record. O ho capito male?
Nicola
So che ogni tanto bisogna fare s� che il Jet Engine "rinfreschi" i locks,
specie se gli accessi alle tabelle avvengono all'interno di cicli
computazionali piuttosto pesanti.
Quindi, se usi ADO, invocando JRO.RefreshCache:
http://msdn.microsoft.com/en-us/library/bb237216.aspx
Se usi DAO, mi pare sia DBEngine.Idle:
http://msdn.microsoft.com/en-us/library/bb221047.aspx
Bye
Raf
x Wodka40: tu sei il motivo per cui non scrivo mai nei newsgroup ma mi
limito a leggere per imparare: perchè dovrei fare una semplice (mica
tanto in realtà) domanda per avere una risposta che io considero
offensiva (anche se magari dirai che scherzavi)?
Visto che non conosci nulla del nostro applicativo, che bisogno c'era
di lanciarti in certe affermazioni?
So benissimo che se usassi un database più seri avrei sicuramente
prestazioni migliori e maggiore sicurezza, ma purtroppo non abbiamo
ancora nè i mezzi, nè la struttura per migrare il gestionale. Per il
nostro target di clientela access va più che bene e ci è capitato solo
ora semplicemente perchè, nelle installazioni attuali, è raro (leggasi
non è mai successo) che due postazioni lancino contemporaneamente due
elaborazioni pesanti contemporaneamente. E' capitato una volta e mi è
venuto lo scrupolo di risolvere il problema prima che si ripresenti e
per capire un po' di più dell'accesso ai dati.
Sono 10 anni che programmo in vb e non ho mai fatto un corso:
fortunatamente per lavorare non è sempre necessario essere certificati
o super specializzati; ci si accontenta di risolvere i problemi
quotidiani e portare a casa la pagnotta! Sicuramente i miei programmi
non sono perfetti, ma fanno il loro lavoro e i clienti sono contenti,
questo per me è sufficiente.
Per la cronaca, ho risolto il problema utilizzando il cursore statico
e utilizzando un recordset per eseguire i comandi sql (INSERT e
DELETE) invece del metodo Execute della connessione.
Grazie a tutti
Massimo
Ascolta nanni....se mi provochi mo scoppia il flame!
Perchè uno ha un impiegato o due....gli fai un programma di merda???
E all'industria con 10 impiegati uno con i controcazzi????
Ma che cavolo di professionalità è?????
Io ti consiglio di usare uno standard e di adottare sempre quello!
Ne guadagli in manutenzione, malox e tempo....tutte cose che si
traducono in soldi! Mica balle!
Le skill ne convengo servono a poco se dietro non c'è la testa!
Però la testa anche se non "qualificata" ci deve sempre essere!
Tanto per dire....
se tu passi per connection.execute....vai a vederti le discussioni e
le faq di 3 4 5 anni fà......
connection.execute funziona lato server...con i pro ed i contro....
se ora mi risolvi con un cursore statico ed un recordset...c'era da
chiedersi che cosa usavi prima (se usavi una connessione impostata
lato server i cursori molto probabilmente erano dinamici ed allora era
NORMALE e CORRETTO che si bloccassero...anche se ti mangiano risorse
in modo spaventoso!)...se sai la differenza fra client e server...(che
meno male dotNet ha sistemato una volta per tutte)...etc etc
e la differenza fra update e batchupdate.....
il fatto che tu programmi per portarti a casa la pagnotta non ti
esimerebbe da essere professionale e fornire un prodotto che rispecchi
una funzionalità ragionevolmente esente da bachi!
Ossia tradotto....debug continuo....finchè il prodotto non è
stabile....e se è anni che lo vendi e te ne accorgi solo ora...ma che
cazzo di debug hai fatto??? Non è per sindacare...è capitato anche a
me...un prodotto fatto con i piedi e controvoglia...fatti debuggare
sul campo dal cliente in puro stile microsoft! (eheheheh)
In quanto all'investimento.....
se vuoi rimanere in VB6
ADO + Sqlexpress....GRATIS
ADO + MySQL.....gratis
multi utenza vera....lock come vuoi tu...stored procedure...e tanto
altro
Ora ti ho punto nel vivo......
non mi scuso...ne ho scherzato.....
se sei intelligente....e lugimirante.....una volta sbollita la rabbia
e dopo avermi mandato a fanculo....rileggi quello che ti ho detto e
parti da li per migliorare la tua applicazione e la tua cultura
informatica.....
Saluti....
p.s.
Non sei mica il figlio del lattaio vero???
;o)
> Mah, io avevo capito che entrambi gli utenti dovevano lanciare la stessa
> elaborazione sulla stessa tabella. Quindi, correttamente, andavano a
> rompersi le scatole a vicenda sui vari record. O capito male?
A quanto ho capito io questa era la situazione originale: una tabella temporanea
contenente i dati per la stampa, e due utenti che tentano di scriverci una marea
di record.
Mi pare, per�, che nel post originale Spillo dica di aver provato a creare 2
tabelle distinte, quindi la domanda che faceva lui era: 'come mai due utenti che
agiscono su tabelle differenti ricevono un messaggio di tabella in stato di lock'?
A meno che non sia stato io a capire male.
E comunque confermo, anche qui a Vicenza Access si fa usare da pi� d'un
utentesso al colpo ;)
--
S.
Grazie ancora a tutti per l'attenzione.
Peccato..perchè in mezzo ci avresti trovato informazioni che si
sarebbe tramutate in denaro!
Contento te....ciao bello!
"Wodka40[Google]" <virgult...@latinmail.com> ha scritto nel messaggio
news:dac62f1a-eda6-4494...@c2g2000yqi.googlegroups.com...
"Spillo" <fedes...@gmail.com> ha scritto nel messaggio
news:442cce5e-ef83-418a...@d32g2000yqh.googlegroups.com...
Ringrazio Stevie per l'appoggio (il problema era esattamente quello)
mentre a Wodka40 un fanculo lo risparmio perch� sono educato (il tuo
post non lo rileggo perch� con i maleducati non ci parlo).
Il problema è che risponde *sempre* così, e tipicamente, insieme ai
consigli, infila dentro apprezzamenti e "consigli di vita" non sempre
richiesti/pertinenti.
Leggendolo da anni, uno lo sa, riconosce il suo classico stile "stream
of consciousness", e non ci si bada troppo, ma lui appena arrivato si
trova davanti una risposta così, giustamente un po' si incazza...
Se ti incazzi sono cazzi tuoi!
Ho 46 anni e sono esperto di alcune cose della vita...non di tutte per
carità!
Nel mondo reale , qui da me, NON TROVI il freddo algido lombardo che
ti risponde alla norvegese dandoti la SOLA essenziale informazione e
lasciandoti spaesato e alla fine ignorante quanto prima!
Trovi gente che "ti svernicia" alla prima mancanza....
ti dirò che VA BENE così!
Se io sto nel mio guscio (e quanto è facile con internet crearselo a
propria imagine e somiglianza) tendo ad avere una percezione distorta
della realtà!
Contemporaneamente....chiamami hippy, fricchettone, ragazzo del
63....come vuoi...io ho una ALTA concezione della community!
Qui si discute non per fare help desk....ma per migliorare il nostro
lavoro collettivo....
ovvio utopia...ma almeno bisogna provarci!
IO mi faccio mille interrogativi....sono sempre in discussione con me
stesso...sempre alla ricerca di nuovo e conoscenza....così mi
elevo...cresco culturalmente e socialmente....
ed internet è un mezzo uno dei tanti!
MI INCAZZO ALLA MORTE...quando vedo colleghi ripiegati su stesi nel
loro mondo di merda che inevitabilmente contamina anche il mio...e
probabilmente anche il vostro....
Esempio
Se una azienda mi commissiona un lavoro....faccio tutti i passaggi
tipici e rimetto il prezzo.
ad es. 800
COSTANTEMENTE
sono scavalcato da "colleghi del cazzo" che fanno programmi bacati per
500 (l'ordine di grandezza è supergiù quello...25/35% in meno)
Questi qui fanno un analisi buona ed una implementazione alla cazzo di
cane (se paghi uno junior a forfait 600 Euro il mese che vuoi di
più???)
MA SICCOME siamo in tempi di crisi....il manager acquista il programma
bacato...e se ne fotte degli impiegati!
Notare che questo è vieppiù più vero nel pubblico dove le aste/gare al
ribasso provocano la sabbia nei viadotti e programmi informatici
inusabili...e ho esperienza diretta di quanto affermo
Penso che sia MIO dovere bacchettare chi programma con i piedi e che
si accorge solo dopo anni che l'applicazione ha pesanti limitazioni!
Purtroppo gli informatici sono miopi...non hanno voluto un albo che
vincolasse a requisiti ed ad un tariffario minimo...ergo...tutti sono
informatici e inquinare il mercato solo sapendo mettere 2 data control
in croce su un form!
Inutili le balle che la qualità alla lunga paga:
un manger pubblico/privato è vincolato al bilancio e spesso
all'assemblea dei soci non ha soldi e deve (DEVE) trovare economie
dappertutto!
Mi sto defilando sempre più...e penso di mettere su un ristorante
etnico "Dal Wodkino incazzato"
ecco la ragione del perchè ogni tanto parto per la tangente....
stò facendo un favore a chi riceve la mia "lavata di capo"....qualcuno
dopo un po lo appezza e mi dice grazie (pochissimi)...altri apprezzao
e no ringraziano (ingrati)......pochi si offendono e non capiscono
quello che dico (sono i figli del lattaio che hanno messo su una ditt
di informatica)
...e con questo....ho ridetto per l'enesima volta perchè sono un
toscanaccio!!!
Ovvia!
Proprio uno Spillo si deve incavolare perch� viene punto ? ;-P
Fidati: "quelli" non sono punzecchiamenti, sono consigli, e tu
non sai quanto valgono. Il miglior augurio che ti posso fare
� di arrivare a capirlo.
Bye, G.
Io voto lui:
http://i27.tinypic.com/2ujnibp.jpg
Bye, G.
> Ringrazio Stevie per l'appoggio (il problema era esattamente quello)
> mentre a Wodka40 un fanculo lo risparmio perch� sono educato (il tuo
> post non lo rileggo perch� con i maleducati non ci parlo).
Mann�.
E' che Wodka ha un modo di scrivere che a volte (no: spesso. Non te la prendere,
Wo'!) pu� suonare molto irritante.
Solo che probabilmente frequenti poco questo NG (o sei proprio nuovo) e non lo sai.
Non sto difendendo nessuno eh, nemmeno a me piace il tono. Per� cerca di
cogliere quanto di buono c'� nei post di ognuno, a prescindere dal tono.
Rovinarsi il fegato per 'ste minchiate non ha senso.
--
S.
> ADO + MySQL.....gratis
mhhh ... sei sicuro?
Mi risulta che sia gratis se tu rialasci il tuo programma sotto licenza
GPL, oppure se non devi distribuire la tua applicazione (ad esempio un
servizio, o sito, web che gira sui tuoi server) ma se fai
un'applicazione commerciale closed source credo che la licenza si debba
pagare.
Oh, poi magari mi sbaglio, non son andato ad approfondire, sono
reminescenze.
ciao
stefano
Confermo. E' gratis solo per programmi liberi.
Gli unici utilizzabili gratuitamente anche per scopi commerciali sono MS
SQL Server Express e Firebird.
Ovviamente mi riferisco a dbms client-server
Per dbms a singolo file ci sono i SQL Server Compact Edition e l'ottimo
SQLite
Nicola
Chiaro?
Ecco la risposta che volevo!
E a questo punto una curiosità: la pagina è unica per il database
(quindi contiene i record di tutti gli utenti connessi) o ogni utente
ha la sua?
Se non hai voglia non rispondermi, mi andrò a cercare la
documentazione quando rientro in ufficio (a quest'ora non mi va di
cercare); se invece hai la risposta pronta sono tutto orecchi!
Grazie
Visto che il database contiene *UN* set di dati, il lock è relativo a
tutto il DB (lock "per utente" che senso avrebbe? esiste apposta per
evitare scritture concorrenti in conflitto...)
> Se ti incazzi sono cazzi tuoi!
>
> Ho 46 anni e sono esperto di alcune cose della vita...non di tutte per
> carit�!
Nessuno risponde a questo, provo io!
> MA SICCOME siamo in tempi di crisi....il manager acquista il programma
> bacato...e se ne fotte degli impiegati!
>
> Notare che questo � vieppi� pi� vero nel pubblico dove le aste/gare al
> ribasso provocano la sabbia nei viadotti e programmi informatici
> inusabili...e ho esperienza diretta di quanto affermo
Ti tiro le orrecchie! Ma dove diavolo vivi? Ho capito..... la toscana! Ma �
proprio cos� diversa?
Nell'algida Lombardia (pubblica) come nella profonda Calabria o Puglia o
Sicilia, ma anhe il Piemonte, non funziona come da te.
Sembrerebbe che funzioni al contrario.
Si compra il soft da quella ditta, punto e basta.
Non importa manco che soft sia, si compra il suo soft, qualsiasi cosa
faccia.
E se proprio la ditta non ha nessun soft � sufficiente che emetta una
fattura per un parere sulla necessita di un nuovo software.
Qualche centinaio di migliaia di euro, non di piu.
Fattura ripetibile, come le ricette (questa non sapevi, ammettilo)
> ecco la ragione del perch� ogni tanto parto per la tangente....
>
> st� facendo un favore a chi riceve la mia "lavata di capo"....qualcuno
> dopo un po lo appezza e mi dice grazie (pochissimi)...altri apprezzao
> e no ringraziano (ingrati)......pochi si offendono e non capiscono
> quello che dico (sono i figli del lattaio che hanno messo su una ditt
> di informatica)
Qui concordo 100% (forse perche non c'entra il pubblico)
Un pubblico grazie a te, ad Albe, ad hal961, a Lupo....e mi scuso con chi
dimentico, ma mi avete dato tanto, soprattutto con le icnazzature o le
mancate risposte.
--
Greg