Problema con codice query e maschera - ACCESS SQL

venerdì 21 dicembre 2012 - 11.35
Tag Elenco Tags  Windows XP  |  Access (.mdb)

POM Profilo | Newbie

Ciao di nuovo a tutti!!
Sto avendo un problemino con una maschera.. io ho una casella di testo, essa deve contenere il TotaleDare, nel caso in cui esso corrisponda alla chiave "Li".. frutto di una query.
In pratica è come se stessi facendo una sottoquery.
Il codice, però, ahimè non funziona!!

SELECT [TotaleDARE]
FROM [somme_riclassificazione_stato_patrimoniale]
WHERE [COD_RICLASSIFICAZIONE]="Li";

Dov'è che sbaglio? Non riesco a capire.. :(
Se faccio la modalità guidata per la creazione del codice (quindi da origine controllo) mi da un'alta sintassi.. che ugualmente non funziona!!
Mi date una mano?

Attendo risposte.
Grazie!!

Mary. Classe 1993.
Windows Xp user.
Futura ragioniera e programmatrice.

alx_81 Profilo | Guru

>Ciao di nuovo a tutti!!
Ciao Mary

>Dov'è che sbaglio? Non riesco a capire.. :(
>Se faccio la modalità guidata per la creazione del codice (quindi
>da origine controllo) mi da un'alta sintassi.. che ugualmente
>non funziona!!
>Mi date una mano?
so che sei all'inizio su questo forum e di solito diamo più margine, però, devo partire con un paio di annotazioni sulle "regole" da seguire il più possibile:
- cerca di dettagliare al massimo il post per darci la possibilità di capire al meglio il problema, non dare mai per scontato niente
- allega anche dei file o il codice incriminato, sempre per lo stesso scopo, risponderti al meglio
- cerca di documentarti sempre prima di postare, per essere certa che la problematica non è gestibile con i metodi della documentazione (o se non riesci a capire qualcosa della doc)
detto questo,
iniziamo, cerca di dettagliare maggiormente e allega un database di esempio che possa aiutarci a rispondere.
grazie mille a te
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

POM Profilo | Newbie

D'accordo ;) allora.. ho creato questa query, che mostra questi risultati:


383x235 31Kb


Adesso.. ho questa maschera:


636x482 45Kb


Nella casella di testo accanto a "Liquidità immediate" vorrei inserire l'importo contenuto nella query allegata.. le Liquidità immediate in quella immagine hanno il codice Li.. e quindi devo creare l'sql che mi permetta di selezionare dei valori con un criterio da una query.

Spero di essere stata limpida :D
Grazie!!
Mary. Classe 1993.
Windows Xp user.
Futura ragioniera e programmatrice.

alx_81 Profilo | Guru

>Spero di essere stata limpida :D
Ok il problema è chiaro, ma che codice hai associato al pulsante o all'evento che dovrebbe essere scatenato per riempire i campi di testo?

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

POM Profilo | Newbie

Quello che ho postato sopra!

SELECT [TotaleDARE]
FROM [somme_riclassificazione_stato_patrimoniale]
WHERE [COD_RICLASSIFICAZIONE]="Li";

L'ho inserito nell'origine controllo della casella di testo, ma mi hai fatto venire un'idea.. se volessi mettere il codice interamente sul pulsante, cosa dovrei scrivere?

--------
Mary. Classe 1993.
Windows Xp and Sony Xperia Sola user.
Futura ragioniera e programmatrice.

alx_81 Profilo | Guru

>Quello che ho postato sopra!
ok, non capivo che quella query fosse l'origine della maschera
Vedendo il pulsante credevo che tu volessi collegarla all'evento di pressione del pulsante stesso.

>ma mi hai fatto venire un'idea.. se volessi mettere il codice
>interamente sul pulsante, cosa dovrei scrivere?
appunto, se vai in visualizzazione struttura della maschera e selezioni il pulsante, vedrai, negli strumenti del bottone, l'elenco degli eventi. Se fai doppio click sull'evento che vuoi gestire (il click ad esempio) ti si apre l'editor VBA, ma dovrai scrivere del codice Visual Basic.

Qui c'è la documentazione di office:
http://office.microsoft.com/en-us/access-help/use-a-command-button-to-start-an-action-or-a-series-of-actions-HA010117258.aspx

Conosci un po' di VBA?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

POM Profilo | Newbie

Conosco più che bene visual basic, ma non so se su access è uguale..
La questione a questo punto è un'altra:
Devo fare la query con il codice oppure utilizzo quella che già ho e la uso con il vb?
Alla fine non penso sia difficile, se scrivessi nel codice il ciclo per ricercare ad esempio il valore "Li" nella query.. riuscirei poi a metterla nella casella di testo corrispondente.. giusto?
Mi aiuteresti a fare una bozza di codice? La devo adottare per 6 maschere e parecchie query.. :/
A quel punto avendolo non resta altro che rielaborarlo per ogni caso specifico!

Grazie e Buona Vigilia ;)


--------
Mary. Classe 1993.
Windows Xp and Sony Xperia Sola user.
Futura ragioniera e programmatrice.

alx_81 Profilo | Guru

>Conosco più che bene visual basic, ma non so se su access è uguale..
il VBA è un pochino diverso, ma è sempre VB.

>La questione a questo punto è un'altra:
>Devo fare la query con il codice oppure utilizzo quella che già
>ho e la uso con il vb?
se vuoi associare al pulsante, ti consiglio di utilizzare quella query sul gestore dell'evento del click del pulsante.

>Alla fine non penso sia difficile, se scrivessi nel codice il
>ciclo per ricercare ad esempio il valore "Li" nella query.. riuscirei
>poi a metterla nella casella di testo corrispondente.. giusto?
devi ciclare se hai più righe il resultset, ma puoi fare anche altre cose, come tante query posizionali, ecc..
dipende dalla soluzione che attui.

>Mi aiuteresti a fare una bozza di codice? La devo adottare per
>6 maschere e parecchie query.. :/
>A quel punto avendolo non resta altro che rielaborarlo per ogni
>caso specifico!
per cercare di aiutarti il più possibile, passami un db di prova con dati di esempio così ti scrivo il vb che utilizzerei.
Tanto si tratta di popolare i dati di una maschera alla load e in più di aggiornarla con la pressione di un pulsante no?

>Grazie e Buona Vigilia ;)
Auguri anche a te!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

POM Profilo | Newbie

In allegato ti ho messo il file.. è ancora provvisorio, ovviamente.. presto aggiungerò molti più campi per le altre operazioni.

In ogni caso.. nella sezione maschere trovi quella di cui stiamo parlando, ho scritto il codice che ho trovato in giro su internet, rielaborandolo.. ma niente, non mi da errore ma non compare il dato sul campo.
Mi dai una mano?

Grazie, sei disponibilissimo ^^


--------
Mary. Classe 1993.
Windows Xp and Sony Xperia Sola user.
Futura ragioniera e programmatrice.

renarig Profilo | Expert

Secondo me ci sono diversi problemi che si accavallano.
_________________________________________________________________
Hai usato nelle tabelle delle caselle combinate che di per se stesso
non è sbagliato ma semplicemente inutile

e confonde le idee in quanto i dati che leggi non corrispondono
ai dati effettivamente memorizzati nel DB
___________________
Per conseguenza anche nelle query ti sono venute le caselle combinate

Tu leggi "Li" e vuoi filtrarlo.
ma quel "Li" nella casella combinata fa riferinento al
valore numerico del suo Id che è 7

Pertanto devi filtrare sul 7 NON sul "Li"
_________________________________________________________________

Altro problema, quel codice che hai messo

> Option Compare Database
> Dim i As Byte
>
> Private Sub Comando4_Click()
> For i = 1 To 8
> If DLookup("COD_RICLASSIFICAZIONE", "somme_riclassificazione_stato_patrimoniale") = "Li" Then
> txtLi.Text = Val([TotaleDARE])
> End If
> Next i
> End Sub

cosa dovrebbe fare ( a parte il problema del "Li" evidenziato sopra )

Scorrere gli 8 record della query per trovare il valore desiderato
e scriverlo nella casella di testo txtLi ???

Ma lui resta sempre fermo al 1° record perche non
hai messo un MoveNext per andare al prossimo record

In verità ancor prima del MoveNext dovevi aprire
un RecordSet .....


Quindi il codice per 8 volte controlla che al 1° record
ci sia scritto "Li" Non lo trova
e non scrive nulla nel tuo txtLi.
____________________________________________________________

Poi hai un problema più strutturale:

Tu vorresti filtrare sul valore "Li"
ma perche non filtri sul valore 7 che è la sua chiave ????

Guardati bene come hai impostato le tabelle e le relazioni

Funziona anche se filtri si "Li" ma .....

____________________________________________________________
____________________________________________________________
____________________________________________________________


Adesso che ti ho detto dei problemi vediamo come puoi risolvere:
ci sono 3 modi in ordine di difficolta:

__ 1° ________________________________________
Un banale DLookUp direttamente nella maschera e non usi codice

__ 2° ________________________________________
Apri un RecorSet sulla Query salvata e gli fai scorrere TUTTI i record
usando MoveNext alla ricerca del valore 7 ( che corrisponde a "Li" )

__ 3° ________________________________________
Come il 2° ma la query non è salvata bensi scritta
con VBA

________________________________________________________________
________________________________________________________________
________________________________________________________________


Visto che oggi è festa ti allego 3 esempi distinti

sono stati prodotti con access2010 poi salvati in 2003
percio potresti avere dei problemi



Facci sapere


.

alx_81 Profilo | Guru

>Visto che oggi è festa ti allego 3 esempi distinti
visto che era festa non ho risposto
grazie renarig
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

POM Profilo | Newbie

Grazie tante!!!! Il numero 1 è stato sufficiente :)


--------
Mary. Classe 1993.
Windows Xp and Sony Xperia Sola user.
Futura ragioniera e programmatrice.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5