Troppo avanti

10 02 2009

Stamattina dopo aver uploadato un sito in ASP.NET su Aruba son incappata nell’errore Could not load file or assembly ‘System.Web.Extensions, Version=3.5.0.0, Culture=neutral,  PublicKeyToken= 31bf3856ad364e35’  or one of its dependencies. The system cannot find the file specified.” .
Ovviamente in locale tutto va che è una meraviglia, mettendolo online succede il triccheballacche.
La cosa inspiegabile è che togliendo il Web.config il sito funziona: non ci sono indicazioni path del db Access ma questo viene letto benissimo (??) e in teoria “se una cosa funziona, non chiederti perchè e tira dritto”, ma appena viene eseguita una query in scrittura, la pagina va in errore.
Comunque sia, la soluzione è molto semplice.
Analizzando una frase di una riunione tra boss diventata un pilastro della cultura popolare del nostro ufficio, “son talmente avanti che son dovuto tornare indietro”, si può facilmente trovare la soluzione di
Could not load file or assembly ‘System.Web.Extensions’“:
la versione asp.net che stavo usando è la 3.5 mentre Aruba supporta la 2.0.
Quindi aprendo Visual Studio basta andare nel tool del Solution Explorer, tasto destro sul nome del sito, Property Pages, Built e selezionare dal menu a tendina .Net Framework 2.0.
Veloce, facile, avanti.


Annunci




80004005: Cincillà in avarìa

22 10 2008

Dovendo seguire il trasferimento di un sito da un server a un altro, mi è capitato di incorrere nel malefico “Microsoft OLE DB Provider for ODBC Drivers error ‘80004005’”. Cercando sull’amico google ho trovato varie soluzioni ma nessuna che facesse al caso mio, e quindi son ricorsa alla vana speranza di avere assistenza dal supporto tecnico offerto dalla società hosting.

Che cazzatona.
Riporto le mail che sono intercorse tra me e l’omino che mi doveva semplificare la vita.

Ely:
“vorrei avere chiarimenti per quanto riguarda l’hosting del sito xxxxx, realizzato in asp con db Access.
in lettura non c’è nessun problema, in scrittura molte volte ritorna l’errore “Microsoft OLE DB Provider for ODBC Drivers error ‘80004005’”. Il db è contenuto nella cartella mdb-database al quale ho già dato i permessi full;
ho controllato di chiudere tutte le connessioni nelle pagine;
ho controllato la stringa di connessione mettendo sia quella che suggerite nel vostro help “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” & server.mappath(“pathdb”)
quale può essere la causa? il vostro help l’ho già letto ma non trovo una soluzione..
grazie”

faccio notare che per non ricereve risposte insulse, ho precisato cosa avevo già a provato a fare, purtroppo senza risultato. A quanto pare l’omino-risolvi-problemi o non ha letto la mia mail, o non ce la fa di suo, e infatti mi risponde:

Gentile Cliente,
in merito alla sua comunicazione la informo che per poter utilizzare e scrivere sul database access è necessario che, sia la cartella dove si trova il file .mdb che il file .mdb devono aver settato i permessi a “Full Access”.
La invito cortesemente a verificare ed a riprovare.
Grazie e Buona Giornata.

Cioè mi prendi per il culo o hai l’intelligenza di un cincillà? Se te l’ho appena detto io che ho già dato i permessi, perchè mi vieni a dire “per funzionare servono i permessi?”.
Come se andassi in farmacia dicendo “mi serve qualcosa per il cagotto, ho già provato il Dissenten, ma non mi ha fatto niente. cosa devo fare?” e la farmacista si presenta con una confezione di Dissenten formato famiglia. Ma mi prendi per il culo?

Infastidita, rispondo così:
come le ho anticipato, ho già dato i permessi alla cartella. E’ stata la prima cosa che ho fatto.
Rivolgendomi direttamente a voi speravo in una risposta più esauriente e approfondita, ma vedrò di cercare altre strade
Grazie e Buona Giornata

Se fossimo stati in Kill Bill, la chiusura della mail sarebbe stata con un eloquente “conti quanto un buco di culo sul gomito”.
Ma l’omino-cincillà non demorde. Forse ha capito di aver fatto una figura di merda..o forse non l’ha proprio capito ed è ancora convinto delle sue idee briose e pazzerelle.

Gentile Cliente,
come da mia precedente comunicazione i permessi a Full Access devono essere forniti anche al file .mdb per poter utilizzare la stringa di connessione fornita nel pannello di controllo.
Grazie e Buona Giornata.

C
H
E

O
R
R
O
R
E
.

Sono le parole meno volgari per esprimere un giudizio. Caro omino dagli occhioni teneri e le orecchie buffe, continua a correre spensierato nella tua ruota.
A questo punto il mio fastidio si è tramutato in commiserazione..anzi, sento lo spirito natalizio e volendo far un’opera pia,  gli spiego che, se i permessi vengono impostati su una cartella, in automatico si settano anche su tutti i files interni, e infatti:

i permessi li ho dati sia alla cartella che al file mdb, anche se so per certo che impostandoli alla cartella principale si danno automaticamente a tutti i files che sono contenuti in essa.
Comunque non penso sia un problema di questo tipo, dato che il sito funziona “a intermittenza”: se mancassero i permessi full access, verrebbe generato un errore ogni volta che provassi a scrivere o cancellare qualcosa.
Comunque grazie.

Purtroppo la comunicazione si interrompe qua.
Il cincillà si è ritirato nella sua sconfitta. Forse è andato in letargo..





Convertire query da SQL a Access

11 09 2008

Dato che son due giorni che sto facendo questo tedioso lavoro e online non ho trovato niente che mi renda la vita più facile, riassumo qua i passi da seguire per convertire le query da SQL a Access:
– pensare “dai mezz’oretta e ho finito…dai al massimo un’ora se ci metto di mezzo la pausa alle 10.30”.
– guardare l’orologio che segna le 11.00 e rendersi conto che il punto prima è una immane cavolata (e la colazione è ancora di fianco al computer);
– inventare nuovi e fantasiosi neologismi perchè è tardi e non ce ne vieni fuori;
– convertire i GETDATE() in NOW();
– inventare nuovi e fantasiosi neologismi perchè cliccando il punto esclamativo rosso ritorna errore e la spiegazione non vuol dire una mazza;
– all’ennesimo “Errore di sintassi (operatore mancante) nell’espressione della query”, controllare che gli alias delle tabelle siano preceduti dall’AS: se SQL accetta “INNER JOIN nometabella alias ON”, per ACCESS è “INNER JOIN nometabella AS alias ON”; per gli alias dei campi (nometabella.nomecampo AS alias) nessun problema dato che è uguale per entrambi i programmi;
– inventare nuovi e fantasiosi neologismi perchè devi perdere la vista a confrontare due query apparentemente identiche che da una parte funzionano e dall’altra no;
– per convertire un nvarchar a data, in SQL è CONVERT(datetime, nomecampo, formatodata), in ACCESS diventa CDate(nomecampo). Ovviamente a seconda dei casi ci sono i vari CInt, CDbl ecc., ma guai a usare il convert dato che Access va proprio in fastidio…
– inventare nuovi e fantasiosi neologismi perchè stai cominciando ad odiare il triangolo giallo con il punto esclamativo e anche il “ti-din” di errore;
– il ISNULL tanto carino e semplice di SQL (ISNULL(nomecampocheforseènullo, nomecamposostituivo)), va convertito in un orrendo (e per niente cool) Nz(nomecampocheforseènullo, nomecamposostituivo)), perchè in Access ISNULL ritorna solo un valore true o false.
– inventare un nuovo e colossale neologisma gigante dopo aver constatato che il tutto funziona, giusto per concludere il lavoro.