Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[VB6] - Modifica dati nei record

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[VB6] - Modifica dati nei record

Messaggioda giuxmian » mar giu 29, 2004 10:04 am

Ciao a tutti :-)

ho bisogno di una mano per un problema che non riesco nè a capire nè tantomeno a risolvere.

Sto facendo un programma in VB6 che gestisce anagrafiche clienti, articoli ed ordini collegato ad un db access che ha quattro tabelle:

TabellaClienti = nome,indirizzo,cap,citta,prov,cf_piva
TabellaGiornali = titologiornale,costo
TabellaRelazioni= nome,cf_piva,titologiornale,costo
TabellaArchivio = nome,titologiornale,costo

Per ognuna delle tre voci, ho previsto la possibilità di inserire, modificare o eliminare un record.

I collegamenti tra VB6 ed Access sono gestiti da controlli ADO e per visualizzare i dati utilizzo i DataReport

Il problema che ho e che non riesco a risolvere riguarda la modifica del prezzo di un giornale; infatti se modifico il costo del giornale inserito come primo record nella tabella giornali, mi vengono modificati anche i costi degli altri giornali, già inseriti nella tabella ordini, con il nuovo valore che ho inserito.

Però ci sono alcune particolarità che mi rendono ancor più dubbioso e cioè:

- se provo a modificare il costo di un giornale che non è il primo record, nella tabella giornali viene modificato ma nella tabella ordini no [?]

- se aggiungo un nuovo giornale, faccio l'ordine e poi modifico il prezzo del giornale allora il prezzo del giornale stesso, per quello specifico ordine, viene correttamente cambiato.

Di seguito vi posto il codice che uso per fare questa operazione.
Spero che qualcuno di voi mi possa aiutare a capire ed a risolvere questo problema perché non riesco a venirne a capo [B)]

Per qualsiasi spiegazione chiedete pure

Grazie mille

Ciao
Giuseppe

------
codice
------

Private Sub Command1_Click()
'** FORM22 - PULSANTE SALVA DEL FORM DI MODIFICA DEL GIORNALE **
Call AggiornaTabellaRelazioni

'-- Salva ed aggiorna il recorset
Form22.Adodc1.Recordset.Save
Form22.Adodc1.Refresh
Form22.Adodc2.Recordset.Save
Form22.Adodc2.Refresh

'-- Pulisce il Text1.Text del form23
Form15.Text1.Text = ""
Form22.Hide
Form1.Show

'-- Azzera la variabile globale 'Controllo'
Controllo = 0

End Sub

'** FUNZIONE AGGIORNATABELLARELAZIONI **
Function AggiornaTabellaRelazioni()

'-- Dichiarazione oggetti
Dim con As ADODB.Connection

Set con = New ADODB.Connection

'-- Apro la connessione
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:PGMVB6clienti.mdb;Persist Security Info=False"

'-- Imposto la modifica dei dati
If GiornaleOld <> "" Then
con.Execute ("UPDATE TabellaRelazioni SET Titolo = '" & Form22.Text1.Text & "' WHERE Titolo = '" & GiornaleOld & "'")
End If

If CostoOld <> "" Then
con.Execute "UPDATE TabellaRelazioni SET Costo = " & Replace(Form22.Text2.Text, ",", ".") & " WHERE Costo = " & Replace(CostoOld, ",", ".")
End If

End Function
Avatar utente
giuxmian
Aficionado
Aficionado
 
Messaggi: 77
Iscritto il: lun giu 28, 2004 10:39 am
Località: Lombardia

Messaggioda Robby78 » mar giu 29, 2004 11:04 am

<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da giuxmian</i>
<br />'-- Salva ed aggiorna il recorset
Form22.Adodc1.Recordset.Save
Form22.Adodc1.Refresh
Form22.Adodc2.Recordset.Save
Form22.Adodc2.Refresh
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

qui il save nn ci vuole, al limite fai il refresh; l'istruzione SQL viene eseguita già quando fai l'update; gli ADO data control li usi solo come visualizzazione e come clausola where.

<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da giuxmian</i>
<br />'** FUNZIONE AGGIORNATABELLARELAZIONI **
Function AggiornaTabellaRelazioni()

'-- Dichiarazione oggetti
Dim con As ADODB.Connection

Set con = New ADODB.Connection

'-- Apro la connessione
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:PGMVB6clienti.mdb;Persist Security Info=False"

'-- Imposto la modifica dei dati
If GiornaleOld <> "" Then
con.Execute ("UPDATE TabellaRelazioni SET Titolo = '" & Form22.Text1.Text & "' WHERE Titolo = '" & GiornaleOld & "'")
End If

If CostoOld <> "" Then
con.Execute "UPDATE TabellaRelazioni SET Costo = " & Replace(Form22.Text2.Text, ",", ".") & " WHERE Costo = " & Replace(CostoOld, ",", ".")
End If

End Function
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

ti consiglio di chiudere la connessione prima di uscire dalla funzione con con.Close; poi come clausola where ti conviene usare sempre un campo univoco (tipo il nome) altrimenti se c'è + di un nome con lo stesso costo; quando modifichi uno ti si aggiornano anche tutti gli altri.

Ciao
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda giuxmian » mar giu 29, 2004 11:31 am

Ciao!
Grazie per la risposta.

non ho capito la seconda parte della tua risposta. Cioè:


- il "con.Close" dove lo inserisco? Alla fine dei due IF?

- cosa intendi quando dici
<i>"...poi come clausola where ti conviene usare sempre un campo univoco (tipo il nome) altrimenti se c'è + di un nome con lo stesso costo; quando modifichi uno ti si aggiornano anche tutti gli altri.</i>"?
Titolo e Costo che utilizzo nella clausola "where" sono il nime dei rispettivi campi nella tabella access.

Ciao e Grazie
Giuseppe
Avatar utente
giuxmian
Aficionado
Aficionado
 
Messaggi: 77
Iscritto il: lun giu 28, 2004 10:39 am
Località: Lombardia


Messaggioda Robby78 » mar giu 29, 2004 12:25 pm

<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da giuxmian</i>
<br />il "con.Close" dove lo inserisco? Alla fine dei due IF?
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

si, esatto; se fai un open normalmente dovresti fare anche un close.

<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da giuxmian</i>
<br />Titolo e Costo che utilizzo nella clausola "where" sono il nime dei rispettivi campi nella tabella access.
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

francamente nn so cosa sia un nime comunque supponi di avere 2 record con lo stesso costo; se lasci l'istruzione così com'è li modificheresti entrambi; se invece nn ci possono essere 2 record con lo stesso costo, la tua istruzione SQL è corretta.
ciao
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda giuxmian » mar giu 29, 2004 12:33 pm

Scusa hai ragione...ho sbagliato a scrivere.

Intendevo dire che <i>TitoloGiornale</i> (e non Titolo, come erroneramente scritto) e <i>Costo</i> sono i rispettivi nomi dei campi delle tabelle access.

In effetti è possibile che ci siano due o più record con lo stesso valore ed in effetti mi succede proprio quello che hai detto tu, cioè che se faccio una modifica mi vengono cambiati i valori di pari importo.

Quindi come dovrei modificare il codice affinchè non si verifichi questa situazione? Mi puoi fare un esempio?

Grazie mille
Avatar utente
giuxmian
Aficionado
Aficionado
 
Messaggi: 77
Iscritto il: lun giu 28, 2004 10:39 am
Località: Lombardia

Messaggioda Robby78 » mar giu 29, 2004 12:41 pm

...spero di aver capito bene ciò che vuoi fare; prova a sostituire i 2 if con questo e dimmi come va:



If ((GiornaleOld <> "") And (CostoOld <> "")) Then
con.Execute ("UPDATE TabellaRelazioni SET Titolo = '" & Form22.Text1.Text & "', Costo = " & Replace(Form22.Text2.Text, ",", ".") & " WHERE Titolo = '" & GiornaleOld & "'")
End If
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda giuxmian » mar giu 29, 2004 1:23 pm

Dunque ho remmato le righe di codice del salvataggio

<i>Form22.Adodc1.Recordset.Save
Form22.Adodc2.Recordset.Save </i>

ed inserito il tuo codice ma non mi salva niente [cry]
Avatar utente
giuxmian
Aficionado
Aficionado
 
Messaggi: 77
Iscritto il: lun giu 28, 2004 10:39 am
Località: Lombardia

Messaggioda Robby78 » mar giu 29, 2004 1:37 pm

il .Save del recordset e gli if dentro la procedura sono ridondanti; se così non ti salva niente probabilmente il secondo if era sbagliato, quindi andava a buon fine soltanto il .save del recordset ed il primo if.
Non so nè cosa c'è collegato ai 2 adodc nè cosa contengono le 2 variabili GiornaleOld e CostoOld; quindi se nn mi fornisci maggiori dettagli, ti posso soltanto suggerire delle prove basandomi sui risultati che ottieni.
Dando x scontato che i 2 if sono sbagliati potresti provare a remmare la chiamata Call AggiornaTabellaRelazioni ed a ripristinare i 2 .Save che ti ho fatto remmare poco fa...
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda giuxmian » mar giu 29, 2004 5:30 pm

Scusami se non ti ho più risposto ma sono stato impegnato....
Domani ti darò maggiori dettagli allora così spero che mi potrai dare una mano per risolvere questo problema.

Grazie in anticipo per oggi!

Ciao
Giuseppe
Avatar utente
giuxmian
Aficionado
Aficionado
 
Messaggi: 77
Iscritto il: lun giu 28, 2004 10:39 am
Località: Lombardia

Messaggioda giuxmian » mer giu 30, 2004 11:01 am

Ciao!!! Come promesso ti mando i dettagli che mi avevi chiesto.
Se non ti è chiaro qualcosa dimmi pure. Grazie in anticipo.
---------------
<b>FORM22 (Nota: il simbolo -> significa "collegato a")</b>

<b>Adodc1</b> -> tabella access "<i>TabellaGiornali</i>" (Titolo, Costo)
<b>Adodc2</b> -> tabella access "<i>TabellaRelazioni</i>" (CF_PIVA, Titolo, Costo, Nome)

<b>Text1.textbox </b>-> inserisco il titolo del giornale
<b>Text2.textbox </b>-> inserisco il costo del giornale

<b>Command1 </b>-> pulsante "SALVA" per il salvataggio dei dati

Le variabili <i>"CostoOld"</i> e <i>"GiornaleOld"</i> sono state create per memorizzare i valori precedenti alla modifica di modo che si può fare il confronto tra il vecchio ed il nuovo valore. Queste due variabili servono anche per ripristinare i valori esistenti qualora l'utente volesse annullare le modifiche all'ultimo momento.

Sotto la <b>text1.textbox </b>c'è il pulsante "MODIFICA"; se premuto il titolo esistente del giornale viene memorizzato nella variabile "GiornaleOld" e viene aperto un form (FORM23) che fa vedere in una textbox il titolo attuale e la textbox subito sotto consente di inserire un nuovo titolo.
Infine c'è un pulsante CONFERMA che chiude la FORM23 e ritorna alla FORM22 con i nuovi dati.

Sotto la <b>text2.textbox </b>c'è il pulsante "MODIFICA"; se premuto il costo esistente del giornale viene memorizzato nella variabile "CostoOld" e viene aperto un form (FORM24) che fa vedere in una textbox il costo attuale e la textbox subito sotto consente di inserire un nuovo costo.
Infine c'è un pulsante CONFERMA che chiude la FORM24 e ritorna alla FORM22 con i nuovi dati.

Nel pulsante SALVA c'è la funzione "<b>AggiornaTabellaRelazioni</b>" che dovrebbe aggiornare il titolo e/o il costo e/o entrambi del giornale nella "TabellaRelazioni" (collegata tramite ADODC2) qualora vi fossero ordini fatti per quel giornale.

Una volta aggiornati questi dati dovrebbe salvare le tabelle "TabellaGiornali" e "TabellaRelazioni" modificate.

<i>Form22.Adodc1.Recordset.Save
Form22.Adodc1.Refresh
Form22.Adodc2.Recordset.Save
Form22.Adodc2.Refresh</i>


Nella funzione "AggiornaTabellaRelazioni":

- il primo IF (<b>If GiornaleOld <> ""</b>) è stato creato per verificare se l'utente ha modificato il titolo del giornale. Se lo ha fatto la variabile "GiornaleOld" è piena ed entra nel ciclo altrimenti esce senza far niente ed esegue il successivo codice

- il secondo IF (<b>If CostoOld <> ""</b>) è stato creato per verificare se l'utente ha modificato il costo del giornale. Se lo ha fatto la variabile "CostoOld" è piena ed entra nel ciclo altrimenti esce senza far niente ed esegue il successivo codice

I due IF sono a sè stanti quindi finito il primo passa all'altro.
Avatar utente
giuxmian
Aficionado
Aficionado
 
Messaggi: 77
Iscritto il: lun giu 28, 2004 10:39 am
Località: Lombardia

Messaggioda Robby78 » mer giu 30, 2004 11:15 am

ok, allora proviamo....

Private Sub Command1_Click()
'** FORM22 - PULSANTE SALVA DEL FORM DI MODIFICA DEL GIORNALE **

'Non aggiorno se nn è stato modificato nulla
If ((GiornaleOld <> "") Or (CostoOld <> "")) Then

Call AggiornaTabellaRelazioni

'-- Salva ed aggiorna il recorset
'Form22.Adodc1.Recordset.Save
Form22.Adodc1.Refresh
'Form22.Adodc2.Recordset.Save
Form22.Adodc2.Refresh

end if

'-- Pulisce il Text1.Text del form23
Form15.Text1.Text = ""
Form22.Hide
Form1.Show

'-- Azzera la variabile globale 'Controllo'
Controllo = 0

End Sub

'** FUNZIONE AGGIORNATABELLARELAZIONI **
Function AggiornaTabellaRelazioni()

'-- Dichiarazione oggetti
Dim con As ADODB.Connection

'Questa variabile serve x impostare il campo chiave x la clausola where
Dim sGiornale as string

Set con = New ADODB.Connection

'-- Apro la connessione
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:PGMVB6clienti.mdb;Persist Security Info=False"

'-- Imposto la modifica dei dati
sGiornale=Form22.Text1.Text
If GiornaleOld <> "" Then sGiornale = GiornaleOld

'Aggiornamento della TabellaRelazioni
con.Execute ("UPDATE TabellaRelazioni SET Titolo = '" & Form22.Text1.Text & "', Costo = " & Replace(Form22.Text2.Text, ",", ".") & " WHERE Titolo = '" & sGiornale & "'")

'Aggiornamento della TabellaArchivio (non so se ti è utile)
con.Execute ("UPDATE TabellaArchivio SET Titolo = '" & Form22.Text1.Text & "', Costo = " & Replace(Form22.Text2.Text, ",", ".") & " WHERE Titolo = '" & sGiornale & "'")


con.Close

End Function


Se ti occorre aggiornare anche la TabellaGiornali occorre scrivere qualche riga in + (nota che non esiste il campo titolo ma soltanto titoloGiornale che a mio avviso è un'informazione diversa), fammi sapere...

ciao
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda giuxmian » mer giu 30, 2004 11:35 am

Sei molto gentile grazie!

Mi puoi aggiungere anche la modifica della TabellaGiornali?

Ho fatto un po' di casino io con il nome campo del titolo del giornale.
TitoloGiornale non esiste...il nome corretto del campo in tutte le tabelle è Titolo.
Avatar utente
giuxmian
Aficionado
Aficionado
 
Messaggi: 77
Iscritto il: lun giu 28, 2004 10:39 am
Località: Lombardia

Messaggioda Robby78 » mer giu 30, 2004 12:33 pm

<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da giuxmian</i>
<br />Sei molto gentile grazie!

Mi puoi aggiungere anche la modifica della TabellaGiornali?

Ho fatto un po' di casino io con il nome campo del titolo del giornale.
TitoloGiornale non esiste...il nome corretto del campo in tutte le tabelle è Titolo.

<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

in effetti mi ero un po confuso anche'io... comunque aggiornare la tabella TabellaGiornali è molto semplice; basta soltanto copiare l'update e sostituire il nome della tabella in questa modo:

'Aggiornamento della TabellaGiornali (non so se ti è utile)
con.Execute ("UPDATE TabellaGiornali SET Titolo = '" & Form22.Text1.Text & "', Costo = " & Replace(Form22.Text2.Text, ",", ".") & " WHERE Titolo = '" & sGiornale & "'")

incolla questa istruzione dopo le altre 2 execute; se ti può tornare utile nell'execute puoi verificare quanti records sono stati aggiornati aggiungendo un parametro alla fine:

dim lRecords as Long

con.execute("Update .......", lRecords)

lRecords contiene il numero di records aggiornati

divertiti, ciao! [:D]
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda giuxmian » mer giu 30, 2004 1:18 pm

Aspetta...ci sono delle cose che non mi tornano [?]

Quando entro nella funzione il codice dice:

If GiornaleOld <> "" Then sGiornale = GiornaleOld
sGiornale = GiornaleOld
<i> '-- Aggiornamento della TabellaRelazioni</i>
con.Execute ("UPDATE TabellaRelazioni SET Titolo = '" & Form22.Text1.Text & "', Costo = " & Replace(Form22.Text2.Text, ",", ".") & " WHERE Titolo = '" & sGiornale & "'")
<i>'-- Aggiornamento della TabellaArchivio (non so se ti è utile)</i> con.Execute ("UPDATE TabellaArchivio SET Titolo = '" & Form22.Text1.Text & "', Costo = " & Replace(Form22.Text2.Text, ",", ".") & " WHERE Titolo = '" & sGiornale & "'")
<i> '-- 'Aggiornamento della TabellaGiornali (non so se ti è utile)</i> con.Execute ("UPDATE TabellaGiornali SET Titolo = '" & Form22.Text1.Text & "', Costo = " & Replace(Form22.Text2.Text, ",", ".") & " WHERE Titolo = '" & sGiornale & "'")

però se l'utente modifica solo il costo in questa condizione non ci entrerà mai e quindi non effettua il salvataggio delle modifiche giusto?
Io credo che anche qui vada messo nell'IF (come all'inizio del form22)

<i>If ((GiornaleOld <> "") Or (CostoOld <> ""))</i>

L'altra domanda è relativa a questa riga di codice

<i>con.Execute ("UPDATE TabellaRelazioni SET Titolo = '" & Form22.Text1.Text & "', Costo = " & Replace(Form22.Text2.Text, ",", ".") & " WHERE Titolo = '" & sGiornale & "'")</i>

con questa riga viene salvato il costo prendendo come riferimento il titolo del giornale (WHERE Titolo = '" & sGiornale & "'")?
Avatar utente
giuxmian
Aficionado
Aficionado
 
Messaggi: 77
Iscritto il: lun giu 28, 2004 10:39 am
Località: Lombardia

Messaggioda Robby78 » mer giu 30, 2004 1:37 pm

<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da giuxmian</i>
<br />If GiornaleOld <> "" Then sGiornale = GiornaleOld
sGiornale = GiornaleOld
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">
io nn ti avevo scritto così; avevo scritto questo:

sGiornale=Form22.Text1.Text
If GiornaleOld <> "" Then sGiornale = GiornaleOld

rispondendo alle tue domande:

1: anche se l'utente modifica solo il costo viene effettuata la modifica (provare x credere), l'if basta soltanto sul Command1_Click() perché se non supera quella condizione non entra neanke nella routine AggiornaTabellaRelazioni()

2: si, siccome mi hai detto che il titolo è la chiave primaria uso quel campo x effettuare tutti gli aggiornamenti. Se il titolo è stato modificato uso x l'update il titolo vecchio (nella GiornaleOld) altrimenti uso tranquillamente quello visualizzato nella text (Form22.Text1.Text); ecco il senso dell'If che ti ho riportato sopra

tutto chiaro?

buona fortuna! [:D] [^]
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda giuxmian » gio lug 01, 2004 12:23 pm

Ciao carissimo!!

Ho fatto alcune prove col codice che mi hai mandato e va tutto bene...l'unica cosa però è che mi è capitato che la prima volta che cambiavo solo il costo del giornale non me lo prendeva.
Così sono uscito e rientrato nel programma e l'ho rifatto e allora me l'ha preso. Va beh....fa niente.

Posso approfittare della tua disponibilità e delle tue conoscenze per chiederti altre due cose?
Avatar utente
giuxmian
Aficionado
Aficionado
 
Messaggi: 77
Iscritto il: lun giu 28, 2004 10:39 am
Località: Lombardia

Messaggioda Robby78 » gio lug 01, 2004 1:37 pm

<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da giuxmian</i>
<br />l'unica cosa però è che mi è capitato che la prima volta che cambiavo solo il costo del giornale non me lo prendeva.
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

è successo prima che correggessi le 2 righe che avevi trascritto male?

<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da giuxmian</i>
<br />Posso approfittare della tua disponibilità e delle tue conoscenze per chiederti altre due cose?
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

certo, quando ho tempo + che volentieri [^]... fai solo attenzione a che le richieste siano coerenti col titolo del topic, altrimenti creane un altro.

ciao
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda giuxmian » gio lug 01, 2004 2:13 pm

No dopo.
Comunque farò ancora prove.

Ti volevo chiedere queste due cose, sempre inerenti al topic.

1) Nella ormai nota form22, cliccando sul controllo ADO per scorrere i titoli dei giornali, vedo questi ultimi in ordine di inserimento.
E' possibile fare in modo che li possa scorrere per ordine alfabetico?

2) Come posso fare per predisporre un controllo che mi segnali, a fronte di un ordine già salvato (es. cliente PIPPO ordina CORRIERE DELLA SERA), se l'utente inserisce un ordine già esistente?
Avatar utente
giuxmian
Aficionado
Aficionado
 
Messaggi: 77
Iscritto il: lun giu 28, 2004 10:39 am
Località: Lombardia

Messaggioda Robby78 » gio lug 01, 2004 2:36 pm

1) X scorrere i records in ordine alfabetico basta che nelle proprietà dell'ADO data control, nella tab recordsource campo command text tu metta al posto del semplice nome della tabella una select ad es. Select * from TabellaRelazioni order by nome asc, titolo desc
in questa modo ti ordina alfabeticamente prima per nome con ordine crescente, poi x titolo con ordine decrescente

2) Ci sono diverse tecniche + o meno comode da usare, bisognerebbe vedere com'è il codice VB che usi x l'inserimento ordine. Tanto x avere un'idea potresti aprire un recordset facendo una select con i campi che vuoi inserire; se il recordset è EOF fai l'insert, altrimenti dai il messaggio d'errore. Oppure puoi fare una update del record che vuoi inserire, se la variabile lRecords (quella che ti ho spiegato nei prec messaggi) è > 0 vuol dire che il record c'è già, quindi dai il messaggio d'errore, se vale 0 fai l'insert

ari-ciao
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda giuxmian » gio lug 01, 2004 4:36 pm

Ciao Robby,

per quanto riguarda il secondo punto di cui ti ho parlato, in allegato ti mando il codice che ho fatto per creare l'ordine.

Ciao
Giuseppe
Avatar utente
giuxmian
Aficionado
Aficionado
 
Messaggi: 77
Iscritto il: lun giu 28, 2004 10:39 am
Località: Lombardia

Prossimo

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising