Re: [Python] Query in PyQt

2012-07-05 Per discussione piergiorgio pancino


Ora riesco a visualizzare l'errore, ma non capisco cos'è, a me sembra tutto 
giusto...

[Microsoft][ODBC SQL Server Driver][SQL Server]Sintassi non corretta in 
prossimità della parola chiave 'INNER'. QODBC3: Unable to execute statement


questa è la stringa:

sqlstringdbo_art_0= UPDATE dbo.articoli_0 INNER JOIN (dbo.listini_art_for ON 
dbo.articoli_0.cod_art = dbo.listini_art_for.art_cod ) SET 
dbo.articoli_0.descrizione_2 = %s , dbo.articoli_0.barcode = %s WHERE 
(dbo.listini_art_for.cod_art_ana = %s ) AND (dbo.listini_art_for.cod_ana = %d 
); % 
(self.dict_articoli[articolo][descrizione],self.dict_articoli[articolo][barcode],articolo,self.codice_fornitore)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Query in PyQt

2012-07-05 Per discussione piergiorgio pancino
A quanto pare ho capito... in un forum ho trovato che la struttura delle query 
da Access a SQLServer cambia, quindi la riga giusta è del tipo

sqlstringdbo_art_0=UPDATE dbo.articoli_0
                SET dbo.articoli_0.descrizione_2 = '%s' , 
dbo.articoli_0.barcode = '%s'
                FROM dbo.articoli_0 
                INNER JOIN dbo.listini_art_for ON dbo.articoli_0.cod_art = 
dbo.listini_art_for.art_cod 
                WHERE dbo.listini_art_for.cod_art_ana = '%s' 
                AND dbo.listini_art_for.cod_ana = %d ;  %( 
self.dict_articoli[articolo][descrizione],self.dict_articoli[articolo][barcode],articolo,self.codice_fornitore)

In pratica si inverte l'ordine di INNER JOIN e il Where va in fondo...
Io usavo il compositore access per crearmi le query :) e quindi ci sono cascato
Che fatica però, sento davvero l'esigenza di un debug :)

Pier



 Da: piergiorgio pancino piert...@yahoo.it
A: python@lists.python.it python@lists.python.it 
Inviato: Giovedì 5 Luglio 2012 10:31
Oggetto: Re: Query in PyQt
 



Ora riesco a visualizzare l'errore, ma non capisco cos'è, a me sembra tutto 
giusto...

[Microsoft][ODBC SQL Server Driver][SQL Server]Sintassi non corretta in 
prossimità della parola chiave 'INNER'. QODBC3: Unable to execute statement


questa è la stringa:

sqlstringdbo_art_0= UPDATE dbo.articoli_0 INNER JOIN (dbo.listini_art_for ON 
dbo.articoli_0.cod_art = dbo.listini_art_for.art_cod ) SET 
dbo.articoli_0.descrizione_2 = %s , dbo.articoli_0.barcode = %s WHERE 
(dbo.listini_art_for.cod_art_ana = %s ) AND (dbo.listini_art_for.cod_ana = %d 
); % 
(self.dict_articoli[articolo][descrizione],self.dict_articoli[articolo][barcode],articolo,self.codice_fornitore)___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Query in PyQt

2012-07-05 Per discussione Matteo Boscolo

Il 05/07/2012 11:24, piergiorgio pancino ha scritto:
A quanto pare ho capito... in un forum ho trovato che la struttura 
delle query da Access a SQLServer cambia, quindi la riga giusta è del tipo


sqlstringdbo_art_0=UPDATE dbo.articoli_0
SET dbo.articoli_0.descrizione_2 = '%s' , 
dbo.articoli_0.barcode = '%s'

FROM dbo.articoli_0
INNER JOIN dbo.listini_art_for ON 
dbo.articoli_0.cod_art = dbo.listini_art_for.art_cod

WHERE dbo.listini_art_for.cod_art_ana = '%s'
AND dbo.listini_art_for.cod_ana = %d ;  %( 
self.dict_articoli[articolo][descrizione],self.dict_articoli[articolo][barcode],articolo,self.codice_fornitore)


In pratica si inverte l'ordine di INNER JOIN e il Where va in fondo...
Io usavo il compositore access per crearmi le query :) e quindi ci 
sono cascato

Che fatica però, sento davvero l'esigenza di un debug :)

Pier


*Da:* piergiorgio pancino piert...@yahoo.it
*A:* python@lists.python.it python@lists.python.it
*Inviato:* Giovedì 5 Luglio 2012 10:31
*Oggetto:* Re: Query in PyQt


Ora riesco a visualizzare l'errore, ma non capisco cos'è, a me sembra 
tutto giusto...


[Microsoft][ODBC SQL Server Driver][SQL Server]Sintassi non corretta 
in prossimità della parola chiave 'INNER'. QODBC3: Unable to execute 
statement


questa è la stringa:

sqlstringdbo_art_0= UPDATE dbo.articoli_0 INNER JOIN 
(dbo.listini_art_for ON dbo.articoli_0.cod_art = 
dbo.listini_art_for.art_cod ) SET dbo.articoli_0.descrizione_2 = %s 
, dbo.articoli_0.barcode = %s WHERE (dbo.listini_art_for.cod_art_ana 
= %s ) AND (dbo.listini_art_for.cod_ana = %d ); % 
(self.dict_articoli[articolo][descrizione],self.dict_articoli[articolo][barcode],articolo,self.codice_fornitore)





___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


hai mai sentito parlare di sqlalchemy ?
dimenticarsi dell' SQL a volte ha i suoi vantaggi :

ciao


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Query in PyQt

2012-07-05 Per discussione Calogero Bonasia
Il giorno 05 luglio 2012 11:59, Matteo Boscolo
matteo.bosc...@boscolini.euha scritto:

 Che fatica però, sento davvero l'esigenza di un debug :)


OT-alcubo
sono tornato per un attimo alle notti insonni passate quando sviluppavo
con i prodotti di zio bill. Effettivamente ci sta che da casa produttrice a
casa produttrice, possa cambiare qualcosa nella sintassi dell'SQL, ma a
Redmond sono imbattibili: cambiare la sintassi da prodotto a prodotto... è
semplicemente dove vuoi andare (fuori di testa) oggi ?...
/OT-alcubo


-- 
Calogero Bonasia

in secundis rebus amici nos cognoscunt,
in adversis ipsi amicos cognoscimus
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Query in PyQt

2012-07-04 Per discussione piergiorgio pancino


Ciao a tutti , 
ho un problema con un programmino che sto facendo che importa dei listini da un 
file di testo ed aggiorna alcune tabelle nel database SQLSERVER.
In pratica prima mi inserisco tutti i dati/prezzi che mi servono all'interno di 
un dizionario, poi faccio l'aggiornamento di una tabella che si trova nel 
Server e si chiama dbo.listini_art_for e fin qua non ci sono riuscito.
Se non ché mi viene in mente che vorrei aggiornare anche delle descrizioni e il 
codice a barre che però è contenuto in un'altra tabella...
E quindi ho agito come segue:


Il dizionario si chiama self.dict_articoli e ogni voce contiene a sua volta un 
piccolo dizionario con altre voci:

self.tutti_codici[codice di 
riferimento]={descrizione,listino,costo,qta_imballo,sconto_1,metel,barcode}

Ho creato tre query come segue:

self.query=QSqlQuery()  #Questa mi seleziona tutti i record del database che 
voglo aggiornare e con query.next li scorro ad uno a uno
self.query_inserimento=QSqlQuery() #Questa mi serve mentre scorro i record per 
aggiornarli
self.query_aggiornamento_dbo_articoli0=QSqlQuery() #Questa vorrei usarla con un 
Join per aggiornare i dati di un'altra tabella





    def aggiorna_prezzi(self,dict_articoli):
        self.dict_articoli=dict_articoli #Il mio dizionario
        sqlstring=SELECT dbo.listini_art_for.cod_ana, 
dbo.listini_art_for.cod_art_ana, dbo.listini_art_for.qta_imballo, 
dbo.listini_art_for.listino, dbo.listini_art_for.sconto_1, 
dbo.listini_art_for.netto, dbo.listini_art_for.costo
                        FROM dbo.listini_art_for
                        WHERE 
(((dbo.listini_art_for.cod_ana)={fornitore}));.format(fornitore=self.codice_fornitore)
        
        self.query.exec_(sqlstring) #La mia query di selezione che scorre uno 
ad uno i codici della mia tabella che contiene i prezzi che voglio aggiornare
        cod_ana,cod_art_ana,qta_imballo,listino,sconto_1,netto,costo =range(7) 
#campi della query
        
        while self.query.next():
            articolo=self.query.value(cod_art_ana)
            
            if articolo in self.dict_articoli:

                sqlstring_inserimento=UPDATE dbo.listini_art_for SET 
dbo.listini_art_for.listino = %f, dbo.listini_art_for.qta_imballo=%f, 
dbo.listini_art_for.sconto_1 = %f, dbo.listini_art_for.netto = %f, 
dbo.listini_art_for.costo = %f,dbo.listini_art_for.data_riferimento_prezzo = %r 
WHERE (dbo.listini_art_for.cod_art_ana='%s')AND(dbo.listini_art_for.cod_ana = 
%d); % 
(self.dict_articoli[articolo][listino],self.dict_articoli[articolo][qta_imballo],self.dict_articoli[articolo][sconto_1],self.dict_articoli[articolo][costo],self.dict_articoli[articolo][costo],self.data_oggi,articolo,self.codice_fornitore)

                self.query_inserimento.exec_(sqlstring_inserimento) #E con 
questa faccio il mio update, fino a qua funziona                

                self.query_aggiornamento_dbo_articoli0=QSqlQuery()
                sqlstringdbo_art_0= UPDATE dbo.articoli_0 INNER JOIN 
dbo.listini_art_for ON dbo.articoli_0.cod_art = dbo.listini_art_for.art_cod SET 
dbo.articoli_0.descrizione_2 = %s , dbo.articoli_0.barcode = %s WHERE 
(dbo.listini_art_for.cod_art_ana = %s ) AND (dbo.listini_art_for.cod_ana = %d 
); % 
(self.dict_articoli[articolo][descrizione],self.dict_articoli[articolo][barcode],articolo,self.codice_fornitore)
                
                sqlstringdbo_art_0= UPDATE dbo.articoli_0 SET 
dbo.articoli_0.descrizione_2 = %s , dbo.articoli_0.barcode = %s WHERE 
(dbo.listini_art_for.cod_art_ana = %s) AND (dbo.listini_art_for.cod_ana = %d 
); % 
(self.dict_articoli[articolo][descrizione],self.dict_articoli[articolo][barcode],articolo,self.codice_fornitore)
                
                
self.query_aggiornamento_dbo_articoli0.exec_(sqlstringdbo_art_0)#Questa parte 
non funziona in nessun modo, nemmeno se metto come stringa select * from 
dbo.articoli_0)
        #self.db.commit()
        self.db.close()

Però self.query_aggiornamento_dbo_articoli0.isValid() non è mai vero, nemmeno 
se sostituisco una la stringa con select * from dbo.articoli_0, ho provato e 
riprovato, ma non funziona, non so cosa pensare... 

Riporto tutto il codice per completezza, scusate per lo spam___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python