Newsgroup: it.comp.lang.visual-basic
Titolo: troppe esecuzioni ADO concorrenti?

Ciao a tutti.
Sto facendo di questo tipo:
apri conn1 (SQLserver)
apri conn2 (foxpro)
Apri RS1 su conn1
while not RS1.eof
  INSERT INTO tabella1 su conn2
  RS2.open su conn2, prendi un valore
  RS2.close
  RS2.open su conn2, prendi un altro valore
  RS2.close
  INSERT INTO tabella2 su conn2
...
Il RS1 contiene una settantina di record, quindi il while esegue 70 
volte il ciclo.
Mi ritorna errore, (errore/i assurdi) da quel che vedo è come se ci 
fossero troppe operazioni concorrenti, il ciclo va avanti ma il db resta 
indietro.
Devo creare una procedura a step?
Conosco poco gli oggetti
 

 ha scritto nel messaggio
news:MPG.192310a36...@news.tin.it...

scusa, un dubbio amletico: ma non è che hai scritto PROPRIO
INSERT INTO... eccetera?
INSERT INTO non fa mica parte del linguaggio VB....

 Versione (DAO, ADO e/o SQL Server/FoxPro)?
Questo non so.
Guarda, sono molto beginner in VB e non conosco oggetti, procedure etc.
Credo che il problema sia che il loop (RS dal SQLserver) continua ad 
andare avanti, mentre i recordset e gli INSERT sul foxpro restano 
indietro, si ammassano. 
Anche perchè ho un recordset che cerca un campo (ottiene un solo record) 
in una tabella che poco dopo è oggetto di INSERT.
Se il secondo insert lo faccio su un'altra tabella, di prova, nessun 
problema.

, #nospan#
a...@alp.it
 
says...

SQL = "INSERT INTO tabella(campi...) VALUES(valori...)"
connDBF.execute SQL
Cmq qui non posso inserire record dal recordset (addnew eccetera), 
perchè in realtà sul dbf faccio "SET NULL OFF; INSERT INTO...." (così 
foxpro non rompe con campi obbligatori) e quindi credo che non posso 
fare altrimenti.

*rozilipo* ha scritto:
... taglio tutto ...
Non fosse altro per ODBC (ma anche per i codici e descrizioni errori non
indicati), passo.

 indicati)
E che ti devo dire?
Se vuoi ti riporto un caso di errore:
Popup dell'applicazione: dataud.exe - Errore di applicazione : 
L'istruzione a "0x6b065f81" ha fatto riferimento alla memoria a 
"0x08742244". La memoria non poteva essere "written".
Caso similare, capitata col DTS per SQLserver, ed era bastato mettere 
Executeinmainthread=True. anche lě, processi concorrenti, credo.

 "0x08742244". La memoria non poteva essere "written".
E dici poco? (A parte il fatto che un'applicazione deve, in ogni caso,
riportare il codice dell'errore ricevuto, non sono la sua descrizione,
ammesso che non sia "elaborata" anche quella)
Prova a cercare con google (oggi è giorno così, perdona) la frase "La
memoria non poteva essere".
(Ho tolto l'ultima parola, written, perchè 'sta cosa l'ho spesso vista con
"read")

Viaggi su connessioni e/o usi esegui command (o query) asincrone?
Prova a controllare in SQL Server quante connessioni ti si aprono perché se
rimangono aperte troppe connessioni può darsi che sia lì il problema!
                        Ciao
                                                            Allanon
--
- SPAMKILLER
 L'indirizzo delle risposte é 
itlangv...@michele.sytes.net
 LASCIATE il NOSPAM fa parte dell'indirizzo :-)
  Per superare le impostazioni di protezione antispam scrivete
  nel testo del messaggio la scritta "SPAMKILLER"
Scusate il disturbo, ma non posso più di pubblicità

 "0x08742244". La memoria non poteva essere "written".
Ritiro tutto! :)
Qui l'errore sta nella libreria.
Prova a scaricarti ADO 2.71 SP1 dal sito microsoft, e usare quello. Se hai
lo stesso errore sono quasi certo che una bella formattata.... :)
