Newsgroup: it.comp.lang.visual-basic
Titolo: Inserire un campo numerico vuoto in access con ado jet

ciao
non riesco ad inserire un campo numerico vuoto in access, usando ado
quando cerco di metterlo vuoto mi da errore
il campo in access è settato che accetta i campi vuoti
cercando nei post vecchi ho trovato solo, che quando il campo è vuoto, 
bisogna dargli come variabile da memorizzare "null"
se provo a farlo nella mia textbox mi da errore
se provo a creare una variabile e settarla null mi dice che è un uso 
inproprio di null
quindi ho provato a metterlo direttamente nell'update e nell'insert, a 
mano, giusto x fare una prova, ma mi da errore lo stesso di inserimento
come posso fare?
l'unica soluzione è farli diventare campi di testo in access, ma non è 
molto bello :-)
ciaociao
-- 
********************
http://www.scirio.tk
100% COMMERCIALE
********************

 come posso fare?
recordset!nome_campo=Null
oppure
recordset("nome_campo") = Null

 
si è come l'esempio che avevo trovato sul ng
xò il mio caso è un pò diverso
io ho i campi del mio form separati dal db, cioè non collegati 
dall'interfaccia
e x fare le varie operazioni faccio le query in sql
quindi quando voglio fare un insert
faccio x esempio:
sql="INSERT INTO tabella (camponumerico) VALUES ('" & text1.text & "')"
se prima faccio text1.text=null mi da errore
rs!nome_campo=null non lo posso fare xchè la mia connessione è chiusa e 
la apro solo x lanciare la query
forse sto usando il metodo sbagliato x fare la cosa :-)


 sql="INSERT INTO tabella (camponumerico) VALUES ('" & text1.text & "')"
sql="INSERT INTO tabella (camponumerico) VALUES (" & IIf(text1.text="",
Null, "'" & text1.text & "')"


Lupo ha sbagliato:


Lupo ha ri-sbagliato:
sql = "INSERT INTO tabella (camponumerico) VALUES (" & IIf(text1.Text = "",
"Null", "'" & text1.Text & "'") & ")"
... non dev'essere giornata :-(

Lupo sta sclerando:
Hai detto numerico?
sql = "INSERT INTO tabella (camponumerico) VALUES (" & IIf(text1.Text = "",
"Null", CDbl(text1.Text)) & ")"
Ovviamente adegua quel CDbl in funzione del tipo di campo...
Ok, per oggi ho già dato. Mi starò ammalando... :-((

Lupo è un pirla, ... l'ha detto prima lui, quindi ... boni:
sql = "INSERT INTO tabella (camponumerico) VALUES (" & IIf(text1.Text = "",
"Null", Replace(text1.Text,",",".")) & ")"

Lupo wrote:
(snip)
rotfl
Salutoni
Sergio


Fermati!!!!
Il thread mi sta sparendo a destra del monitor!
:-)
	maxx
P.S. Potremmo trasformare le tue risposte in un bel FAQ ad esclusione! :-)
-- 
NOSPAM: Rimuovere i trattini dallo username!
Cut hyphens from my username!

 il campo in access è settato che accetta i campi vuoti
CUT
boh per me fai teoria!nel senso che è un problema che ha la soluzione di
Lupo...
ma con un attimo di "buon senso"
io non ho mai avuto problemi!
TESTO
Rs("CampoVuoto")=""
Una stringa nulla.....VUOTA semmai!
Una pagina di quaderno non è nulla...è vuota, bianca!...ma esiste!
VALORI
mai  permesso che prendesse NULL ...al limite 0
Che caz di valore è null per un numero...c'è lo zero apposta per i
numeri!....pensa lo hanno inventato prima del pc!
e funziona bene: 0+0=0
eh eh :-D
--
%%============================%%
Il Wodkino Nazionale è raggiungibile anche a :
www.martek.it
Ed ha pure il forum...
http://www.martek.it/go.asp?PortamiA=1

 
Ho aspettato un pò x ringraziarti, ho fatto bene? :-)
questa sera provo la tua soluzione, grazie 1000


 
si è vero, xò poi mi pareva poco carino andare a controllare se quel 
campo è=0 allora lo fai vedere vuoto


 Wodka4U(Nbook) ha scritto:
CUT
ARGH doppio ARGH triplo ARGH
Ehm scirio .....
In genere proprio perchè il progromma va in mano all'Utonto si cerca di afre
una cosa
 del genere
a) Raccolta dati (ad es.scrivo nel textbox)
b) Validazione dati (ad es. Uso il _Validate)
c) Memorizzazione Dati
NON cerco di usare il textbox BOUND come mi sembra adoperi tu!
.... altrimenti non capisco il senso delle tue risposte!
Quindi ad esempio
If len(TextBox.text) >5 then
    rs("Campo")="trim(textBox.text)
else
    rs("Campo")=""
oppure se non accetta null
    rs("campo")=" "
end if
Quando visualizzi lo stesso
a)Reperimento dati
b)Formattazione
b bis)Visualizzazione all'uTonto!
Quindi
a)
Importo=cDbl(rs("Importo") &"") 'ti ricordi perchè:  & "" vero?
b) e b bis)
txtImporto.text=format(Importo, "\?\ ###,##0.00")
ad esempio!
E comunque visto che mi piace provare le cose caso mai mi fossi bevuto il
cervello...mi son fatto un progetto ad hoc "didattico"!!!
.....
il database è nella stessa cartella del programma si chiama dbtest.mdb
Dentro c'ha una tabella "Anagrafica" con
IDScheda (la chiave)
Nome
Cognome
Indirizzo
Questi 3 campi accettano lunghezza zero...la chiave no!:-)
prendi un form....un datagrid (OLEDB)....una textbox ...multilinea ...li ci
metti il command da eseguire....non lesinare mettici un fon grande Verdana
10 ad esempio!
2 textbox per inserire dei valori di prova
....2 command
Tira dentro come riferimento ADO (io con xp ADO 2.7)
incolla nella form:
Option Explicit
Dim Cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim Ex As New ADODB.Command
Dim CONNDB As String
Private Sub Command1_Click()
Dim tSQL As String
tSQL = Trim(Me.Text1.Text)
Ex.ActiveConnection = Cn
Ex.CommandText = tSQL
Ex.Execute
Rs.Requery
End Sub
Private Sub Command2_Click()
Dim tSQL As String
tSQL = "INSERT INTO ANAGRAFICA (IDscheda,Nome,Cognome,Indirizzo) VALUES(1,'"
& Text2.Text & "', '" & Text3.Text & "',"
Text1.Text = tSQL
End Sub
Private Sub Form_Load()
 CONNDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path &
"\Dbtest.mdb;"
Cn.ConnectionString = CONNDB
Cn.CursorLocation = adUseClient
Cn.Open
Set Rs.ActiveConnection = Cn
Rs.Source = "SELECT * FROM Anagrafica"
Rs.LockType = adLockReadOnly
Rs.Open
Set Me.DataGrid1.DataSource = Rs
Me.DataGrid1.ReBind
End Sub
bene ora divertiti!....non mettere nulla nelle textbox e schiaccia command2
ti porta nella casella grande un abbozzo già fatto di INSERT
....completala con il numero giusto di chiave e con il valore dell'indirizzo
.... 'Via Roma 12' ad esempio...
chiudi le parentesi ed esegui il comando schiacciando command1
Che ti devo dire sarò fortunato? a me non si arrabbia!!!! ....aggiunge
tranquillamente!!!
Ottimo esempio anche di come aggiungere record ad una grid ReadOnly !!!
Ciao!
:-)
p.s.
Prova a divertirti anche con
UPDATE
ALTER TABLE
etc etc!!!!
ri ciao!


 e funziona bene: 0+0=0
Ti amo!!! ;-) A morte i Null!!!

 Ti amo!!! ;-) A morte i Null!!!
ok, cominciamo con le guerre di religione? :-)
Se ho un campo, nel quale devo memorizzare il valore minimo che può essere
indicato in un determinato posto, come faccio, senza usare il null o altri
campi, ad indicare che il controllo del valore minimo non deve essere applicato?
Salutoni
Sergio
PS "disclaimer": odio le guerre di religione, la frase iniziale del post è da
intendersi in tono assolutamente scherzoso (fossa mai che le faccine non fossero
correttamente interpretate)

 Importo=cDbl(rs("Importo") &"") 'ti ricordi perchè:  & "" vero?
non mi ricordo il xchè, ma lo faccio xchè è stato il mio primo errore di 
insert o update x questo mio primo programma col db access :-)
cmq in linea di massima controllo anche quello che viene stampato a 
video prendendolo dal db, dato che non si sa mai che uno modifichi il db 
a mano
anzi lo faccio xchè magari può essere utile importare i dati 
direttamente da access
e x questo motivo, e x il fatto che il mio programma può essere 
sostituito , ma il db se ben riempito rimane
e può essere usato in futuro x altri programmi o essere esportato su 
altri db....
... che preferisco non salvarmi nel db la data zero, ma averla vuota se 
non c'è
insomma mi son spiegato male ma spero di essermi fatto capire :-)
cmq ti ringrazio x il tuo script, ho notato alcuni parametri o passaggi 
diversi dal mio modo di fare la connessione, quindi può sempre tornarmi 
utile x approfondire l'argomento
ciaociao
ps trattasi di archivio di film , avevo un campo "note" ed un campo 
chiamato "cast"..... e son riuscito a beccare subito 2 nomi che davano 
problemi :-)


 fossero correttamente interpretate)
Lo so, Sergione ;-)

 Lo so, Sergione ;-)
<Raffa ON>
    Che dolci... che tesori... ;-)
<Raffa OFF>
Insomma, anche stavolta per vedere un bel flame ci tocca andare su
IDL... o aspettare la prossima incarnazione di Franco-bubba.
Un Paperino ;-PPP

 IDL... o aspettare la prossima incarnazione di Franco-bubba.
Anche ICF non è male al riguardo....
Salutoni
Sergio

 che č IDL???
Voto per It.Discussioni.Litigi
Salutoni
Sergio

 ciaociao
cut
beh quello che esegui è una stringa amico.....secondo me (e correndo il
rischio di passare per presuntuoso) ti conviene studiarlo bene questo
esempio........poi fai te!...ripassi un po di ADO un po di command e anche
un po di SQL...
....in definitiva basta scrivere "null" in un stringa!!!!
De gustibus!
Ciao!
Bah!


 Voto per It.Discussioni.Litigi
Prova a fiondarmici...ho bisogno di sfogarmi!


 Prova a fiondarmici...ho bisogno di sfogarmi!
Se vuoi c'è anche it.fan.culo :-)
Ti devo mandare anche lì? lol
rotfl
Salutoni
Sergio


no no lo conoscevo e frequentavo già!!!!
thanks....
a buon rendere!
;-)
grrrrr
