Newsgroup: it.comp.lang.visual-basic
Titolo: query funzionante su access ma non con ado

ciao,
premesso che il prog. è in vb6 ed uso come db access e sono connessa
usando Ado ho delle query che presa la query dall'immediate prima di
eseguirla e fatta girare direttamente sul db di access funziona
perfettamente ma se la faccio eseguire al programma mi da questo
errore:
No value given for one or more required parameters
sapete darmi qualche consiglio?
grazie,kat

 sapete darmi qualche consiglio?
Forse postare la query incriminata?
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
Se i tempi non chiedono la tua parte migliore, inventa altri tempi. 
(Baolian, libro II, vv. 16-17)
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

ok, è questa:
   SELECT       #2004/09/07# AS ReportStartDate, #2005/10/29#  AS
ReportFinishDate,
                      tbMachStats.MachineID, tbMachStats.SerialNumber,
tbMachStats.CodProductfamily, tbMachStats.ProductfamilyDesc,
                      tbMachStats.CodModel,
tbMachStats.ModelDescription, tbMachStats.MachineInit,
tbMachStats.MachineEnd,
                      tbInvoStats.CodInvoiceNumber,
tbInvoStats.DateInit, tbInvoStats.DateEnd, tbInvoStats.Contract,
                      tbInvoStats.CodCustomer,
tbInvoStats.CustomerName, tbInvoStats.CodCustomerFor,
                      tbInvoStats.ContractLine, tbInvoStats.PriceRange,
tbInvoStats.Description,
    iif( (iif((#2004/09/07#) is null, tbInvoStats.DateInit, FromDate) =
tbInvoStats.DateInit AND iif((#2005/10/29#)is null,
tbInvoStats.DateEnd,ToDate) = tbInvoStats.DateEnd) , tbInvoStats.Price
, tbInvoStats.Price * ((DATEDIFF('d', iif((#2004/09/07# >
tbInvoStats.DateInit) , #2004/09/07# , tbInvoStats.DateInit ), iif(
(#2005/10/29# < tbInvoStats.DateEnd) , #2005/10/29# ,
tbInvoStats.DateEnd ) + 1)) / ((DATEDIFF('d', tbInvoStats.DateInit,
tbInvoStats.DateEnd + 1)) )) ) AS Price,
    iif( (iif((#2004/09/07#) is null, tbInvoStats.DateInit, FromDate) =
tbInvoStats.DateInit AND iif((#2005/10/29#)is null,
tbInvoStats.DateEnd,ToDate) = tbInvoStats.DateEnd) ,
tbInvoStats.NetAmount , tbInvoStats.NetAmount * ((DATEDIFF('d',
iif((#2004/09/07# > tbInvoStats.DateInit) , #2004/09/07# ,
tbInvoStats.DateInit ), iif( (#2005/10/29# < tbInvoStats.DateEnd) ,
#2005/10/29# , tbInvoStats.DateEnd ) + 1)) / ((DATEDIFF('d',
tbInvoStats.DateInit, tbInvoStats.DateEnd + 1)) )) ) AS NetAmount,
    iif( (iif((#2004/09/07#) is null, tbInvoStats.DateInit, FromDate) =
tbInvoStats.DateInit AND iif((#2005/10/29#)is null,
tbInvoStats.DateEnd,ToDate) = tbInvoStats.DateEnd) , (tbInvoStats.Price
- tbInvoStats.NetAmount) , (tbInvoStats.Price - tbInvoStats.NetAmount)
* ((DATEDIFF('d', iif((#2004/09/07# > tbInvoStats.DateInit) ,
#2004/09/07# , tbInvoStats.DateInit ), iif( (#2005/10/29# <
tbInvoStats.DateEnd) , #2005/10/29# , tbInvoStats.DateEnd ) + 1)) /
((DATEDIFF('d', tbInvoStats.DateInit, tbInvoStats.DateEnd + 1)) )) ) AS
DiscountValue,
    tbInvoStats.DiscountFor
FROM        ((SELECT     tbMachineID.CodCompany,
                                  tbMachineID.MachineID,
tbMachineID.SerialNumber, tbMachineID.CodProductfamily,
tbProductFamily.ProductfamilyDesc,
                                  tbMachineID.CodModel,
tbModel.ModelDescription, tbMachineID.DateInit AS MachineInit,
tbMachineID.DateEnd AS MachineEnd
            FROM      (( tbMachineID
                               INNER JOIN
                                  tbModel ON tbMachineID.CodCompany =
tbModel.CodCompany AND tbMachineID.CodModel = tbModel.CodModel)
                         INNER JOIN
                                  tbProductFamily ON
tbMachineID.CodCompany = tbProductFamily.CodCompany AND
                                  tbMachineID.CodProductfamily =
tbProductFamily.CodProductfamily AND
                                  tbModel.CodCompany =
tbProductFamily.CodCompany AND
                                  tbModel.CodProductFamily =
tbProductFamily.CodProductfamily)
            WHERE        (tbMachineID.CodCompany = '1')
                                  AND (tbMachineID.CodProductfamily =
Null OR Null IS Null)
                                  AND (tbMachineID.CodModel = Null OR
Null IS Null)
                                  AND (tbMachineID.SerialNumber = Null
OR Null IS Null)) AS tbMachStats
            LEFT OUTER JOIN
            (SELECT     tbInvoiceLines.CodCompany AS CodCompanyInvo,
tbInvoiceLines.MachineID AS MachineIDInvo, tbInvoiceLines.TypeOfPeriod,
tbInvoiceLines.NumOfPeriod,
                                  tbInvoices.CodInvoiceNumber,
tbInvoices.DateInit, tbInvoices.DateEnd, tbInvoiceLines.Contract,
tbInvoiceLines.ContractLine, tbInvoices.CodCustomer,
                                  tbCustomers.CustomerName,
tbCustomers.CodCustomerFor, tbInvoiceLines.PriceRange,
tbPriceRange.Description, tbInvoiceLines.Price,
                                  tbInvoiceLines.NetAmount,
(tbInvoiceLines.Price - tbInvoiceLines.NetAmount) AS DiscountValue,
tbInvoiceLines.DiscountFor
            FROM      (((tbCustomers
                               INNER JOIN
                                  tbInvoices ON tbCustomers.CodCompany
= tbInvoices.CodCompany
                                  AND tbCustomers.CodCustomer =
tbInvoices.CodCustomer )
                         INNER JOIN
                                  tbInvoiceLines ON
tbInvoices.CodCompany = tbInvoiceLines.CodCompany AND
                                  tbInvoices.CodInvoiceNumber =
tbInvoiceLines.CodInvoiceNumber )
                         INNER JOIN
                                  tbPriceRange ON
tbInvoiceLines.CodCompany = tbPriceRange.CodCompany
                                  AND tbInvoiceLines.PriceRange =
tbPriceRange.PriceRange)
            WHERE        (tbInvoices.CodCompany = '1')
                                  AND (tbInvoices.CodInvoiceNumber =
Null OR Null IS Null)
                                  AND (((tbInvoices.DateInit >=
#2004/09/07# OR #2004/09/07# IS Null) AND (tbInvoices.DateInit <=
#2005/10/29# OR #2005/10/29# IS Null))
                                    OR ((tbInvoices.DateEnd >=
#2004/09/07# OR #2004/09/07# IS Null) AND (tbInvoices.DateEnd <=
#2005/10/29# OR #2005/10/29# IS Null))
                                    OR ((tbInvoices.DateInit <
#2004/09/07# OR #2004/09/07# IS Null) AND (tbInvoices.DateEnd >
#2004/09/07# OR #2004/09/07# IS Null)))
                                  AND (tbInvoices.CodCustomer = Null OR
Null IS Null)
                                  AND (tbInvoiceLines.PriceRange = Null
OR Null IS Null)
                                  AND (tbInvoiceLines.CodItem IS NULL))
AS tbInvoStats
            ON tbMachStats.CodCompany = tbInvoStats.CodCompanyInvo
                      AND tbMachStats.MachineID =
tbInvoStats.MachineIDInvo)
ORDER BY tbMachStats.ProductfamilyDesc, tbMachStats.ModelDescription,
tbMachStats.SerialNumber,
     tbInvoStats.CodInvoiceNumber, tbInvoStats.ContractLine
ciao,kat

 ok, è questa:
FromDate da che tabella viene letto?
Alberto
-- 
Si è visto di meglio,
ma si è scopato di peggio,
qualche volta a pago
e non erano neanche sempre donne
[Paolo]

 ok, č questa:
(cut)
Va bene, mi hai fregato, e ci sono cascato come un pollo...
ma potresti spiegarmi questa condizione, e quelle simili che si ripetono
piů volte?
AND (tbInvoices.CodCustomer = Null OR Null IS Null)
-- 


 ha scritto nel messaggio
news:1130503115.3...@f14g2000cwb.googlegroups.com...

Prova a postare il testo di una delle query...
Bye
Raf

grazie, mi ha fatto capire il prob. era proprio in FromDate
ciao,kat

mi ero illusa che fosse la causa del mancato funzionamento di un'altra
query simile ed approfitto di voi cosa può essere:
SELECT   #2005/02/07#  AS ReportStartDate, #2005/10/28# AS
ReportFinishDate,
         DATEDIFF('m', #2005/02/07#, #2005/10/28#  + 1) AS
ReportNumOfMonth,
         MonthStartDate, MonthFinishDate, MonthNumber,
         tbMachStats.MachineID, tbMachStats.SerialNumber,
tbMachStats.CodProductfamily, tbMachStats.ProductfamilyDesc,
         tbMachStats.CodModel, tbMachStats.ModelDescription,
tbMachStats.MachineInit, tbMachStats.MachineEnd,
         tbInvoStats.CodInvoiceNumber, tbInvoStats.DateInit,
tbInvoStats.DateEnd, tbInvoStats.Contract,
         tbInvoStats.CodCustomer, tbInvoStats.CustomerName,
tbInvoStats.CodCustomerFor,
         MAX(tbInvoStats.ContractLine) AS ContractLine,
MAX(tbInvoStats.PriceRange) AS PriceRange,
         MAX(tbInvoStats.Description) AS Description,
         SUM(tbInvoStats.Price *
             iif ( (        DATEDIFF  ('d', iif ( (MonthStartDate >
tbInvoStats.DateInit ) ,
                                                         MonthStartDate
,
tbInvoStats.DateInit
                                                      ),
                                                  iif( (MonthFinishDate
< tbInvoStats.DateEnd) ,
                                                        MonthFinishDate
,
tbInvoStats.DateEnd
                                                     ) + 1
                                             )  < 0
                           ) ,
                           0  ,
                           DATEDIFF('d', iif( (MonthStartDate >
tbInvoStats.DateInit) ,
MonthStartDate ,
tbInvoStats.DateInit
                                            ),
                                              iif( (MonthFinishDate <
tbInvoStats.DateEnd) ,
                                                    MonthFinishDate ,
                                                    tbInvoStats.DateEnd
                                                  ) + 1
                                    )
                 ) /  DATEDIFF('d', tbInvoStats.DateInit,
tbInvoStats.DateEnd + 1)
               ) AS Price,
         SUM(tbInvoStats.NetAmount * iif(  (DATEDIFF('d',
iif((MonthStartDate > tbInvoStats.DateInit) ,
   MonthStartDate ,
   tbInvoStats.DateInit
                                                                     ),
iif( (MonthFinishDate < tbInvoStats.DateEnd) ,
    MonthFinishDate ,
    tbInvoStats.DateEnd
  ) + 1
                                                             )  < 0
                                            ) ,
                                            0  ,
                                            DATEDIFF('d', iif(
(MonthStartDate > tbInvoStats.DateInit) ,
MonthStartDate ,
tbInvoStats.DateInit
                                                               ),
                                                               iif(
(MonthFinishDate < tbInvoStats.DateEnd) ,
MonthFinishDate ,
tbInvoStats.DateEnd
                                                                   ) +
1
                                                      )
                                              ) / DATEDIFF('d',
tbInvoStats.DateInit, tbInvoStats.DateEnd + 1)
             ) AS NetAmount,
         SUM((tbInvoStats.Price - tbInvoStats.NetAmount) *
              iif( (DATEDIFF('d', iif( (MonthStartDate >
tbInvoStats.DateInit) ,
                                            MonthStartDate ,
                                            tbInvoStats.DateInit
                                           ),
                                    iif( (MonthFinishDate <
tbInvoStats.DateEnd) ,
                                          MonthFinishDate ,
                                          tbInvoStats.DateEnd
                                       ) + 1
                              )  < 0
                     ) ,
                    0  ,
                    DATEDIFF('d', iif( (MonthStartDate >
tbInvoStats.DateInit) ,
                                              MonthStartDate ,
                                              tbInvoStats.DateInit
                                           ),
                                       iif( (MonthFinishDate <
tbInvoStats.DateEnd) ,
                                             MonthFinishDate ,
                                             tbInvoStats.DateEnd
                                           ) + 1
                              )
                   ) / DATEDIFF('d', tbInvoStats.DateInit,
tbInvoStats.DateEnd + 1)
              ) AS DiscountValue,
         MAX(tbInvoStats.DiscountFor) AS DiscountFor
         ,  iif( (MAX(tbCostMachineID.CostValue))is null,
MAX(ValueMachine), MAX(tbCostMachineID.CostValue)) AS PurchaseCost
FROM ( (  (  (  (SELECT     tbMachineID.CodCompany,

            INNER JOIN

#2005/02/07# OR #2005/02/07# IS Null) AND (tbInvoices.DateInit <=
#2005/10/28# OR #2005/10/28# IS Null))
                                    OR ((tbInvoices.DateEnd >=
#2005/02/07# OR #2005/02/07# IS Null) AND (tbInvoices.DateEnd <=
#2005/10/28# OR #2005/10/28# IS Null))
                                    OR ((tbInvoices.DateInit <
#2005/02/07# OR #2005/02/07# IS Null) AND (tbInvoices.DateEnd >
#2005/02/07# OR #2005/02/07# IS Null)))
                                  AND (tbInvoices.CodCustomer = Null OR
Null IS Null)
                                  AND (tbInvoiceLines.PriceRange = Null
OR Null IS Null)
                                  AND (tbInvoiceLines.CodItem IS NULL)
                ) AS tbInvoStats
               ON tbMachStats.CodCompany = tbInvoStats.CodCompanyInvo
                      AND tbMachStats.MachineID =
tbInvoStats.MachineIDInvo
             )
             LEFT OUTER JOIN
                (SELECT * FROM tbCosts
                   WHERE (CodCostType =
                             (SELECT CodCostType FROM tbCostType
                              WHERE Description LIKE
                                (SELECT 'Acquisto Macchina' FROM
tbParameter
                                 WHERE TypeParameter =
'TableLockMinutes')
                             )
                          )
                ) AS tbCostMachineID
                ON tbMachStats.CodCompany = tbCostMachineID.CodCompany
               AND tbMachStats.MachineID = tbCostMachineID.MachineID
             )
             LEFT OUTER JOIN tbValueMachineId
              ON tbMachStats.CodCompany = tbValueMachineId.CodCompany
              AND tbMachStats.MachineID = tbValueMachineId.MachineID
         )
    INNER JOIN tbActualMonths ON tbMachStats.CodCompany =
tbActualMonths.CodCompany)
WHERE (((MonthStartDate >= #2005/02/07# OR #2005/02/07# IS Null) AND
(MonthStartDate <= #2005/10/28# OR #2005/10/28# IS Null))
    OR ((MonthFinishDate >= #2005/02/07# OR #2005/02/07# IS Null) AND
(MonthFinishDate <= #2005/10/28# OR #2005/10/28# IS Null)))
GROUP BY
    MonthStartDate, MonthFinishDate, MonthNumber,
                      tbMachStats.MachineID, tbMachStats.SerialNumber,
tbMachStats.CodProductfamily, tbMachStats.ProductfamilyDesc,
                      tbMachStats.CodModel,
tbMachStats.ModelDescription, tbMachStats.MachineInit,
tbMachStats.MachineEnd,
                      tbInvoStats.CodInvoiceNumber,
tbInvoStats.DateInit, tbInvoStats.DateEnd, tbInvoStats.Contract,
                      tbInvoStats.CodCustomer,
tbInvoStats.CustomerName, tbInvoStats.CodCustomerFor
HAVING (tbInvoStats.DateInit <= MonthFinishDate AND
tbInvoStats.DateInit >= MonthStartDate)
   OR (tbInvoStats.DateEnd >= MonthStartDate AND tbInvoStats.DateEnd <=
MonthFinishDate)
ORDER BY tbMachStats.ProductfamilyDesc, tbMachStats.ModelDescription,
tbMachStats.SerialNumber,
    tbActualMonths.MonthStartDate, tbInvoStats.DateInit

km...@interfree.it
 wrote:
Penso che meriti il guinness; ma vista una query cosi lunga.
--
Greg

 AND (tbInvoices.CodCustomer = Null OR Null IS Null)
Sicuro che sbaglio, ma mi par di capire che ci deve essere un campo che si
chiama Null. Ma non può essere...
--
Greg

 query simile ed approfitto di voi cosa può essere:
A parte la punteggiatura inesistente, dovresti anche dire quale 
'malfunzionamento' ottieni.
Se l'errore è lo stesso di prima, presumo che quei parametri di inizio 
e fine vadano verificati.
Io, comunque, le date in Access le scriverei in altro modo.
Ciao



No, le date in Access così sono corrette.
Le scrivo così anch'io per evitare di confondermi quando leggo il codice.
Ciao
--
Reporting tool: 
http://www.neodatatype.net

 Le scrivo così anch'io per evitare di confondermi quando leggo il codice.
Si, capisco.
Però, se usi le query salvate in Access (quelle che possiamo anche 
chiamare 'viste'), se scrivi una data come fai tu, salvi, chiudi, 
quando riapri te la ritrovi prillata in mm/dd/yyyy.
Al che tu fai una modifica e usi il formato (più logico, concordo) 
yyyy/mm/dd, e ti ritrovi nella stessa query due cose identiche scritte 
in modo diverso. Poi salvi, e si riprilla anche la nuova data.
E siccome io le query non le scrivo mai in VB, ma nelle finestrelle di 
un client SQL del dbms, dove mi arrogo il diritto di salvare e riaprire 
n volte, e solo a query perfetta faccio il copiaincolla in VB, trovo 
più pratico adeguarmi ai cazzi suoi.
Morale: non so bene perchè, e lo trovo anche stupido, ma evidentemente 
Access vuole le date in mm/dd/yyyy, per cui, anche senza pensarci 
troppo, mi sono sempre adeguato.
Comunque adesso opero solo attraverso stored procedure, per cui di 
codice Sql in vb non se ne vede più...


io le query non le ho scritta sul codice ma in un file xml per
facilitare le correzioni delle query senza toccare il codice.
il null is null è dovuto al fatto che il null è un valore che gli
passa il codice.
l'errore che mi da è : No value given for one or more required
parameters 
ciao e grazie, kat

 parameters 
Allora il problema è quello che ti ho già detto.
Ma tu hai scritto: "mi ero illusa che fosse la causa del mancato 
funzionamento di un'altra query simile", per cui immaginavo tu avessi 
già controllato.
I parametri mancanti te li ho già indicati.


[...CUT...]
...."prillata"...?
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ...."prillata"...?
Prileer: girare (tr.)


 Prileer: girare (tr.)
Ah, grazie, non conosco il valdostano...


ho provato a modificare la formattazione della data ma non cambia nulla

 ho provato a modificare la formattazione della data ma non cambia nulla
Ovvio.
Si stava discutendo di questo dettaglio della formattazione, giusto 
pour parler.
Ma il tuo problema è quello di cui ti parlavo qualche post prima.
Ciao
