Newsgroup: it.comp.lang.visual-basic
Titolo: DatePart(''d'',Datascad)- Preavviso

La query:
Select * from scadenze Where
Datediff(''d'',DateAdd(''d'',Preavviso,Datascad,Date)= Preavviso"
Oppure con quest'altro modo:
Select * from scadenze Where DatePart(''d'',Datascad)- Preavviso=Date
Dove Datascad è campo del database (data di scadenza)
Preavviso è campo di database (valore numerico intero)
E d si trova tra doppi "apostrofi"
Mi da errore run time 3075: Errore di sintassi(operatore mancante)
nell' espressione della query
Qual'è
Grazie.
--
Gulp ! Forse mi sono perso qualcosa !

 E d si trova tra doppi "apostrofi"
intanto: io il parametro preavviso lo terrei nel codice, non nel database
poi non capisco perchč d debba essere tra doppi apostrofi...
a braccio, credo che risolverei cosě:
select * from scadenze where datascad >=#" &
format$(dateadd("d",-preavviso,date), "mm/dd/yyyy") & "#"
--
Salutoni
Sergio

 Qual'č
Senza sapere a che db ti connetti, non mi ci metto neanche a cercare un
errore di sintassi.
:-)
Ciao
Alberto

 database
Perchč?
E se il preavviso non lo volessi come costante,ma variabile, dove lo potrei
memorizzare?
poi non capisco perchč d debba essere tra doppi apostrofi...
OK, va messo tra due e solo due.


 un errore di sintassi.
Ciao Alberto.
E' arrivata ora, per me , di chiarire sto casino del TIPO di database.
Allora: succede spesso quando rispondete a qualcuno nel NG che vi lamentiate
di mancanza di informazioni a riguardo.... e spesso non capisco come mai
(non conosco nemmeno bene la differenza tra ADO e DAO se non che hanno una
diversa velocità)
Qui siamo nel NG di visual basic, uso VB6 e mi viene spontaneo pensare che
le tabelle che vengono usate siano *.mdb
e le connessioni ad esse DAO (oppure ADO) ai fini di una Query cambia
qualcosa?
Cosa significa allora: "che tipo di database stai usando" ?
Grazie Alb


 pensare che le tabelle che vengono usate siano *.mdb
Mdb è il formato di Access.
Io, ad esempio, non lo uso (uso Sql-Server e MSDE).
Altri usano Fox-Pro (dbf)
Altri usano MySql
Altri usano Oracle
Altri usano DB2 (specialmente su AS/400)
Quando scrivi una query Sql (perchè stai chiedendo info su una query sql,
giusto?), che tu usi VB, VC++, Delphi, Pascal, ecc..., non cambia niente.
Stai eseguendo una query che coinvolge il provider OleDb o ODBC, nonchè il
motore del DBMS, ma che VB si limita a passare in maniera passiva al
provider che a sua volta la passerà al dbms.
Per cui, la sintassi Sql che devi utilizzare non riguarda nel modo più
assoluto VB, ma esclusivamente il dbms a cui ti connetti.
Questo, in brevissimo, è il punto.
Ciao
Alberto

 assoluto VB, ma esclusivamente il dbms a cui ti connetti.
Ok č finalmente chiaro... chiarissimo.
Grazie.


 Grazie Alb
scusate ancora e ciao a tutti

 ha scritto:
Perchè Marg sei così polemico, pur non volendo esserlo.... :-)) ?
Se chiedo non so e quando non si sa si chiedono cose che fanno pensare:
"Questa è proprio bella" !
Quando però dal pensiero si passa sulla tastiera....
Cos'è, a te piace quando ti trattano così ?
Mi piacevi molto di più 24 ore fa quando hai risposto con Lupo
sull'argomento "Scadenze da verificare in database" (vedi più indietro !)
La tua query mi ha aiutato, non la "querelle"
In amicizia
Ciao


 Ciao
ciaociao


 potrei memorizzare?
riprendiamo la tua query
Select * from scadenze Where DatePart(''d'',Datascad)- Preavviso=Date
per essere scritta così, vuol dire che preavviso è un campo della tua tabella
scadenza, ciò vuol dire che è inserito in ciascuno dei record della tabella.
Di solito, per queste cose, io costruisco nel db una tabella parametri, con due
colonne, una per il nome del parametro ed una per il valore. Alla partenza del
programma (o quando mi serve) vado a leggere questa tabella per recuperare il
parametro che mi serve.
Non è una verità di fede, ovviamente :-) è solo un metodo che mi pare
sufficientemente razionale per gestire il discorso, forse non il migliore e
sicuramente non l'unico.
--
Salutoni
Sergio

 una per il valore.
Come avevo impostato io le cose, alla riga della data corrispondeva un
valore Preavviso
come proponi tu, dovrei relazionare questa seconda tabella con la prima
contenente le date di scadenza ?
Se č cosě l'index che le relaziona non deve essere la data di scadenza?
Oppure non ho capito qualcosa...:-))) piů cose !


> Comunque nessun problema e amici come prima, giusto? ;-)
Ok. Ciao


 prima contenente le date di scadenza ?
Nessuna relazione tra tabelle: è un parametro che vado a leggere da qualche
parte, siccome ho già un db ci metto dentro una tabella, ma potrei anche
salvarlo nel registro di sistema. Quando devo fare una query uso il parametro
nei criteri di filtro, come in quella che ti ho postato. Per spiegarmi meglio,
riprendiamo l'istruzione che ti ho postato:
select * from scadenze where datascad >=#" &
format$(dateadd("d",-preavviso,date), "mm/dd/yyyy") & "#"
questa query (fatta per access, per altri db non so) ti restituisce i record
della tabella scadenza, nei quali il campo datascad è maggiore o uguale alla
data attuale meno i giorni di preavviso previsti, solo che prevede che il
parametro "preavviso" sia stato precedentemente letto, da qualche parte, e
inserito nell'omonima variabile.
--
Salutoni
Sergio

 in tutti i record in cui compare.
Beh, io davo per scontato che il preavviso fosse caratteristico di ogni
singola scadenza (e quindi andrebbe bene nel record), e non valido su base
universale (nel qual caso, metterlo nel record sarebbe una interessante
applicazione della modellazione multidimensionale, ma con una dimensione a
numerositŕ uno mi sembra un po' ridicolo...).
Ciao
Alberto

 ma con una dimensione a numerosità uno mi sembra un po' ridicolo...).
siamo ot, ma qualche link per partire con la modellazione multidimensionale
potresti indicarmelo? Ne sento parlare spesso, credo di avere intuito di che
cosa si tratta, ma sono, come sempre, curioso di sapere qualcosa di più.
--
Salutoni
Sergio

 multidimensionale potresti indicarmelo?
Sinceramente no.
Magari puoi sgrufolare un po' nei BOL di Sql-Server (meglio il 2000, che ha
dei servizi molto interessanti al proposito).
Ciao
Alberto

in cui compare.
Nel caso su esposto, ogni data potrebbe avere un diverso valore di
preavviso:
25/05/03    Pagare le tasse
Preavviso : 5gg
28/05/03    Verificare il cc dopo le tasse
Preavviso : 1gg
01/06/03  : Spararsi
Preavviso : 1gg


 dovrei utilizzare quella suggerita da Lupo?
non sia mai che io dica di usare i miei suggerimenti al posto di quelli di Lupo:
potrebbe negarmi il passaggio a Bologna :-)
Scherzi a parte: il mio discorso era legato all'unicità del preavviso: se per
ogni scadenza hai un preavviso diverso è certamente meglio metterlo come fai tu.
Potresti anche avere una tabellina con i preavvisi in funzione della tipologia
del record, ma temo che ti complicheresti un po' troppo le idee.
--
Salutoni
Sergio

 e dei valori espressi in giorni di preavviso per ciascuna data.
Quindi, mi sembra chiaro (come mi pareva sin dall'altro post), i giorni di
preavviso sono per ogni singolo record/data/descrizione di scadenza, giusto?
Se è così, mi sembra architetturalmente corretto, anche perchè l'operatore
decide liberamente (quando registra la scadenza) i giorni di preavviso che
preferisce per la stessa.
Perchè vuoi complicarti la vita con "d", DateDiff, Datepart, DateSto... etc.
quando ti basta una sottrazione?
Non dimenticare: Una data sul database non è altro che un numero...

 Non dimenticare: Una data sul database non è altro che un numero...
OK
Spero che questo sia l'ultimo messaggio di questo lungo thread, non vorrei
disturbare troppo.
Ma mi dice "parametri insufficienti, necessario almeno 1" e mi succedeva
quando sbagliavo il nome dei campi, ma qui tutto è in ordine cosa può essere
ancora?
Eccola la famigerata!:
"select * from scadenze where Datascad-Preavviso=Date"


> "select * from scadenze where Datascad-Preavviso=Date"
Gli apici!


 pensare che le tabelle che vengono usate siano *.mdb
Dimenticavo.
Fino a qualche teempo fa, c'era una simbiosi quasi perfetta fra VB e Access.
Esempi, progetti già fatti disponibili in rete, libri, ecc..., tutti usavano
Access come database di riferimento per VB.
Da oramai un paio di anni, questa cosa è cambiata radicalmente.
Per volontà, ovviamente, di Microsoft.
Se ci fai caso, il provider OleDb per Access (ossia JET), non è più
distribuito assieme a MDAC (Microsoft Data Access Components).
E non è più installato sui nuovi sistemi operativi Microsoft (XP).
E, guarda caso, sia con Visual Studio che con MSDN viene distribuito MSDE,
ossia una versione free di Sql-Server.
Gli esempi che trovi su Ado sulle nuove MSDN, guarda caso usano sempre il
Northwind di Sql-Server come database di esempio.
Morale: quando si parla di un database collegato a VB, se non viene
specificato, a me viene in mente Sql-Server, non certo Access.
Ciao
Alberto

> Gli apici!
Dubito molto. Com'era quella che ti avevo proposto?...

> Dubito molto. Com'era quella che ti avevo proposto?...
E hai ragione !
Cosě funziona:
"select * from scadenze where Datascad - Preavviso= '" & Format(Date,
"dd/mm/yy") & "'"
Ciao e grazie.


 "select * from scadenze where Datascad - Preavviso= #" & Format(Date,
"mm/dd/yyyy") & "#"
Considera anche quel <= invece di = (Se un giorno non si accende il PC???)

 PC???)
OK, è giusto.
Grazie
P.S. arriveranno strali per il formato data ?


 P.S. arriveranno strali per il formato data ?
sě, di sicuro, soprattutto dal tuo cliente.
--
Salutoni
Sergio

 ha scritto:
Ciao CSSoft
Prima di tutto, prima di proseguire, una domanda OT: ma è corretto
(netiquette) proseguire un Thread
così in "profondità" come sta succedendo qui?
Poi, volevo dirti che il cliente sono io :-)) (ho e sto realizzando il tutto
in proprio e solo per me)
ma certo se la cosa può dare problemi al "cliente" li può pure dare a me...
dunque me ne citeresti qualcuno ?  Ti assicuro che mi funziona tutto, Prima
Nota, data di nascita con relative ricerche ecc.


 tutto, Prima Nota, data di nascita con relative ricerche ecc.
ne abbiamo parlato una marea di volte... se fai una query verso access (verso
sql ti sputa direttamente subito) del tipo:
select * form tabella where DataInizio = #24/04/2003#"
ti restituisce i record del 24 aprile, se invece scrivi
select * form tabella where DataInizio = #8/04/2003#"
ti restituisce quelli del 4 agosto.....
--
Salutoni
Sergio

 ne abbiamo parlato una marea di volte...
Si, mi scuso e, come dicevo prima a Lupo, ho anche letto un vostro lungo
Thread al riguardo...ma stavolta mentro confesso la mia prigrizia nell'
andarlo a rivedere, mi compiaccio della tua pazienza e cortesia.
Ancora un 'ultima domanda: quel formato deve essere posto nella query per
non provocare gli errori suddetti.....e devo pure usare quel formato per
scrivere nel database con una Grid?
Oppure se scrivo in text1, scrivo la data (è anglosassone? mi sembra di si)
08/04/03 , la memorizzo così nel database oppure devo procedere ad una
formattazione? sto facendo un po' di casino eh?


 formattazione? sto facendo un po' di casino eh?
Come fai ora?
Comunque, io faccio sempre cosě: Ricavo dalla mia stringa/testo (comunque
sia scritta, ma, ovviamente, lo devo sapere) i valori _numerici_ di giorno,
mese e anno e li converto in formato "Date" (per essere depositata nel
campo) con:
data_per_campo_db=DateSerial(anno, mese, giorno)
e, infine, faccio
rs!campo_data = data_per_campo_db
o anche, piů direttamente:
rs!campo_data = DateSerial(anno, mese, giorno)

 data_per_campo_db=DateSerial(anno, mese, giorno)
Sono commosso...
Alberto

 Sono commosso...
Perchè? davvero...

 ha scritto:
ok allora, concludendo: le scrivo come voglio e nel database andranno
memorizzate come numeri,ma
quando interrogo il DB con una query rispetto mm/dd/yyyy
Grazie.



Ricordi il thread più lungo del millennio?
Ciao
Alberto

ma quando interrogo il DB con una query rispetto mm/dd/yyyy
none!!! #mm/dd/yyyy#
E' un pelo diverso!

 Ricordi il thread più lungo del millennio?
ops, non ora, "non ci son su", cercherò! dammi una chiave, p.f....

 E' un pelo diverso!
Era per brevitŕ!
Grazie


 Era per brevitā!
Seeee, abbrevia con la programmazione e vedi che t'accade... ;-)

 ops, non ora, "non ci son su", cercherò! dammi una chiave, p.f....
Alimortis...
Volevo solo dire che mi faceva piacere che tu usassi il DateSerial, visto
che è stato al centro di un dibattito in cui io sostenevo che quella fosse
la modalità giusta.
Ciao
Alberto

 Ricordi il thread più lungo del millennio?
Ahhh, quelli a cui (uno dei due volutamente) non ho partecipato:
http://groups.google.it/groups?hl=it&lr=&ie=ISO-8859-1&q=dateserial+albe+gro
up%3Ait.comp.lang.visual-basic&btnG=Cerca+con+Google
PS: Non riesco a rispondere al tuo post poco più sotto (quello con
Alimortis): OE mi dice "Line too long" e ho visto che hai degli headers
"strani".