2013-10-19 33 views
5

Sto cercando di recuperare ID confrontando dataetimepicker'smonth and year value con la data memorizzata nella colonna del database di tipo Date/Time, Di seguito è la query che sto usando per fare questo ma mi sta mostrando l'errore seguente in questa linea while (rs.Read())errore: Nessun valore assegnato per uno o più parametri richiesti

errore

No value given for one or more required parameters. 

Codice

public int GetDrID_MonthWise(string DrName,int month,int year, int refDrID) 
{ 
    int data = 0; 
    try 
    { 
     string sql = "Select d.DoctorID From Doctor_Master d,Patient_registration p where d.LastName + ' ' + d.FirstName = '" + DrName + "' AND datepart(mm,p.[RegDate])[email protected] AND datepart(yyyy,p.[RegDate])[email protected] AND p.DoctorID=" + refDrID; 
     cmd = new OleDbCommand(sql, acccon); 
     cmd.Parameters.AddWithValue("@month", month); 
     cmd.Parameters.AddWithValue("@year", year); 
     rs = cmd.ExecuteReader(); 
     while (rs.Read()) 
     { 
      data = Convert.ToInt32(rs[0]); 
     } 
    } 
    catch (Exception err) 
    { 
     MessageBox.Show(err.Message.ToString()); 
    } 
    return data; 
} 

Sto passando mese e anno valori come questo, dove sto facendo errore?

int month = dateTimePickerMonth.Value.Month; 
int year = dateTimePickerMonth.Value.Year; 
+0

che dire di altri valori nella parte in cui? Forse DrName o refDrID iniziano con @ – VladL

+0

possibile duplicato http://stackoverflow.com/questions/19197022/getting-error-no-valored-given-for-one-or-more-required-parameters – Coder

risposta

3

c'è errore nella query, si prega di fare come questo,

string sql = "Select d.DoctorID From Doctor_Master d,Patient_registration p where d.LastName + ' ' + d.FirstName = '" + DrName + "' AND datepart("m",p.[RegDate])[email protected] AND datepart("yyyy",p.[RegDate])[email protected] AND p.DoctorID=" + refDrID; 

Nota: Bisogna intervallo di date chiusa con "" in DatePart funzione di accesso ms e solo m unico per mese. Se non hai chiuso yyyy e m con "", il sistema suppone che yyyy m siano parametri e valore atteso per questi parametri.

Se si esegue la query in MS-Aceess visualizzazione SQL allora mostrerà questo messaggio "Enter Paremeter Valore".

enter image description here

1

C'è un errore nella tua ricerca, vedere non v'è alcun pari a firmare per la colonna cognome

where d.LastName + ' ' + d.FirstName = ' 
1

penso che avete bisogno di controllare 3 numeri

  • Controlla questo mese int = dateTimePickerMonth.Value.Month; int year = dateTimePickerMonth.Value.Year; i valori non sono nulli o vuoti

  • La data e l'ora sono un tipo di dati datetime, quindi perché si assegna questo valore in numero intero? Quindi è convertito in un formato diverso.

  • E il tuo valore della colonna d.LastName è nullo, se si dà i valori vuoti, quindi provare questo modo

d.LastName = '"+ string.Empty + " ',.. ..... 

Fare controllare queste condizioni e riprova.

0

o semplicemente fare Correzione nella stringa

sql = "Select d.DoctorID From Doctor_Master d,Patient_registration p where d.LastName + ' ' + d.FirstName = '" + DrName + "' AND Format(p.[RegDate],mm)[email protected] AND Format(p.[RegDate],'yyyy')[email protected] AND p.DoctorID=" + refDrID; 
Problemi correlati