Codice Non funzionante Creazione Tabella:

mercoledì 10 ottobre 2012 - 15.06

Feroxis Profilo | Junior Member

Durante la creazione di una tabella, sto pserimentando i limiti di sqlserver, sono incappato in questo test:

Dim myconn As New SqlClient.SqlConnection
Dim mycomm As New SqlClient.SqlCommand
myconn.ConnectionString = "Data Source=" & pcname & "\SQLEXPRESS;Integrated Security=True;Database=" & nomedatabase & ""
mycomm.Connection = myconn

Dim datasc As Date = #1/1/2012"
Dim txt2 As String = "nvarchar(max)"
Dim txt1 As String
Dim txtglobal As String = Nothing

Do Until datasc = #1/1/2013#
txt1 = datasc.Date
txtglobal = txtglobal & " , " & txt1 & " " & txt2

datasc = DateAdd(DateInterval.Day, 1, datasc)

Loop

mycomm.CommandText = "CREATE TABLE TabloidSpiaggia(Idfasullo int, " & txtglobal & ")"
myconn.Open()
mycomm.ExecuteNonQuery()
myconn.Close()
mycomm.Parameters.Clear()


Dovrebbe Creare una tabella con 365 colonne compresa una prima colonna chiamata idfasullo.
COme mai non viene creato il database e non viene riscontrato alcun errore?

bludev Profilo | Newbie

Nel tuo codice ci sono una serie di errori:
1. nella dichiarazione di datasc assegni una data in modo errato (l'ultimo carattere dovrebbe essere un #)
2. il nome di un campo dovrebbe iniziare con un carattere alfabetico, mentre i rimanenti caratteri dovrebbero essere presi da questi insiemi: A-Z, a-z, @, _, #
3. in deroga al punto 2 puoi indicare i nomi non standard utilizzando le parentesi quadrate: txt1 = "[" & datasc.Date & "]"
4. nell'assegnazione di CommandText non dovresti mettere la virgola dopo "Idfasullo int", in quanto txtglobal già la prevede.

Detto questo, mi sembra strano che eseguendo il tuo codice non venga sollevata una eccezione, che comunque andrebbe gestita. Ecco un codice funzionante:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
---
Fabio Turrin - Bludev - http://www.bludev.it/

Feroxis Profilo | Junior Member

1- non è un errore nel programma ma bensì uno di copiatura ed era esatto el programma.
2- L'errore generale non erano tanto i numeri quando i simboli della data " / ". ISOLTO CON:
nome colonna = "dt" & data.date.day.tostring & data.date.month & date.date.years & date.date. month
L'ultima colonna month serve per non avere nomi di colonne identiche.
e con questo annullo il punto3 altrimenti ci sarebbero ripetizioni nelle colonne dato che "/" non è concesso e 2122012 è sia il 21 febbraio che il 2 dicembre come esempio.

bludev Profilo | Newbie

>1- non è un errore nel programma ma bensì uno di copiatura ed
>era esatto el programma.
>2- L'errore generale non erano tanto i numeri quando i simboli
>della data " / ". ISOLTO CON:
>nome colonna = "dt" & data.date.day.tostring & data.date.month
>& date.date.years & date.date. month
>L'ultima colonna month serve per non avere nomi di colonne identiche.
>e con questo annullo il punto3 altrimenti ci sarebbero ripetizioni
>nelle colonne dato che "/" non è concesso e 2122012 è sia il
>21 febbraio che il 2 dicembre come esempio.
>

Come ti ho fatto già vedere nel mio esempio, basta scrivere
datasc.Date.ToString("ddMMyyyy")
Il 21 febbraio 2012 viene scritto "21022012" mentre il 2 dicembre "02122012".
---
Fabio Turrin - Bludev - http://www.bludev.it/
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