Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - SQL TO LINQ C#
Forum - C# / VB.NET - SQL TO LINQ C#

Avatar
criscap1985 (Normal User)
Newbie


Messaggi: 11
Iscritto: 15/04/2014

Segnala al moderatore
Postato alle 11:46
Venerdì, 18/04/2014
Salve,
avrei bisogno di una mano per convertire questo benedetto datediff:

Codice sorgente - presumibilmente VB.NET

  1. CommandText := 'SET dateFORMAT dmy SELECT DISTINCT PIN,SIA FROM MODULI WHERE '
  2.         + 'datediff(day, convert(datetime, cast('01/01/1990' as datetime), 103), convert(datetime, DATA_RICHIESTA, 103)) >= 0 AND '
  3.         + 'datediff(day, convert(datetime, cast(' + Data('DATA_RICHIESTA_A') + ' as datetime), 103), convert(datetime, DATA_RICHIESTA, 103)) <= 0 AND '
  4.         + 'datediff(day, convert(datetime, cast(' + Data('DATA_VERSAMENTO_DA') + ' as datetime), 103), convert(datetime, DATA_VERSAMENTO, 103)) >= 0 AND '
  5.         + 'datediff(day, convert(datetime, cast(' + Data('DATA_VERSAMENTO_A') + ' as datetime), 103), convert(datetime, DATA_VERSAMENTO, 103)) <= 0 '
  6.  
  7.       //non considero tuttele deleghe  annullate con STATO = A della giornata
  8.       + ' AND STATO = ' + QuotedStr('R')
  9.  
  10.       + ' ORDER BY  PIN,SIA';



DATA_RICHIESTA ,DATA_VERSAMENTO => campi letti dal db in sql server
DATA_RICHIESTA_DA, DATA_RICHIESTA_A, DATA_VERSAMENTO_DA, DATA_VERSAMENTO_A => campi letti  dall'app.config

Ho provato a fare così :

Codice sorgente - presumibilmente C# / VB.NET

  1. var moduli = from db in contestoDB.MODULI
  2. where ...... && STATO = "R"
  3. orderby db.PIN, db.SIA
  4. select new {
  5.    db.PIN,
  6.    db.SIA
  7. };
  8.  
  9. moduli = moduli.Distinct();



Ma non so dove sbattere la testa!

Grazie



PM Quote
Avatar
sps84 (Normal User)
Expert


Messaggi: 202
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 18:25
Domenica, 20/04/2014
Nella calusola where cosa dovresti verificare?

PM Quote
Avatar
criscap1985 (Normal User)
Newbie


Messaggi: 11
Iscritto: 15/04/2014

Segnala al moderatore
Postato alle 7:42
Martedì, 22/04/2014
:hail: qualcuno risponde... se no mi sembrava un cimitero. Allora in pratica funziona così :

Dato un file ini contenente :

DATA_RICHIESTA_DA (in questo caso ci ho messo direttamente il valore della data ossia 01/01/1990 per provarlo)
DATA_RICHIESTA_A = datamax 31/12/2999

DATA_VERSAMENTO_DA

DATA_VERSAMENTO_A

le leggo tramite la funzione Data('*data*').

E nel mio db ho un elenco di moduli in cui compare sia la data di richiesta e versamento da a .... quindi mi sembra di aver capito che sta confrontando che la differenza tra le date richieste sia >=, <= 0. Per cui come posso trasformare tale istruzione sql in linq tenendo conto che la variabile importante è Data('DATA_RICHIESTA_* etc..') perchè ogni volta che faccio l'istruzione linq leggo dal file direttamente.

PM Quote
Avatar
sps84 (Normal User)
Expert


Messaggi: 202
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 12:45
Martedì, 22/04/2014
Rispondo non conoscendo la struttura esatta della tabella:

DateTime DATA_RICHIESTA_DA = Data("DATA_RICHIESTA_DA");

DateTime DATA_RICHIESTA_A = Data("DATA_RICHIESTA_A");

var query = from db in contestoDB.MODULI
where
db.DATA_RICHIESTA.Day >= 0
&& db.DATA_RICHIESTA.Day <= 0
&& db.DATA_VERSAMENTO.Day >= 0
&& db.DATA_VERSAMENTO.Day <= 0
&& STATO = "R"
orderby db.PIN, db.SIA
select new {
   db.PIN,
   db.SIA
};

Al limite dato che quasi sicuramente non funzionerà prova qualche tool online per convertire query sql in linq cerca con google.

PM Quote
Avatar
criscap1985 (Normal User)
Newbie


Messaggi: 11
Iscritto: 15/04/2014

Segnala al moderatore
Postato alle 14:39
Martedì, 22/04/2014
Ciao sps84,
io ho provato a fare così :

Codice sorgente - presumibilmente C# / VB.NET

  1. var datiModuli = from db in contestoDB.MODULI
  2.                                  where (((db.DATA_RICHIESTA - Convert.ToDateTime(GetDataByTipo("DRDA"))).TotalDays >= 0) &&
  3.                                        ((db.DATA_RICHIESTA - Convert.ToDateTime(GetDataByTipo("DRA"))).TotalDays <= 0) &&
  4.                                        ((db.DATA_VERSAMENTO - Convert.ToDateTime(GetDataByTipo("DVDA"))).TotalDays >= 0) &&
  5.                                        ((db.DATA_VERSAMENTO - Convert.ToDateTime(GetDataByTipo("DVA"))).TotalDays <= 0) &&
  6.                                        db.STATO == 'R')
  7.                                  orderby db.PIN, db.SIA
  8.                                  select new
  9.                                  {
  10.                                      db.PIN,
  11.                                      db.SIA
  12.                                  };
  13.  
  14.                 datiModuli = datiModuli.Distinct();



Non so se va bene. Cmq il Delhpi è da killare!

PM Quote
Avatar
sps84 (Normal User)
Expert


Messaggi: 202
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 14:45
Martedì, 22/04/2014
scusami ma come fai a vedere se non va bene? Puoi provarlo il codice?

PM Quote
Avatar
criscap1985 (Normal User)
Newbie


Messaggi: 11
Iscritto: 15/04/2014

Segnala al moderatore
Postato alle 17:05
Martedì, 22/04/2014
Vorrei provare prima il codice in delphi per vedere che risultato dà facendo il debugging ma non conoscendo un compilatore per quel maledetto linguaggio delphi che sia.....non posso capire se il risultato è quello corretto no? Il problema è che sto convertendo un progetto di ben 13 anni fa... in c#.
Conosco il c# come le mie tasche ma il Delphi è proprio :grr:

PM Quote
Avatar
sps84 (Normal User)
Expert


Messaggi: 202
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 20:22
Martedì, 22/04/2014
se magari posti il codice qualcuno può aiutarti

PM Quote
Avatar
criscap1985 (Normal User)
Newbie


Messaggi: 11
Iscritto: 15/04/2014

Segnala al moderatore
Postato alle 21:17
Martedì, 22/04/2014
Allora eccoti il maledetto codice delphi in questo link : http://www.pierotofy.it/pages/extras/forum/171/1051030-del ...

PM Quote