Problemino con datatabase access

mercoledì 26 gennaio 2011 - 18.03

ste.chi Profilo | Newbie

Ciao Raga ho un problemino per me non indifferente devo leggere dei dati tramite una kiave che è composta in questa maniera 26-01-201116.10.00 ma il net mi restituisce un errore perchè si ferma al punto
questo è il codice che uso potete aiutarmi GRAZIE .....!!!!!!


Dim dbConn_DISTINTA = New System.Data.OleDb.OleDbConnection()
Dim da_DISTINTA As New OleDbDataAdapter
Dim ds_DISTINTA As New DataSet

dbConn_DISTINTA.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = " & sValue & "\FASI.MDB"

dbConn_DISTINTA.Open()
Dim strSELECT_DISTINTA As String

strSELECT_DISTINTA = "SELECT * FROM TABCOST WHERE KCOST = '20-10-198518.11.23'"
da_DISTINTA = New OleDbDataAdapter(strSELECT_DISTINTA, dbConn_DISTINTA)
ds_DISTINTA = New DataSet(strSELECT_DISTINTA)

da_DISTINTA.Fill(ds_DISTINTA, strSELECT_DISTINTA)


DataGridView1.DataSource = ds_DISTINTA
DataGridView1.DataMember = strSELECT_DISTINTA

freeteo Profilo | Guru

Ciao,
in che senso "...si ferma al punto" ?
Potrebbe essere un problema di tipo di campo, cos'è una stringa quel campo chiave dove fai la ricerca?

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

ste.chi Profilo | Newbie

Cerco di spiegarti allora
quando io faccio una SELECT ad esempio
strSELECT_DISTINTA = "SELECT KIAVE,KFASI,FASE,ADDETTI,MATERIALI,PRODOTTI,CONTROLLI,TEMPOFASE FROM TABCOST WHERE kcost = '" & ds_cicli.Tables(0).Rows(IDR).Item("KIAVE") & "' ORDER BY POSIZIONE"
dove ds_cicli.Tables(0).Rows(IDR).Item("KIAVE") è una chiave generata in questa maniera gg-mm-yyyy HH:mm:ss però quando eseguo la select mi visualizza questo messaggio

496x213 42Kb

ma non capisco perchè
puoi darmi una mano altrimenti devo fare tutta una procedura che converte tutti i dati del mio programma (UN CASINO)
GRAZIE


freeteo Profilo | Guru

Ciao,
ma non capisco cosa voglia dire quel messaggio "elementi figlio"? Stai facendo una query su Excel per caso?
Riesci a postare la stringa di connessione?

Ad ogni modo forse sbaglia la creazione della stringa di query, magari c'è un apice in più piuttosto che effettivamente il "." gli dia fastidio...potresti anche provare ad usare i parametri che sarebbe il modo migliore di creare stringhe sql, senza fare tutto sulla stringa stessa.
Qualcsoa come:
SELECT -... FROM ... WHERE campo=?
poi nel command gli aggiungi il parametro, con il valore:
tuoCommand.Parameters.Add(new OleDbParameter....))

Grazie.
Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

ste.chi Profilo | Newbie

Ho controllato la correttezza della stringa ma quella è corretta, perchè se al postodi scrivere il valore senza punti la select funziona

strSELECT_DISTINTA = "SELECT * FROM TABCOST WHERE KCOST = '20-10-198518.11.23'"

potresti farmi un esempio con il tuo metodo grazie

freeteo Profilo | Guru

Ciao,
ti scrivo un pezzo di codice che uso da anni per accedere ad access, e non ho mai avuto problemi, spero che funzioni anche da te, altrimenti prova ad inviarmi il database su cui provo a fare qualche test anche io.
Ecco qui:


... DataTable table = new DataTable(); using (DbConnection cn = GetConnection()) { DbCommand cmd = cn.CreateCommand(); cmd.CommandText = "SELECT * FROM TABCOST WHERE KCOST=@campo"; //--- parametri DbParameter par = GetParameter("campo", "20-10-198518.11.23"); cmd.Parameters.Add(par); cn.Open(); DbDataReader rd = cmd.ExecuteReader(); //....io qui riempio una collection di oggetti // ma puoi usare anche la DataTable table.Load(rd); } ...

Dove i 2 metodi di appoggio sono:

public static DbConnection GetConnection() { return new OleDbConnection("...connectionstring..."); } public static DbParameter GetParameter(string nome, object valore) { DbParameter par = new OleDbParameter(); par.ParameterName = nome; object val = valore; if (valore == null) val = DBNull.Value; //--- attenzione alle date per access, il parametro deve essere fatto cosi' if (valore is DateTime) val = ((DateTime)valore).ToString("dd/MM/yyyy HH:mm:ss"); par.Value = val; return par; }

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

ste.chi Profilo | Newbie

ok ora provo perchè probabilmente tu usi C++ io uso Vb provo a convertire il codice e ti faccio sapere se in alternativa mi sai fare anche un esempio in vb meglio
grazie

freeteo Profilo | Guru

Ciao,
io uso C#, se vuoi provare con il convertitore automatico è abbastanza affidabile:
http://www.carlosag.net/Tools/CodeTranslator/

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
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