Newsgroup: it.comp.lang.visual-basic
Titolo: problemino

Ciao ragazzi, ho un piccolo problema con VB6!!! praticamente devo inserire
dei valori, presenti in delle textbox, in una tabella di un database access;
a questo proposito utilizzo un recordset e una connessione creati in questo
modo:
Dim rs As New ADODB.Recordset
Dim conn As New ADODB.Connection
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
conn.ConnectionString = App.Path & ("\mioDB.mdb")
conn.Open
Quando vado a inserire i dati nel database in questo modo:
rs.Open "NomeTabella", conn, 1, 3
rs.AddNew
rs.Fields(1) = Text1.Text
rs.Fields(2) = Text2.Text
rs,Fields(3) = Text3.Text
....................................
rs.Update
funziona tutto se i campi testo sono pieni, invece se qualcuno di essi non
contiene alcun valore mi dà il seguente errore:
Errore di run-time '-
2147217887
 (80040e21)':
Multiple-step OLE DB operation generated errors. Check each OLE DB status
value, if available. No work was done.
Ho provato il programma su un'altra macchina è funziona correttamente,
sicuramente si sarà sputtanata qualche DLL sul mio pc, qualcuno può dirmi di
cosa si tratta di preciso????????
Grazie a tutti per l'aiuto!!!!

contiene alcun valore mi dà il seguente errore:
Prova a mettere così:
rs.Fields(1)  = Text1.Text & ""
..
rs.Fields(3)  = Text3.Text & ""
e verifica che i campi del database accettino valori nulli.
Ciao
Aran


e poi se non accetta i null
il tuo concatenamento serve ?
Ciao


wrote:

mmm, se non accetta il null, non devi salvare ma dare un messaggio
tipo: "mancano i dati necessari blah blah blah.."
Il fatto che su una macchiana funzioni e su una altra no..... non è ci
sai un mdac diverso sulle macchine?
Ciao
aran

mdac diverso ...probabilissimo.
mdac che ignori determinate configurazioni di base !!!!!
se non ignora i NULL li ignora.
Ciao

 rs.Update
Per inserire l'utilizzo , a meno di impedimenti che non conosco ,
dell'istruzione "INSER INTO ......" è da preferire.
In fase di inserimento , se un valore non è obbligatorio e non è presente
nella text , si può omettere sia il campo che il valore quando si
aggiungono i dati nella tabella.
giuseppeD
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 il tuo concatenamento serve ?
Null & string = string, quindi rimane solo la stringa concatenata.
Ciao


peccato che "" è una stringa nulla !
Ciao

 peccato che "" è una stringa nulla !
Dubito fortemente. "" è una stringa di 0 caratteri, non Null ovvero non
assegnata

 Errore di run-time '-
2147217887
 (80040e21)':
Secondo me i campi null e """ non hanno alcuna colpa (a meno che per un
certo campo non si sia imposto che deve avere valori definiti, diversi da
"", quanto restituisce un textn.text)
Cos'è quella virgola nell'assegnazione del Fields(3)?

 wrote in message
news:jWYS8.80139$j65.1...@twister1.libero.it...

la definizione di null mi pare corretta
(ho solo qualche bit di memoria)
ricordo però che il problemino è
inserire dei valori in una tabella
access (jet 4.0) e che nelle proprietà
dei campi ( in struttura )
c'è scritto qualcosa del tipo
...allow zero length
Ciao

 ...allow zero length
Appunto: Permette lunghezza=0 (quindi ""), cosa ben diversa da Null

 wrote in message
news:c%ZS8.80394$j65.1...@twister1.libero.it...

bene quindi se non permette lunghezza = 0
e concateno "" che è lunghezza 0 (0+0 = ?)
mi ripeto che mi serve il concatenamento
visto che non mi piace scrivere codice per NULL.?
forse per una tabella SQL dove nelle proprietà
dei campi c'è accetta NULL mi serve il concatenamento

 dei campi c'è accetta NULL mi serve il concatenamento
Scrivi questo codice e capirai:
Dim a as variant
a=null
debug.print "---"
if isnull(a) then debug.print "1-Null"
if isnull(a & "") then debug.print "2-Null"
if isnull(a & "")=0 then debug.print "3-Non Null"

 wrote in message
news:ti_S8.80496$j65.1...@twister1.libero.it...

sei un vero lupo
grazie adesso ho proprio capito!
ora fai il form con due text box referenzia ado e incolla
da qui
Private Sub Form_click()
Dim rs As New ADODB.Recordset
Dim conn As New ADODB.Connection
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
conn.ConnectionString = "c:\db2.mdb"
conn.Open
Text1.Text = ""
Text2.Text = ""
rs.Open "Prova", conn, 1, 3
rs.AddNew
rs.Fields("a") = Text1.Text
rs.Fields("b") = Text2.Text
On Error Resume Next
rs.Update
If Err = -
2147217887
 Then
    Err = 0
    rs.Fields("a") = Text1.Text & ""
    rs.Fields("b") = Text2.Text & ""
    rs.Update
    If Err = -
2147217887
 Then
        Err = 0
        rs.Fields("a") = Text1.Text & " "
        rs.Fields("b") = Text2.Text & " "
        rs.Update
        MsgBox "adesso si che va bene"
        MsgBox "o quasi !"
    End If
End If
End Sub
a qui
crea un db2.mdb in c:\ e la tabella prova con i due campi text a , b
che non accettano lunghezza zero
ciao

 che non accettano lunghezza zero
Scusa, se il campo non accetta lunghezza zero è chiaro che non accetta ""
perchè il campo, in sintesi, è obbligatorio.
Se il campo non accetta Null, insisto, è un'altra cosa. In altre parole, un
campo può non accettare Null (indefinito), ma può accettare lunghezza zero
(0 caratteri). Esiste questa possibilità (io ho eliminato il concetto di
Null da tutti i miei programmi, ma posso accettare campi vuoti!)? Se no,
ciccia, se sì allora un senso mi pare ci sia.

 (0 caratteri).
in access quale sono le due proprietà?
ciao

 in access quale sono le due proprietą?
In DAO: AllowZeroLength per "" e Required per Null

 visto che non mi piace scrivere codice per NULL.?
Ma 'sto campo che ca...volo di proprietà ha?
consenti lunghezza zero = True|False?
consenti Null = True|False?
Qual'è il problema da risolvere?
Altrimenti non ne veniamo fuori.
La concatenazione con "" è obbligatoria in assegnazione se il campo accetta
lunghezza zero e non null, e al contrario lo è in lettura se il campo
accetta null.
Ciao