[ vlade011 @ 30.01.2012. 11:23 ] @
Imam potrebu jednom mesecno da dopunjujem tabelu u accessu excel fajlovima tj. svakog meseca dobijam izvestaje u excel-u i treba da ih prebacim u access tabelu. Ima li mogucnosti da to ne radim preko wizarda vec da klikom na dugme u formi te tabele dobijem zeljeni rezultat? Predpostavljam da je u pitanju kod koji treba ispisati ali kako nisam bas vest u pisanju istog molim za pomoc...
[ Trtko @ 01.02.2012. 09:26 ] @
Naravno da možeš, naravno moraš znati iz koje kolone i reda prepisuješ

Kod bi ti izgledoo ovako , a ti si ga prepravi


' upis u finitem iz excela

Dim dato2 As Database
Dim rek2 As Recordset
Set dato2 = CurrentDb
Dim sqlupit2 As String
sqlupit2 = "select * from finitem"
Set rek2 = dato2.OpenRecordset(sqlupit2)

brprep = 0
impdef = 3
sveukupno = 0
kolona = InputBox("Unesi broj kolone u kojoj se nalazi iznos (npr. kolona A=1, C=3) " & Chr(13) & "Konta će se prepisati iz prve kolone (A). Prepisivanje počinje od 1. završava u 1000. redu. Prepisivat će se vrijednosti onih konta koji imaju 6 ili više znakova", "Import iz EXCELA", impdef)



If IsNull(kolona) Or kolona = "" Then
MsgBox "Niste Izabrali"
Exit Sub
End If
kol = Val(kolona)
Set objexcel = CreateObject("Excel.Application")
objexcel.Workbooks.Open (lnkput) ' lnkput= "c:\podaci\tablicaexel.xls"

' ovo ovdje dolje ti je bitno, vrti 1000 redova u excelu i uzima podatke iz kolona, sad uzima samo onu jednu koju sam gore naveo,
' ovdje si rekao da uzme iz objexcel.Cells(j, 1).Value ---- (u excelu bi bilo A1 ) , .Cells(j,2 ).Value -- (A2) ... itd




For j = 1 To 1000


konto = objexcel.Cells(j, 1).Value
iznos = objexcel.Cells(j, kol).Value

If Len(Trim(konto)) = 6 Then

If IsNumeric(konto) = True Then
If IsNumeric(iznos) = False Then
MsgBox "Niste odabrali dobru kolonu za prepis. Vrijednost u koloni = " + iznos
Exit Sub
End If
brprep = brprep + 1
rek2.AddNew
rek2.Fields("AccountID") = konto
rek2.Fields("Accountvalue") = iznos
rek2.Fields("Statementid") = 2
sveukupno = sveukupno + iznos
rek2.Update
End If
End If
Next j


rek2.Close
Set dato2 = Nothing

objexcel.Application.DisplayAlerts = False
objexcel.Application.Quit
objexcel.Application.DisplayAlerts = True
[Forms]![unos]![FinStatment].Requery
MsgBox "Podaci za Plan su prepisani, Prepisano: " + Trim(Str(brprep)) + " konta" & Chr(13) & "Sveukupno : " & Format$(sveukupno, "###,###,###,###.00")
[ vlade011 @ 01.02.2012. 13:11 ] @
Hvala Trtko na odgovoru.

Izmenio sam potrebne stvari u kodu i access ga izvrsava ali mi uporno javlja da je izvrseno 0 upisa tj. ne upisuje nista u polja...Kod mi izgleda ovako:

Dim dato2 As Database
Dim rek2 As Recordset
Set dato2 = CurrentDb
Dim sqlupit2 As String
sqlupit2 = "select * from Table1"
Set rek2 = dato2.OpenRecordset(sqlupit2)

brprep = 0
impdef = 3
sveukupno = 0
kolona = InputBox("Unesi broj kolone u kojoj se nalazi iznos (npr. kolona A=1, C=3) " & Chr(13) & "Konta će se prepisati iz prve kolone (A). Prepisivanje počinje od 1. završava u 1000. redu. Prepisivat će se vrijednosti onih konta koji imaju 6 ili više znakova", "Import iz EXCELA", impdef)

If IsNull(kolona) Or kolona = "" Then
MsgBox "Niste Izabrali"
Exit Sub
End If
kol = Val(kolona)
Set objexcel = CreateObject("Excel.Application")
lnkput = "d:\Book112.xls"
objexcel.Workbooks.Open (lnkput)

For j = 1 To 1000


konto = objexcel.Cells(j, 1).Value
iznos = objexcel.Cells(j, kol).Value

If Len(Trim(konto)) = 6 Then

If IsNumeric(konto) = True Then
If IsNumeric(iznos) = False Then
MsgBox "Niste odabrali dobru kolonu za prepis. Vrijednost u koloni = " + iznos
Exit Sub
End If
brprep = brprep + 1
rek2.AddNew
rek2.Fields("AccountID") = konto
rek2.Fields("Accountvalue") = iznos
rek2.Fields("Statementid") = 2
sveukupno = sveukupno + iznos
rek2.Update
End If
End If
Next j

rek2.Close
Set dato2 = Nothing

objexcel.Application.DisplayAlerts = False
objexcel.Application.Quit
objexcel.Application.DisplayAlerts = True
MsgBox "Podaci za Plan su prepisani, Prepisano: " + Trim(Str(brprep)) + " konta" & Chr(13) & "Sveukupno : " & Format$(sveukupno, "###,###,###,###.00")
End Sub


Gde gresim?

Hvala unapred.



[Ovu poruku je menjao vlade011 dana 01.02.2012. u 15:45 GMT+1]
[ Trtko @ 01.02.2012. 19:50 ] @
Pa ja sad ne znam kako izgleda tvoja excel tabelica, ali po svemu sudeći ,moraš još maknuti i ona moja ispitivanja,


If Len(Trim(konto)) = 6 Then
If IsNumeric(konto) = True Then
If IsNumeric(iznos) = False Then

ja sam ovdje ispitivao određene stvari, jel se znalo da je netko pomaknuo kolonu pa je konto bilo u npr A2 a ne u A1
a znalo se desiti da i iznos nije bio u određenoj koloni.

kad bi zakacio xls fajl iz koga prepisuješ sve bi bilo lakše, naravno ako su ti podaci tajna ti ih prepravi.

Pozdrav




[ vlade011 @ 03.02.2012. 11:05 ] @
Posto je baza velika (ima puno podataka) napravio sam na brzinu jednu malu tabelu sa formom i excel fajl koji treba uvesti. Svakog meseca dobijam izvestaj o prodaji odredjenih delova koje treba ubaciti. Nadam se da ce biti jasno o cemu se radi.

Puno hvala na trudu i ukazanom vremenu za resavanje problema.
[ Trtko @ 03.02.2012. 11:56 ] @
nazalost nemam instaliran access 2007 ( ili visi ), koristim access 2002
al probat cu to rijesiti u njemu
[ SLOJ.1973 @ 03.02.2012. 18:58 ] @
Dva pitanja:Da li je taj excel fajl uvek sa novim podacima ili se i on dopunjuje(znači ima i stare podatke i nove) i drugo pitanje da li tabelu treba da dopuniš sa novim podacima kompletnio ili se tu menja samo recimo cena ili količina ili rok isporuke a šifre ostaju iste?
[ vlade011 @ 06.02.2012. 07:53 ] @
Tabela u excel-u je nova bez starih podataka. Ostaju samo kolone iste u koje se unose novi podaci. U access-u se tabela dopunjava novim podacima iz excel-a kompletno.