Newsgroup: it.comp.lang.visual-basic
Titolo: HELP SQL (INSERT INTO)

ciao a tutti
un aiuto.
sto scrivendo una procedura in vb6 che deve copiarmi un file risiedente su
AS400 in una tabella access
premetto che non voglio andare via odbc sull'as, quindi ho definito degli
ADODB (connection e recorset) diversi (uno per collegarmi ad access e uno
per l'as)
fin qui tutto ok
ora per� come imposto la stringa di insert into
devo leggere il file as ed inserirlo nalla tabella access
quindi ho RsAS che definisce i recorset as400 e RsDB quelli access
come costriusco la stringa sql?
grazie
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 come costriusco la stringa sql?
Sai gi� com'� la formattazione dei dati per l'SQL di entrambi?
Dim sqlField as string, sqlData as string
Do until rsAs.Eof
   Dim fld as ADODB.field
   for each fld in rsas.eof
	'questo basterebbe la prima volta essendo sempre uguale
      sqlfield=sqlfield & 
fld.name
 & "," 
 
	'qui formatti date, decimal ecc. come sai
      sqlData=sqlData & FormattaValore(fld.value) & "," 
   next
   AdoConnAccess.Execute "INSERT INTO tabella " & _ 
			(" sqlField & ") VALUES (" & sqlData &");"
   RsAs.MoveNext
Loop
Altrimenti usi il metodo AddNew dei recordset.

 come costriusco la stringa sql?
Sai gi� com'� la formattazione dei dati per l'SQL di entrambi?
Dim sqlField as string, sqlData as string
Do until rsAs.Eof
   Dim fld as ADODB.field
   for each fld in rsas.Fields
	'questo basterebbe la prima volta essendo sempre uguale
      sqlfield=sqlfield & 
fld.name
 & "," 
 
	'qui formatti date, decimal ecc. come sai
      sqlData=sqlData & FormattaValore(fld.value) & "," 
   next
   AdoConnAccess.Execute "INSERT INTO tabella " & _ 
			(" sqlField & ") VALUES (" & sqlData &");"
   RsAs.MoveNext
Loop
Altrimenti usi il metodo AddNew dei recordset.
C'� qualche errorino pi� o meno voluto...

ciao
grazie 1000
solo una cosa per�....non mi popola la tabella Access
??????
Il 14 Lug 2009, 15:02, "Andrea [Work]" <andrea.isw...@gmail.invalid>
ha scritto:

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ??????
Hai sostituito la connection con quella di access?
Se non ti da errore, non � che non hai aggiornato il recordset dopo le
insert?
Posta il codice che hai scritto, perch� quello che ti ho messo io col copia
incolla non funziona certo.

ecco la sub
Dim sqlField As String, sqlData As String
StrSQLAS = "SELECT * FROM LIB.STAMPALIST"
Set RsAS = getRecordset(StrSQLAS)
Do Until RsAS.EOF
    Dim fld As ADODB.Field
    For Each fld In RsAS.Fields
         MsgBox fld.Type, vbInformation + vbOKOnly
' 'questo basterebbe la prima volta essendo sempre uguale
       sqlField = sqlField & fld.Name & ","
 
'
' 'qui formatti date, decimal ecc. come sai
       sqlData = sqlData & "'" & fld.Value & "',"
    Next
    Connessione.Execute "INSERT INTO STAMPALIST (" & sqlField & ") VALUES (" &
sqlData & ")"
    'strSql = "INSERT INTO STAMPALIST (" & sqlField & ") VALUES (" & sqlData &
")"
    'rs.Open strSql, Connessione, adOpenDynamic, adLockOptimistic
    'rs.Update
    RsAS.MoveNext
 Loop
Il 14 Lug 2009, 16:24, "Andrea [Work]" <andrea.isw...@gmail.invalid>
ha scritto:

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ecco la sub
Non c'� verso che funzioni cos�, almeno che access non sia permissivo.
Semplicemente controlla il valore passo passo di:
"INSERT INTO STAMPALIST (" & sqlField & ") VALUES (" &
sqlData & ")"
guarda se � scritta bene e se facendolo a mano da errori.
Di sicuro ci sono due virgole di troppo...

perfetto
c'era un virgola in pi� alla fine
grazie 1000
Il 14 Lug 2009, 16:51, "Andrea [Work]" <andrea.isw...@gmail.invalid>
ha scritto:

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

La DIM la devi mettere fuori dal ciclo!
Do Until RsAS.EOF
    Dim fld As ADODB.Field
diventa...
Dim fld As ADODB.Field
Do Until RsAS.EOF
-- 
Ciao Fede
By Chicco Production
http://bcp.freetools.it

 c'era un virgola in pi� alla fine
Si vabb�...
Prova a guardare il contenuto di sqlField e sqlData al secondo o terzo
record...

 Do Until RsAS.EOF
Se poi non si resettano le variabili mai... :)
Comunque io ultimamente per scope fortemente localizzati dichiaro subito
sopra anzich� ad inizio modulo.
Per� in questo caso era inutile dichiarare all'interno del ciclo.
Anche se con VB6 sappiamo che non fa differenza dove dichiari, lo scope
rimane uguale.