Newsgroup: it.comp.lang.visual-basic
Titolo: Visual Basic .NET - ADO .NET - SQL Server

ciao a tutti, ho un paio di problemi con il mio programma di Visual
Basic .NET. PRIMO
Mi trovo nella necessità di acquisire dei dati in formato .dbf. Nella
mia vecchia procedura (scritta in VBA all'interno di un database
Access 97) non avevo nessun problema: collegavo le tabelle dbf
incriminate e le scorrevo come quelle proprietarie ma ora come posso
fare?
In ADO .NET non ho trovato niente che mi consenta di collegare le
tabelle al mio db di SQL Server e tantomeno in Visual Basic .NET....
E' possibile? Ovviamente io devo pilotare tutto da codice
(collegamento delle tabelle dbf).
SECONDO 
come posso fare, sempre da codice, a creare un database sql di cui
conosco struttura e numero tabelle (memorizzate all'interno di un
secondo db SQL denominato da me "sistema")?
Vi ringrazio in anticipo.
Ciao

...

Allora il primo problema l'ho risolto nel seguente modo:
        Dim StartUpOledbConnection As New OleDbConnection()
        GlStringaConnessione = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=E:\OpenStartUp\ICI\SIGAI;Extended Properties=DBASE IV;Persist
Security Info=False " + PercorsoFile
        StartUpOledbConnection.ConnectionString = GlStringaConnessione
        Dim cmdp As New OleDbCommand()
        Dim Drp As OleDbDataReader
        cmdp .CommandType = CommandType.TableDirect
        cmdp .CommandText = "pippo.DBF"
        cmdp .Connection = StartUpOledbConnection
.....
ma c'è la possibilità di puntare direttamente alla tabella perchè se
io in percorso file metto invece che C:\ --> C:\pippo.dbf mi da
errore...
mentre per il secondo problema niente soluzione per il momento........
Rigrazie a tutti

 
Ho dovuto modificare la mia idea iniziale, probabilmente non avrò più
un database di sistema con all'interno una tabella contenente la
struttura del mio database da creare ma forse posso fare una copia
(sempre da codice) di uno vuoto già esistente.... Ma come si fa?
Grazie
Giulia

 Giulia
Lato Ide
Vai sul Database da Esplora Server e crea uno script di creazione
lo apri nell'ambiente.Come usarlo?Hai due possibilità
a manina
Implementi una routin di generazione,semplice
semi-manina
C'è la possibilità di creare un progetto Database
lo trovi in Altri progetti dal Wizard Crea Nuovo...
cerca sulla guida "Progettazione di un'applicazione di avvio" o
qualcosa del genere tutto documentato
Ciao
Alessandro

 Alessandro
Ciao Alessandro, scusa ma sono proprio all'inizio e non ho capito un
granchč di quello che mi hai detto. Ma se io ho un database vuoto su
SQL server posso da questo crearne n uguali attribuendo nomi che di
volta in volta l'utente deciderŕ ? --> questo da un programma fatto in
Visual Basic .NET
Posso chiederti se gentilemente puoi darmi qualche indicazione in piů?
Grazie

 Grazie
dim connectionstring as string="Server=localhost;" & _
        "DataBase=;" & _
        "Integrated Security=SSPI"
dim SqlCreateDB as string="CREATE DATABASE " & <DATABASENAME> & "
Dim Conn As New SqlConnection(connectionString)
Dim cmd As New SqlCommand(strSQL, Conn)
Conn.Open()
cmd.ExecuteNonQuery()
Conn.Close()
ecco fatto ....
Ps pss pps e affini :
quello che volevo dirti la prima volta e che nell'ide e da esplora server tu
cliccando con il tasto destro
del mouse su un DB puoi generare uno script di creazione,lo puoi fare anche
da SQLServer ,poi
potevi lanciare i tuoi script allegati al programma, o creare un progettoDB
ma c'era da studiare
evidentemente,se ci pensi potevi implementare una routine che caricava
script di vario genere
anche per manutenere il db dopo in modo semplicissimo rilasciando solo
script....:(
Alessandro
-- 
Morfeus®
Free Joint
 :PII

 
Ciao Alessandro, prima di tutto ti ringrazio per la tua pazienza...
A proposito di seguire la strada degli script č quello che avevo
pensato. Io infatti arrivo ad un certo punto che ho la struttura di un
database di partenza --> e tutti gli altri saranno uguali a questo con
ovviamente nomi diversi. Ho provato a generare uno script da SQLServer
anche perchč come suggerisci tu in caso dovessi modificare la
struttura basta sostituire lo script senza toccare il codice. Il mio
problema che mi sono fermata alla generazione di quest'ultimo...
insomma non riesco a lanciarlo da Visual Basic .NET....
Grazie ancora...

 Grazie ancora...
Ok guarda per farla semplice facciamo così.
Strada relativamente difficile
Vantaggi gli script sono belli che fatti
Svantaggi:devi metterti a studiare
Per eseguire uno script dovresti lavorare con i comandi da console oppure
con una banale ShellExecute(in vb.Net non mi viene in mente il
corrispondente ma con le Api
risolvi uguale) o in alterntiva guarda ,come già detto sulla guida Procedura
dettagliate su applicazioni di Avvio e progetti di Database
Strada Semplice
Vantaggi è tutto che bello e scritto
Svantaggi:devi solo migliorarla e adattarla alle tue esigenze
Ti consiglio questo tipo di soluzione poi fai tu e cerca di migliorarla...in
effeti
è molto grezza :(
Crei tanti script per tabella e uno per creare il Database(tutti
parametrici)....quest'ultimo
come vedrai non è poi così necessario ;) però facciamo le cose fatte bene.
Creare i Template dei tuoi DB
Da Sql Server o da Esplora Serve creati dei template di script e salvali su
un file TXT
Sql Serve Nuovo e selezioni quello che più ti aggrada
Dall'Ide Tasto destro sul Database e segui il Wizard
Crea un nuovo progetto Windows Form e inserisci un pulsante copia gli scorci
di
codice che ti ho incollato qui sotto avendo cura di creare un file Sql.txt e
di inserirlo nel progetto
Lancia e vedrai creato il tuo Database e la prima tabella....
Esempio di contenuto in un file txt di creazione Tabella:
CREATE TABLE [dbo].[Unità_di_Misura] (
[UM] [nvarchar] (5) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
) ON [PRIMARY];
ALTER TABLE [dbo].[Unità_di_Misura] WITH NOCHECK ADD
CONSTRAINT [PK_Unità di Misura] PRIMARY KEY CLUSTERED
(
[UM]
) ON [PRIMARY] ;
Function per leggere il file:
Private Function GetSql(ByVal Name As String) As String
Try
' leggi il file contenuto
Dim reader As StreamReader = New StreamReader(Name)
Return reader.ReadToEnd()
Catch ex As Exception
MsgBox("GetSQL: " & ex.Message)
'Throw ex
End Try
End Function
Esempio di routine per lanciare i comandi
Protected Sub AddDBeTable(ByVal strDBName As String)
On Error GoTo error_AddDBeTable
' Crea il database.
ExecuteSql("master", "CREATE DATABASE " + strDBName)
' Crea la tabella
ExecuteSql(strDBName, GetSql("sqlfile.txt"))
On Error GoTo 0
Exit Sub
error_AddDBeTable:
MsgBox("Errore :" & Err.Number & " " & Err.Description & " in AddDBeTable
routine", MsgBoxStyle.Information + MsgBoxStyle.OKOnly)
Resume Next
End Sub
Esempio routine ExecuteSql
Private Sub ExecuteSql(ByVal DatabaseName As String, ByVal Sql As String)
Dim Command As New SqlClient.SqlCommand(Sql, SqlConnection1)
Command.Connection.Open()
'importante Uso il Master d'appoggio ma poi cambio database
Command.Connection.ChangeDatabase(DatabaseName)
Try
Command.ExecuteNonQuery()
Finally
' in questo modo chiudo sempre la connessione.
Command.Connection.Close()
End Try
End Sub
ed ecco il pulsantino di prova
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
AddDBeTable("Prova")
End Sub
Se non funziona non prendertela con me,cerca di risolvere i problemi che il
copia e incolla
In ultimo ti ripeto ho creato questa cosa al volo per darti una base di
partenza ma resta il fatto
che se vuoi fare una cosa fatta bene è meglio lavorare con gli script
direttamente,cerca prima nella guida e poi su google risolverai oppure
riposta il messaggio all'attenzione di chi ha avuto modo di
impratichirsi a dovere sull'argomento e può fornirti una soluzione semplice
io la vedo difficile,senza offesa.;)
Alessandro
P.S. mi scuso per l'altra volta ma non avendo l'ide di fronte mi viene
proprio impossibile
aiutare con pezzi di codice...non sono a quei livelli sigh...in giro però ci
stanno fidati
