raaicha Ierakstīts Decembris 22, 2014 Share Ierakstīts Decembris 22, 2014 (labots) Sveiki, Veidoju formu iekš MS Access ar vadības pogām, izveidoju vairākas pogas, bet pogas "Pievienot" nenostrādā, tas būtu ievadu datus, nospiežu pievienot, viss takā izpildās bez kļūdām, bet tabulā dati neparādās... Kur varētu būt problēma? P.S Sorry par dubultpostu, interneta kļūmes dēļ. Kods : Private Sub btnAdd_Click() 'kad spiežam uz pogas Pievienot tur ir divas opcijas '1. Pievienot '2. Atjaunot If Me.txtKlientaID.Tag & "" = "" Then 'tas ir priekš pievienot jaunu 'pievienot datus tabulai CurrentDb.Execute "INSERT INTO tblKlienti(KlientaID, Vards, Uzvards, Epasts, Talrunis, Valsts, Novads, Pilseta, Pagasts, PastaIndekss) " & _ "VALUES(" & Me.txtKlientaID & ",'" & Me.txtVards & "','" & _ Me.txtUzvards & "','" & Me.txtEpasts & "','" & _ Me.txtTalrunis & "','" & Me.cboValsts & "','" & _ Me.cboNovads & "','" & Me.cboPilseta & "','" & _ Me.cboPagasts & "','" & Me.txtPastaIndekss & "')" Else 'citādāk (Tag no KlientaID glabā id no lietotāja kas būs jāmaina) CurrentDb.Execute "UPDATE tblKlienti " & _ " SET KlientaID=" & Me.txtKlientaID & _ ", Vards='" & Me.txtVards & "'" & _ ", Uzvards='" & Me.txtUzvards & "'" & _ ", Epasts='" & Me.txtEpasts & "'" & _ ", Talrunis='" & Me.txtTalrunis & "'" & _ ", Valsts='" & Me.cboValsts & "'" & _ ", Novads='" & Me.cboNovads & "'" & _ ", Pilseta='" & Me.cboPilseta & "'" & _ ", Pagasts='" & Me.cboPagasts & "'" & _ ", PastaIndekss='" & Me.txtPastaIndekss & "'" & _ " WHERE KlientaID=" & Me.txtKlientaID.Tag End If ' 'attīrīt formu btnClear_Click 'atsvaidzina datus formā frmKlientiSub.Form.Requery End Sub Labots Decembris 22, 2014 - raaicha Link to comment Share on other sites More sharing options...
_dunduks_ Decembris 22, 2014 Share Decembris 22, 2014 Ni kurienes tev KlientaID rodas, ja Me.txtKlientaID.Tag & "" = "" Varbūt null vērtību tur pievienot nevar? Link to comment Share on other sites More sharing options...
raaicha Decembris 22, 2014 Author Share Decembris 22, 2014 Varbūt null vērtību tur pievienot nevar? Tad viņš izlaiž If un ķerās pir Else un neņem kodu pretī .. Syntax error (missing operator) in query expression 'KlientaID=' Link to comment Share on other sites More sharing options...
Mezavecis Decembris 22, 2014 Share Decembris 22, 2014 Izvadi ar visu pieprasījumu, kādu tu taisies likt datu bāzē un pēc tam to manuāli izpildi iekš Access. Ja kāds no datu bāzes laukiem ir atzīmēts kā "not null" un dati būs tukši, tad protams, ka šādu ierakstu nevar ievietot. Ieteiktu to notestēt gan ar insert, gan update, lai pārliecinātos, ka ar datiem un pieprasījumiem viss kārtībā. Link to comment Share on other sites More sharing options...
_dunduks_ Decembris 22, 2014 Share Decembris 22, 2014 (labots) Tad viņš izlaiž If un ķerās pir Else un neņem kodu pretī .. Nepareizi! Viņš pie Else ķeras tikai gadījumā, ja Me.txtKlientaID.Tag<>"" Labots Decembris 22, 2014 - _dunduks_ Link to comment Share on other sites More sharing options...
raaicha Decembris 22, 2014 Author Share Decembris 22, 2014 Nepareizi! Viņš pie Else ķeras tikai gadījumā, ja Me.txtKlientaID.Tag<>"" tā vismaz Debug parāda Link to comment Share on other sites More sharing options...
_dunduks_ Decembris 22, 2014 Share Decembris 22, 2014 Kāds lauka tips tev ir KlientaID? Un kāda vērtība Debug režīmā tiek pieķširta Me.txtKlientaID.Tag? Link to comment Share on other sites More sharing options...
raaicha Decembris 22, 2014 Author Share Decembris 22, 2014 Kāds lauka tips tev ir KlientaID? Un kāda vērtība Debug režīmā tiek pieķširta Me.txtKlientaID.Tag? KlientaID ir Number Me.txtKlientaID.Tag vārtību dabon kad tiek izmantota poga Labot Ieliku pilno kodu no formas: Option Compare Database Private Sub btnExit_Click() DoCmd.Close DoCmd.OpenForm "frmNavigacija" End Sub Private Sub btnAdd_Click() 'kad spiežam uz pogas Pievienot tur ir divas opcijas '1. Pievienot '2. Atjaunot If Me.txtKlientaID.Tag & "" = "" Then 'tas ir priekš pievienot jaunu 'pievienot datus tabulai CurrentDb.Execute "INSERT INTO tblKlienti(KlientaID, Vards, Uzvards, Epasts, Talrunis, Valsts, Novads, Pilseta, Pagasts, PastaIndekss) " & _ "VALUES(" & Me.txtKlientaID & ",'" & Me.txtVards & "','" & _ Me.txtUzvards & "','" & Me.txtEpasts & "','" & _ Me.txtTalrunis & "','" & Me.cboValsts & "','" & _ Me.cboNovads & "','" & Me.cboPilseta & "','" & _ Me.cboPagasts & "','" & Me.txtPastaIndekss & "')" Else 'citādāk (Tag no KlientaID glabā id no lietotāja kas būs jāmaina) CurrentDb.Execute "UPDATE tblKlienti " & _ " SET KlientaID=" & Me.txtKlientaID & _ ", Vards='" & Me.txtVards & "'" & _ ", Uzvards='" & Me.txtUzvards & "'" & _ ", Epasts='" & Me.txtEpasts & "'" & _ ", Talrunis='" & Me.txtTalrunis & "'" & _ ", Valsts='" & Me.cboValsts & "'" & _ ", Novads='" & Me.cboNovads & "'" & _ ", Pilseta='" & Me.cboPilseta & "'" & _ ", Pagasts='" & Me.cboPagasts & "'" & _ ", PastaIndekss='" & Me.txtPastaIndekss & "'" & _ " WHERE KlientaID=" & Me.txtKlientaID.Tag End If ' 'attīrīt formu btnClear_Click 'atsvaidzina datus formā frmKlientiSub.Form.Requery End Sub Private Sub btnClear_Click() Me.txtKlientaID = "" Me.txtVards = "" Me.txtUzvards = "" Me.txtEpasts = "" Me.txtTalrunis = "" Me.cboValsts = "" Me.cboNovads = "" Me.cboPilseta = "" Me.cboPagasts = "" Me.txtPastaIndekss = "" 'fokuss uz LietotajaID lauku Me.txtKlientaID.SetFocus 'aktivizēt pogu labot Me.btnEdit.Enabled = True 'samainīt nosaukumu pogai pievienot uz pievienot Me.btnAdd.Caption = "Pievienot" 'notīrīt tagu LietotajaID priekš jauna Me.txtKlientaID.Tag = "" End Sub Private Sub btnDelete_Click() 'Izdzēst ierakstu 'Pārbaude eksistējošu izvēlētu ierakstu If Not (Me.frmKlientiSub.Form.Recordset.EOF And Me.frmKlientiSub.Form.Recordset.BOF) Then 'apstirpināt dzēšanu If MsgBox("Vai esat droš ka vēlaties dzēst?", vbYesNo) = vbYes Then 'dzēš tagad CurrentDb.Execute "DELETE FROM tblKlienti " & _ " WHERE KlientaID=" & Me.frmKlientiSub.Form.Recordset.Fields("KlientaID") 'atsvaidzina datus sarakstā Me.frmKlientiSub.Form.Requery End If End If End Sub Private Sub btnEdit_Click() 'pārbauda vai eksistē dati sarakstā If Not (Me.frmKlientiSub.Form.Recordset.EOF And Me.frmKlientiSub.Form.Recordset.BOF) Then 'iegūst datus uz kontrol laukiem With Me.frmKlientiSub.Form.Recordset Me.txtKlientaID = .Fields("KlientaID") Me.txtVards = .Fields("Vards") Me.txtUzvards = .Fields("Uzvards") Me.txtEpasts = .Fields("Epasts") Me.txtTalrunis = .Fields("Talrunis") Me.cboValsts = .Fields("Valsts") Me.cboNovads = .Fields("Novads") Me.cboPilseta = .Fields("Pilseta") Me.cboPagasts = .Fields("Pagasts") Me.txtPastaIndekss = .Fields("PastaIndekss") 'saglabā id lietotāja tagā txtLietotajaID ja id ir izmainījies 'Me.txtKlientaID.Tag = .Fields("KlientaID") Me.txtKlientaID.Tag = .Fields("KlientaID") 'samaina nosaukumu pogai pievienot uz atjaunot Me.btnAdd.Caption = "Atjaunot" 'atslēdz pogu labot Me.btnEdit.Enabled = False End With End If End Sub Izvadi ar visu pieprasījumu, kādu tu taisies likt datu bāzē un pēc tam to manuāli izpildi iekš Access. Ja kāds no datu bāzes laukiem ir atzīmēts kā "not null" un dati būs tukši, tad protams, ka šādu ierakstu nevar ievietot. Ieteiktu to notestēt gan ar insert, gan update, lai pārliecinātos, ka ar datiem un pieprasījumiem viss kārtībā. Manuāli ievadīt var un nekur nestāv "not null", citā bāzē šāds kods strādā pieienošanai, šei nez kapēc nē... Link to comment Share on other sites More sharing options...
Mezavecis Decembris 22, 2014 Share Decembris 22, 2014 Kā tas ir manuāli? Ar pieprasījumu, kuru izdod minētā poga btnAdd_Click vai vai query designer? Mainīgais CurrentDb ir korekti inicializēts? Link to comment Share on other sites More sharing options...
raaicha Decembris 22, 2014 Author Share Decembris 22, 2014 Kā tas ir manuāli? Ar pieprasījumu, kuru izdod minētā poga btnAdd_Click vai vai query designer? Mainīgais CurrentDb ir korekti inicializēts? Manuāli es to sapratu, vai tos pašus datus varu ievadīt ar roku Neesu guru par access lietām (skolā darbu jātaisa ms access bāzi) , tapēc īsti nemācēšu atbildēt uz Tavu jautājumu par CurrentDb, šādu pogu ar tādu kodu arī izveidoju citai tabulai, kur viss strādā, bet nevaru saprast kapēc šajā nestrādā Link to comment Share on other sites More sharing options...
Mezavecis Decembris 22, 2014 Share Decembris 22, 2014 Ja nav šādas rindas, tad pieprasījums pilnīgi un noteikti nestrādās. Paskaties kārtīgāk to strādājošo piemēru. Lai gan stipra aizdoma, ka formas lauks ir Me.txtKlientaID tukšs. Set CurrentDb = OpenDatabase("superpuperdatabase.mdb") http://msdn.microsoft.com/en-us/library/bb208861%28v=office.12%29.aspx Link to comment Share on other sites More sharing options...
raaicha Decembris 22, 2014 Author Share Decembris 22, 2014 Ja nav šādas rindas, tad pieprasījums pilnīgi un noteikti nestrādās. Paskaties kārtīgāk to strādājošo piemēru. Lai gan stipra aizdoma, ka formas lauks ir Me.txtKlientaID tukšs. Set CurrentDb = OpenDatabase("superpuperdatabase.mdb") http://msdn.microsof...office.12).aspx Kods no strādājoša : <spoiler> Option Compare Database Private Sub btnAdd_Click() 'kad spiežam uz pogas Pievienot tur ir divas opcijas '1. Pievienot '2. Atjaunot If Me.txtLietotajaID.Tag & "" = "" Then 'tas ir priekš pievienot jaunu 'pievienot datus tabulai CurrentDb.Execute "INSERT INTO tblLietotaji(LietotajaID, Lietotajs, UserLogin, Password, Loma) " & _ "VALUES(" & Me.txtLietotajaID & ",'" & Me.txtLietotajs & "','" & _ Me.txtUserLogin & "','" & Me.txtPassword & "','" & Me.txtLoma & "')" Else 'citādāk (Tag no LietotajaID glabā id no lietotāja kas būs jāmaina) CurrentDb.Execute "UPDATE tblLietotaji " & _ " SET LietotajaID=" & Me.txtLietotajaID & _ ", Lietotajs='" & Me.txtLietotajs & "'" & _ ", UserLogin='" & Me.txtUserLogin & "'" & _ ", Password='" & Me.txtPassword & "'" & _ ", Loma='" & Me.txtLoma & "'" & _ " WHERE LietotajaID=" & Me.txtLietotajaID.Tag End If 'attīrīt formu btnClear_Click 'atsvaidzina datus formā frmLietotajiSub.Form.Requery End Sub Private Sub btnClear_Click() Me.txtLietotajaID = "" Me.txtLietotajs = "" Me.txtUserLogin = "" Me.txtPassword = "" Me.txtLoma = "" 'fokuss uz LietotajaID lauku Me.txtLietotajaID.SetFocus 'aktivizēt pogu labot Me.btnEdit.Enabled = True 'samainīt nosaukumu pogai pievienot uz pievienot Me.btnAdd.Caption = "Pievienot" 'notīrīt tagu LietotajaID priekš jauna Me.txtLietotajaID.Tag = "" End Sub Private Sub btnDelete_Click() 'Izdzēst ierakstu 'Pārbaude eksistējošu izvēlētu ierakstu If Not (Me.frmLietotajiSub.Form.Recordset.EOF And Me.frmLietotajiSub.Form.Recordset.BOF) Then 'apstirpināt dzēšanu If MsgBox("Vai esat droš ka vēlaties dzēst?", vbYesNo) = vbYes Then 'dzēš tagad CurrentDb.Execute "DELETE FROM tblLietotaji " & _ " WHERE LietotajaID=" & Me.frmLietotajiSub.Form.Recordset.Fields("LietotajaID") 'atsvaidzina datus sarakstā Me.frmLietotajiSub.Form.Requery End If End If End Sub Private Sub btnEdit_Click() 'pārbauda vai eksistē dati sarakstā If Not (Me.frmLietotajiSub.Form.Recordset.EOF And Me.frmLietotajiSub.Form.Recordset.BOF) Then 'iegūst datus uz kontrol laukiem With Me.frmLietotajiSub.Form.Recordset Me.txtLietotajaID = .Fields("LietotajaID") Me.txtLietotajs = .Fields("Lietotajs") Me.txtUserLogin = .Fields("UserLogin") Me.txtPassword = .Fields("Password") Me.txtLoma = .Fields("Loma") 'saglabā id lietotāja tagā txtLietotajaID ja id ir izmainījies Me.txtLietotajaID.Tag = .Fields("LietotajaID") 'samaina nosaukumu pogai pievienot uz atjaunot Me.btnAdd.Caption = "Atjaunot" 'atslēdz pogu labot Me.btnEdit.Enabled = False End With End If End Sub Private Sub btnExit_Click() DoCmd.Close DoCmd.OpenForm "frmNavigacija" End Sub </spoiler> Kods kur nestrādā : Option Compare Database Private Sub btnExit_Click() DoCmd.Close DoCmd.OpenForm "frmNavigacija" End Sub Private Sub btnAdd_Click() 'kad spiežam uz pogas Pievienot tur ir divas opcijas '1. Pievienot '2. Atjaunot If Me.txtKlientaID.Tag & "" = "" Then 'tas ir priekš pievienot jaunu 'pievienot datus tabulai CurrentDb.Execute "INSERT INTO tblKlienti(KlientaID, Vards, Uzvards, Epasts, Talrunis, Valsts, Novads, Pilseta, Pagasts, PastaIndekss) " & _ "VALUES(" & Me.txtKlientaID & ",'" & Me.txtVards & "','" & _ Me.txtUzvards & "','" & Me.txtEpasts & "','" & _ Me.txtTalrunis & "','" & Me.cboValsts & "','" & _ Me.cboNovads & "','" & Me.cboPilseta & "','" & _ Me.cboPagasts & "','" & Me.txtPastaIndekss & "')" Else 'citādāk (Tag no KlientaID glabā id no lietotāja kas būs jāmaina) CurrentDb.Execute "UPDATE tblKlienti " & _ " SET KlientaID=" & Me.txtKlientaID & _ ", Vards='" & Me.txtVards & "'" & _ ", Uzvards='" & Me.txtUzvards & "'" & _ ", Epasts='" & Me.txtEpasts & "'" & _ ", Talrunis='" & Me.txtTalrunis & "'" & _ ", Valsts='" & Me.cboValsts & "'" & _ ", Novads='" & Me.cboNovads & "'" & _ ", Pilseta='" & Me.cboPilseta & "'" & _ ", Pagasts='" & Me.cboPagasts & "'" & _ ", PastaIndekss='" & Me.txtPastaIndekss & "'" & _ " WHERE KlientaID=" & Me.txtKlientaID.Tag End If ' 'attīrīt formu btnClear_Click 'atsvaidzina datus formā frmKlientiSub.Form.Requery End Sub Private Sub btnClear_Click() Me.txtKlientaID = "" Me.txtVards = "" Me.txtUzvards = "" Me.txtEpasts = "" Me.txtTalrunis = "" Me.cboValsts = "" Me.cboNovads = "" Me.cboPilseta = "" Me.cboPagasts = "" Me.txtPastaIndekss = "" 'fokuss uz LietotajaID lauku Me.txtKlientaID.SetFocus 'aktivizēt pogu labot Me.btnEdit.Enabled = True 'samainīt nosaukumu pogai pievienot uz pievienot Me.btnAdd.Caption = "Pievienot" 'notīrīt tagu LietotajaID priekš jauna Me.txtKlientaID.Tag = "" End Sub Private Sub btnDelete_Click() 'Izdzēst ierakstu 'Pārbaude eksistējošu izvēlētu ierakstu If Not (Me.frmKlientiSub.Form.Recordset.EOF And Me.frmKlientiSub.Form.Recordset.BOF) Then 'apstirpināt dzēšanu If MsgBox("Vai esat droš ka vēlaties dzēst?", vbYesNo) = vbYes Then 'dzēš tagad CurrentDb.Execute "DELETE FROM tblKlienti " & _ " WHERE KlientaID=" & Me.frmKlientiSub.Form.Recordset.Fields("KlientaID") 'atsvaidzina datus sarakstā Me.frmKlientiSub.Form.Requery End If End If End Sub Private Sub btnEdit_Click() 'pārbauda vai eksistē dati sarakstā If Not (Me.frmKlientiSub.Form.Recordset.EOF And Me.frmKlientiSub.Form.Recordset.BOF) Then 'iegūst datus uz kontrol laukiem With Me.frmKlientiSub.Form.Recordset Me.txtKlientaID = .Fields("KlientaID") Me.txtVards = .Fields("Vards") Me.txtUzvards = .Fields("Uzvards") Me.txtEpasts = .Fields("Epasts") Me.txtTalrunis = .Fields("Talrunis") Me.cboValsts = .Fields("Valsts") Me.cboNovads = .Fields("Novads") Me.cboPilseta = .Fields("Pilseta") Me.cboPagasts = .Fields("Pagasts") Me.txtPastaIndekss = .Fields("PastaIndekss") 'saglabā id lietotāja tagā txtLietotajaID ja id ir izmainījies 'Me.txtKlientaID.Tag = .Fields("KlientaID") Me.txtKlientaID.Tag = .Fields("KlientaID") 'samaina nosaukumu pogai pievienot uz atjaunot Me.btnAdd.Caption = "Atjaunot" 'atslēdz pogu labot Me.btnEdit.Enabled = False End With End If End Sub Private Sub Detail_Click() End Sub Nevaru atrast atšķirību Link to comment Share on other sites More sharing options...
Mezavecis Decembris 22, 2014 Share Decembris 22, 2014 Es negribu iet un salīdzināt tos palagus Izvadi konsolē visus pieprasījumus un tad salīdzini. Respektīvi output no šiem te. Ņem vērā, ka pēc šādas metodes, ja adrese vai kāds cits lauks saturēs pēdiņas, tad viss pieprasījums tiks sačakarēts, tāpēc nedrīkst pieprasījumus brīvā teksta laukiem lipināt kopā. INSERT INTO tblKlienti(KlientaID, Vards, Uzvards, Epasts, Talrunis, Valsts, Novads, Pilseta, Pagasts, PastaIndekss) " & _ "VALUES(" & Me.txtKlientaID & ",'" & Me.txtVards & "','" & _ Me.txtUzvards & "','" & Me.txtEpasts & "','" & _ Me.txtTalrunis & "','" & Me.cboValsts & "','" & _ Me.cboNovads & "','" & Me.cboPilseta & "','" & _ Me.cboPagasts & "','" & Me.txtPastaIndekss & "')" Link to comment Share on other sites More sharing options...
_dunduks_ Decembris 22, 2014 Share Decembris 22, 2014 (labots) Kāpēc šajā rindā vajag pēdiņas un '&' zīme? If Me.txtKlientaID.Tag & "" = "" Then varbūt vienkārši šādi: If Me.txtKlientaID.Tag = "" Then Labots Decembris 22, 2014 - _dunduks_ Link to comment Share on other sites More sharing options...
raaicha Decembris 22, 2014 Author Share Decembris 22, 2014 varbūt vienkārši šādi: If Me.txtKlientaID.Tag = "" Then Pamainīju kā teici, kļūdu nemet spiežot pogu, bet joprojām dati neievadās tabulā, nospiežu pievieot norefrešojās subforma un dati klāt nav nākuši Link to comment Share on other sites More sharing options...
raaicha Janvāris 3, 2015 Author Share Janvāris 3, 2015 Brīvdienas pagājušas un problēma atrisināta, ja kādam interesē tad problēma bija ar combo box. Combo box saglabāja izvēlētās vērtības ID nummuru nevis pašu vērtību un līdz ar to tādu ierakstu nevarēja saglabāt jo citā tabulā ar ko ir saites neļāva to izdarīt, jo bija nepieciešamas konkrētās vērtības. Link to comment Share on other sites More sharing options...
Xirx Janvāris 3, 2015 Share Janvāris 3, 2015 Iepriekšējos palagus nelasīju, bet datubāzē kā atslēgas ir jāglabā tieši ID, nevis vērtības. Ko darīsi, kad vajadzēs izmainīt klienta/preces/whatever nosaukumu? Ko darīsi, ja būs vairāki Jāņi Bērziņi? Link to comment Share on other sites More sharing options...
raaicha Janvāris 4, 2015 Author Share Janvāris 4, 2015 Katram Jānim Bērziņam būs savs ID, par combo box ko rakstīju ir tā kā ar query dati, piemēram, kā pilsēta, valsts utt tiek ņemts no citas tabulas un saglabāja ne pilsētas nosaukumu vai valsti, bet tās ID nummuru, kas ir nepareizi šajā gadījumā. Link to comment Share on other sites More sharing options...
Xirx Janvāris 4, 2015 Share Janvāris 4, 2015 (labots) Pats gudrs. Nu labi. Atceries tikai, ka gan pilsētas, gan arī valstis var pārdēvēt. Un tad nāksies rakstīt koda gabalu, kas visās vietās pārrakstīs veco nosaukumu ar jauno. Edīte: iemācies, lūdzu, izteikt savas domas strukturēti, - tā, lai citiem vieglāk saprast, - palīdzēs arī kodu rakstot... Labots Janvāris 4, 2015 - Xirx Link to comment Share on other sites More sharing options...
Recommended Posts