[Risolto] Visualizzare i risultati di una query su calc

Discussioni sulle caratteristiche di database
Rispondi
werewolfz
Messaggi: 4
Iscritto il: lunedì 2 gennaio 2017, 19:03

[Risolto] Visualizzare i risultati di una query su calc

Messaggio da werewolfz »

Salve a tutti,per lavoro sto facendo il porting di un database access su base, purtroppo il vecchio db usava un'origine dati esterna da un foglio excel. Il problema è che ho dovuto mantenere questa relazione, ed il file excel non si può modificare, quindi ho trovato alcune difficoltà poichè base non consente di creare nuove tabelle o relazioni tra di esse. Detto questo il mio problema che il file excel ha una colonna data che base trasforma in testo, questa colonna fa riferimento a delle scadenze ed io dovrei tirare fuori dei record degli scaduti...Non mastico tanto di programmazione ma grazie a questo forum e alle varie esperienze degli utenti sono riuscito a fare una macro tramite questa ed un formulario per il momento faccio il confronto di date tra due testi...ed i risultati che tiro fuori li stampo a video. Poi cercando sempre qui sono riuscito ad estrapolare un record ed a fare il confronto corretto tra date...il passo successivo che vorrei fare ma che non riesco è salvare questo recordo in file excel.
Ovviamente allego i file che spero si facciano capire meglio di me, i file allegati non sono quelli originali li ho creati ad ok per preservare i dati sensibili, ma il succo è quello :)
Allegati
prova.odb
db base
(12.53 KiB) Scaricato 206 volte
prova.xlsx
excel (origine dati esterno)
(7.07 KiB) Scaricato 157 volte
Ultima modifica di werewolfz il mercoledì 4 gennaio 2017, 12:22, modificato 1 volta in totale.
LibreOffice 5.1.3 su Windows 7
dino
Messaggi: 108
Iscritto il: venerdì 6 gennaio 2012, 15:25

Re: Salvare i risultati di una query su un foglio di calcolo

Messaggio da dino »

non so se può essere utile ma io avevo avuto la difficoltà di importare i dati in calc da cvs che trasformava le date in testo. La soluzione era piuttosto semplice: nel momento dell'importazione va selezionato il campo data nella colonna corrispondente.
In seconda battuta non ho capito cosa devi esportare. Per salvare una tabella in calc selezioni la tabella di base cliccando in alto a sinista e poi fai copia incolla nella tabella di calc.
Allegati
Screenshot_20170103_174740.png
libreoffice 4.2 sia su win che su ubuntu
werewolfz
Messaggi: 4
Iscritto il: lunedì 2 gennaio 2017, 19:03

Re: Salvare i risultati di una query su un foglio di calcolo

Messaggio da werewolfz »

Intanto grazie per la risposta, purtroppo importo il db da un file ecxel, e base non consente di fare nessuna moifica sulle tabelle, neanche sul tipo di dato.
In seconda battuta eseguo una query ed i risultati sono riusciti a visualizzarli a video come tabella di base, ma se fosse possibile tramite macro vorrei aprire un file excel e visualizzare i risultati lì.
LibreOffice 5.1.3 su Windows 7
werewolfz
Messaggi: 4
Iscritto il: lunedì 2 gennaio 2017, 19:03

Re: Salvare i risultati di una query su un foglio di calcolo

Messaggio da werewolfz »

Grazie a questa discussione viewtopic.php?f=13&t=4303&p=20192&hilit=macro+salva e utilizzando le wiki consigliate qui nel sito sono riuscito a risolvere il mio problema. Sotto il codice della Macro, sono sempre ben accetti i consigli per migliorarlo.
Soprattutto perchè è un po forzato il ciclo delle colonne, nel senso che sapendo il numero delle colonne a priori, ho impostato il ciclo per imettere i dati sul foglio elettronico, ma non sono riuscito a trovare un metodo o una proprietà dell'oggetto resultset che mi dia il numero di colonne che a il risultato della query.

Codice: Seleziona tutto

'CODICE DI PROVA PER ESTRAPOLARE IL RECORD CON I TT SCADUTI E SALVAROLO IN FOGLIO ELETTRONICO
	oForm = oEvent.Source.Model.Parent 			'MainForm from Button
	oStatement = oForm.ActiveConnection.createStatement() 	'Create an SQL statement object
	oResult = oStatement.executeQuery(stringa)		'esegue la query 
	Url = "private:factory/scalc"				'url per aprire un file calc vuoto 
	Doc1 = StarDesktop.loadComponentFromURL(Url, "_blank", 0, Dummy())	'apre Calc
	oSheet = Doc1.Sheets.getbyName("Foglio1")			'Seleziono il Foglio1
	cc=1			'contatore della riga del foglio Calc
		while oResult.next			
			prova = oResult.Columns.getByName("DataDiscadenza").string		'prendo il valore della scadenza
			for count = 0 to 3		'con questo ciclo inserisco i nomi delle colonne sul foglio elettronico
				oSheet.getCellByPosition(count,0).string = oResult.Columns(count).name 
			next count				
	       	if CDateToIso(prova) <= CDateToIso(sData) Then	'confronto le date
	       			For count = 0 to 3  'con questo ciclo riempio le colonne del foglio di calcolo
		       			oSheet.getCellByPosition(count,cc).string = oResult.Columns(count).string
	       			Next count	 
	       			cc = cc +1     			
	      		end if      
	   	wend
'CODICE DI PROVA PER ESTRAPOLARE IL RECORD CON I TT SCADUTI E SALVAROLO IN FOGLIO ELETTRONICO	
LibreOffice 5.1.3 su Windows 7
owl199
Messaggi: 5
Iscritto il: mercoledì 29 marzo 2017, 13:51

Re: [Risolto] Visualizzare i risultati di una query su calc

Messaggio da owl199 »

Una domanda:ma il foglio di excel dove li attinge i dati?Non riesci a costruire un DB connettendoti direttamente al server dati senza passare per l'output di excel?Ritengo infatti che trattandosi di scaduti, sia il risultato di un'analisi di qualche specie di gestionale, e quello dovrebbe avere il suo DB da qualche parte.Poi chiaramente potrebbe essere un DB SQL, MySql, Postgres o vattelapesca,In ogni caso se riesci a saltare quell'outuput di xcel hai fatto un gran passo avanti!!
OOo 5.0.3.2 su Linux Mint 17.3_64 Bit.
Rispondi