Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Problemi con file .dbf
mercoledì 06 dicembre 2006 - 16.54
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
zucco86
Profilo
| Newbie
34
messaggi | Data Invio:
mer 6 dic 2006 - 16:54
Salve io sto avendo motli problemi con dei file dbf che non si aprono con la connection string ad essi riservata da odbc....secondo me questi file sono danneggiati ma non ne ho la certezza come posso fare per togliermi questo dubbio???
e se sono danneggiati esiste un modo per recuperarli???
Qualcuno può aiutarmi perxhè sto diventando matto....
Grazie
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
ven 8 dic 2006 - 15:23
Se i .dbf sono relativi al formato dbase ti consiglio di provare ad utilizzare il driver di foxpro.
zucco86
Profilo
| Newbie
34
messaggi | Data Invio:
lun 11 dic 2006 - 08:38
Si i file sono di formato dBase IV.
Io ho provato ad utilizzare tutti i driver che mi mette a disposizione ODBC per i dbf e visto che non ce la facevo ad effettuare il collegamento ho provato anche con quelli relativi ai file di visual fox ma niente...probabilmente perchè il file che cerco di aprire è stato salvato male o è danneggiato perchè con tutti gli altri dbf non ho problemi....Tu conosci un modo per poter aprire file danneggiati????perchè ho trovato alcuni programmi con i quali riesco ad aprire il file ed a visualizzare il suo contenuto ma non so a che struttura di programmazione facciano riferimento....puoi aiutarmi???
grazie mille
ciao
sisco22
Profilo
| Newbie
43
messaggi | Data Invio:
lun 11 dic 2006 - 11:53
Ciao, prova qui
http://www.dbf2002.com/
Con questo dovresti riuscire a capire se i file sono rovinati e anche il motore del database di appartenenza.
Francesco Benini
zucco86
Profilo
| Newbie
34
messaggi | Data Invio:
lun 11 dic 2006 - 12:30
hai trovato proprio il programma a cui stavo facendo riferimento
....con questo tipo di programmi riesco ad aprire tutti i file dbf cosa che non riesco a fare con vbnet tramite connessioni ADO,OLEDB,ODBC la cui correttezza è certa perchè per tutti gli altri file queste connessioni funzionano....
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
lun 11 dic 2006 - 13:49
Con tutta probabilità ci sono dei problemi nel tuo programma vbnet (nel senso che non hai impostato correttamente qualche cosa).
Prova ad allegare zippato un miniprogetto con il relativo file dbf che lo verifichiamo.
zucco86
Profilo
| Newbie
34
messaggi | Data Invio:
lun 11 dic 2006 - 15:49
ti ho mandato il tutto via e-mail al tuo indirizzo.
grazie mille
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
lun 11 dic 2006 - 22:01
A me non sembra che ci siano problemi nel leggere dei dati.
Probabilmente l'errore era nella tua stringa di connessione
Questo modulo lo dimostra
Imports System
Imports System.Collections.Generic
Imports System.Data
Imports System.Data.OleDb
Imports System.IO
Imports System.Text
Namespace ProvaDbf
Class MainClass
Public Shared Sub Main(ByVal args As String())
'posizionare il file sulla cartella del .exe
'entrare dal command sulla cartella dell'exe e richiamare l'eseguibile
'passando il nome del file dbf es: myexe.exe myfile.dbf
LeggiDbf(System.Environment.CurrentDirectory, args(0))
End Sub
Public Shared Sub LeggiDbf(ByVal filePath As String, ByVal fileName As String)
Dim cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=dBASE IV;User ID=Admin;Password=")
Dim cmd As New OleDbCommand("SELECT * FROM [" + fileName + "]", cn)
cn.Open()
Dim dr As OleDbDataReader = cmd.ExecuteReader()
Dim wr As New StreamWriter("output.csv")
Dim primo As Boolean = True
Dim sb As StringBuilder
Dim c As Char = Chr(9)
While dr.Read()
If primo Then
sb = New StringBuilder()
For k As Integer = 0 To dr.FieldCount - 1
sb.Append(dr.GetName(k))
If k + 1 <> dr.FieldCount Then
sb.Append(c)
End If
Next
primo = False
wr.WriteLine(sb.ToString())
End If
sb = New StringBuilder()
For k As Integer = 0 To dr.FieldCount - 1
sb.Append(dr(k))
If k + 1 <> dr.FieldCount Then
sb.Append(c)
End If
Next
wr.WriteLine(sb.ToString())
End While
dr.Close()
wr.Close()
cn.Close()
End Sub
End Class
End Namespace
zucco86
Profilo
| Newbie
34
messaggi | Data Invio:
mer 13 dic 2006 - 11:21
guarda ho provato il tuo codice e ho notato che usiamo la stessa stringa di connessione o quasi quindi evidentemente anche il mio metodo era corretto...
però i problemi mi rimangono quando provo ad aprire i file bol_a.dbf,articor.dbf e coneuro.dbf.
ps:grazie per avermi risolto il problema delle intestazioni delle colonne
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
gio 14 dic 2006 - 00:07
Aprendolo in binario magari si poteva leggere la firma.
Quello che faceva andare in errore il programma è che i file .dbf da te citati (ho provato su coneuro.dbf) erano in formato foxpro 3.
Ho aperto il file e applicato il comando:
COPY TO pippo.dbf TYPE FOXPLUS
e ho ottenuto un file dbaseIV che è apribile da programma
zucco86
Profilo
| Newbie
34
messaggi | Data Invio:
gio 14 dic 2006 - 09:14
potresti mandarmi le istruzioni che hai eseguito per convertire la tabella perchè non ho capito molto bene il tuo procedimento perchè non ho afferrato se i la conversione la fai via codice o "a mano" con qualche programma...
Grazie
zucco86
Profilo
| Newbie
34
messaggi | Data Invio:
gio 14 dic 2006 - 09:32
io sto provando a farlo via codice ma non sto ottenendo risultati in quanto quando cerco di eseguire il comando con le istruzioni di copia mi genera un errore.
Dim cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=dBASE IV;User ID=Admin;Password=")
Dim cmd As New OleDbCommand("SELECT * FROM [" + fileName + "]", cn)
Dim cmdCopy As New OleDbCommand("COPY [" + fileName + "] TO pippo.dbf TYPE FOXPLUS", cn)
cn.Open()
cmdCopy.ExecuteNonQuery() 'sull'esecuzione di quest'ultima mi viene generata questa eccezione:
Eccezione non gestita di tipo "System.Data.OleDb.OleDbException" in system.data.dll
come posso fare???
zucco86
Profilo
| Newbie
34
messaggi | Data Invio:
gio 14 dic 2006 - 12:41
ho fatto varie prove anke con la classe File ma non riesco a convertirlo nel formato FoxPlus in quanto non ne conosco l'estensione...
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
gio 14 dic 2006 - 13:49
Quello che non ti ho detto è che ho aperto i files con foxpro e poi da lì ho dato il comando
sisco22
Profilo
| Newbie
43
messaggi | Data Invio:
ven 15 dic 2006 - 09:07
Ciao
Se avete stabilito che sono file di Fox dovete installare OLE DB Provider for Visual FoxPro 9.0
http://www.microsoft.com/downloads/details.aspx?FamilyId=E1A87D8F-2D58-491F-A0FA-95A3289C5FD4&displaylang=en
e poi usare nella stringa di connessione Provider=VFPOLEDB.1
dovrebbe funzionare...
Francesco Benini
zucco86
Profilo
| Newbie
34
messaggi | Data Invio:
ven 22 dic 2006 - 15:47
I Driver di visual fox mi hanno aiutato x la maggior parte dei file che non riuscivo ad aprire ma non per tutti ahime....
ed ho notato che questi file non riesco a leggerli con il metodo READ del costruttore oledbdatareader
Avete idea di come posso arginare questo problema???
Grazi mille e Auguri di buone feste a tutti
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
sab 23 dic 2006 - 18:16
Ti consiglio di aprire i file con Foxpro e a salvarli in altro file
Torna su
Stanze Forum
Elenco Threads
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 !