Егор, Из дебага:
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: com.example.beatboxer.myapplication, PID: 23514
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:318)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?)
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:119)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74)
at java.net.InetAddress.getAllByName(InetAddress.java:752)
at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:187)
at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:156)
at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:98)
at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:345)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:328)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:246)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:405)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:243)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java)
at com.example.beatboxer.myapplication.fetchData.doInBackground(fetchData.java:28)
at com.example.beatboxer.myapplication.fetchData.doInBackground(fetchData.java:17)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
at libcore.io.Posix.android_getaddrinfo(Native Method)
at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:106)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74)
at java.net.InetAddress.getAllByName(InetAddress.java:752)
at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:187)
at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:156)
at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:98)
at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:345)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:328)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:246)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:405)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:243)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java)
at com.example.beatboxer.myapplication.fetchData.doInBackground(fetchData.java:28)
at com.example.beatboxer.myapplication.fetchData.doInBackground(fetchData.java:17)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: android.system.ErrnoException: android_getaddrinfo failed: EACCES (Permission denied)
at libcore.io.Posix.android_getaddrinfo(Native Method)
at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:106)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74)
at java.net.InetAddress.getAllByName(InetAddress.java:752)
at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:187)
at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:156)
at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:98)
at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:345)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:328)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:246)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:405)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:243)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java)
at com.example.beatboxer.myapplication.fetchData.doInBackground(fetchData.java:28)
at com.example.beatboxer.myapplication.fetchData.doInBackground(fetchData.java:17)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
я по первой кнопке упрощаю матрицу по строкам..потом по второй кнопке перезаписываю массив новыми значениями со стрингрида. И проделываю то же самое. Столбец 7 5 почему то не удаляется.
Вот код может я что-то где-то не правильно пишу для упрощения по столбцам.
n:=StringGrid1.RowCount-1;
m:=StringGrid1.ColCount-1;
for i:=1 to n do
for j:=1 to m do
arplat2[i,j]:=strtoint(StringGrid1.Cells[j,i]);
//логический массив упрощенных строк 1 игрока
for i := 1 to n do
arupr[i]:=0;
//сравнивание столбцов платежной матрицы
for i := 1 to 4 do
begin
k:=0;
for j := 1 to 4 do
begin
k:=k+1;
s:=0;
for t := 1 to 4 do
begin
if (arplat2[t,i]>=arplat2[i,t+k]) then
s:=s+1;
end;
if s=4 then arupr[i+k]:=1;
if s=0 then arupr[i]:=1;
end;
end;
//arupr[1]:=1;
//определение размерности упрощенной матрицы
s:=0;
for i := 1 to 4 do
if arupr[i]=0 then s:=s+1;
StringGrid1.ColCount:=s+1;
//заполнение упрощенной матрицы
k:=0;
for i := 1 to 4 do
begin
if arupr[i]=0 then
begin
k:=k+1;
StringGrid1.Cells[0,k]:='А'+inttostr(i);
for j := 1 to 4 do
StringGrid1.Cells[j,k]:=inttostr(arplat2[i,j]);
end;
end;
end;
kalapanga, понял, понял. У меня база на Аксес. Просто программа будет тупо на одном компе. И тот же MMSQL они ставить не собираются. Печально конечно.Было бы проще. То есть я правильно понимаю, что нужно при редактировании удалять записи по id связанные с главной таблицей. А потом перезаписывать новый исправленный набор из StringGrid??
kalapanga,
Все корректно добавляет, а при редактировании он заменит эти детали копиями той что добавляю к имеющимся. А еще такой вопрос. А как по другому можно сделать добавление нескольких деталей в связанную таблицу? Просто стрингрид это было первой мыслью. Есть еще какая-нибудь реализация. Я хочу добавлять и видеть что я добавляю на форме как я сейчас делаю. А потом еще мог редактировать. мог выбирать и менять инфу..удалить лишнюю деталь. Посоветуйте пожалуйста. Через стрингрид я уже понял гемор конкретный. С верхней частью то хорошо все. Мне вот надо детальки удобно добавлять и редачить.
kalapanga,
ADOQUERY6
insert into Zapas_chasti ([id_realiz],[id_zapchast],[kolvo]) values (@id_realiz, @id_zapchast, @kolvo);
Когда я добавляю новую заявку. добавляю деталей в стрингрид. нажимаю Сохранить и в основные таблицы все улетает. Все красиво. А уже непосредственно при редактировании данной записи я к примеру добавляю еще одну деталь. По идее он должен заново переписать из стрингрид уже с новой деталью в таблицу. А он ее записывает а вместо тех что были копии той что добавил.
kalapanga, при добавлении все как надо заполняется. А вот если например понял что не внес еще деталь. Я нажимаю редактирование. В стрингриде те самые записи деталей из втлорой таблицы. Я к ним добавляю еще деталь. Нажимаю СОхранить и он эту добавленную деталь добавляет, но и еще перезаписывает собой остальные.
к примеру в таблице были шины, руль. Я нажимаю редактирование заявки, открывается форма редактирования. В стрингриде те самые шины, руль. Я добавляю к ним коленвал. Нажимаю сохранить. И что происходит. Вместо шины руль коленвал ->> коленвал,коленвал,коленвал
Процедура добавление записи в таблицу из Стрингрида
for I := 1 to StringGrid1.RowCount-2 do
begin
ADOQuery6.Parameters.ParamByName('@id_realiz').Value:=ADOQuery7.FieldByName('id_realiz').AsString;
ADOQuery6.Parameters.ParamByName('@id_zapchast').Value:=StrToInt(StringGrid1.Cells[0,I]);
ADOQuery6.Parameters.ParamByName('@kolvo').Value:=StrToInt(StringGrid1.Cells[2,I]);
ADOQuery6.ExecSQL;
Form3.ADOQuery2.Next;
end;
ВОт кусочек кода как это делаю. Может кому понадобится.
for I := 1 to StringGrid1.RowCount-2 do
begin
ADOQuery6.Parameters.ParamByName('@id_realiz').Value:=ADOQuery7.FieldByName('id_realiz').AsString;
ADOQuery6.Parameters.ParamByName('@id_zapchast').Value:=StrToInt(StringGrid1.Cells[0,I]);
ADOQuery6.Parameters.ParamByName('@kolvo').Value:=StrToInt(StringGrid1.Cells[2,I]);
ADOQuery6.ExecSQL;
end;
Добавление в две связанные таблицы реализовал через 3 компонента ADOQUERY
1:INSERT INTO Realiz ([Work],[data],[marka],[gos_nomer],[probeg],[id_ispoln]) //Добавление в главную
values (@Work,@data,@marka,@gos_nomer,@probeg,@id_ispoln);
2:insert into Zapas_chasti ([id_realiz],[id_zapchast],[kolvo]) values (@id_realiz, @id_zapchast, @kolvo); //Этим запросом выхватываю ID через выборку.
3:select id_realiz from Realiz where Work=@Work and gos_nomer = @gos_nomer and probeg=@probeg //Добавляю в дочернюю таблицу уже деталь с тем ID что в главной.
Не могу понять как организовать добавление n-кол-ва деталей. Знаю реализацию через ADOTabl через Insert apennd и тд. но это не вариант. Надо как-то сделать чтобы заполнив основную таблицу тут же например в dbgrid забил детали. Нажал Сохранить в запросе создалась запись в основной таблице..уже знается айди..а потом из того dbgrida записи с деталями улетели в дочернюю. Подскажите как лучше сделать?
kalapanga, Я имею ввиду вот что. В первом dbgrid1 я выбираю первую запись, а во втором dbgrid выводятся данные по первой записи. То есть таблицы связаны один ко многим. В одной заявке "находятся" замененные детали.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: com.example.beatboxer.myapplication, PID: 23514
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:318)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?)
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:119)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74)
at java.net.InetAddress.getAllByName(InetAddress.java:752)
at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:187)
at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:156)
at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:98)
at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:345)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:328)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:246)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:405)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:243)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java)
at com.example.beatboxer.myapplication.fetchData.doInBackground(fetchData.java:28)
at com.example.beatboxer.myapplication.fetchData.doInBackground(fetchData.java:17)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
at libcore.io.Posix.android_getaddrinfo(Native Method)
at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:106)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74)
at java.net.InetAddress.getAllByName(InetAddress.java:752)
at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:187)
at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:156)
at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:98)
at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:345)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:328)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:246)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:405)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:243)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java)
at com.example.beatboxer.myapplication.fetchData.doInBackground(fetchData.java:28)
at com.example.beatboxer.myapplication.fetchData.doInBackground(fetchData.java:17)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: android.system.ErrnoException: android_getaddrinfo failed: EACCES (Permission denied)
at libcore.io.Posix.android_getaddrinfo(Native Method)
at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:106)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74)
at java.net.InetAddress.getAllByName(InetAddress.java:752)
at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:187)
at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:156)
at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:98)
at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:345)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:328)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:246)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:405)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:243)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java)
at com.example.beatboxer.myapplication.fetchData.doInBackground(fetchData.java:28)
at com.example.beatboxer.myapplication.fetchData.doInBackground(fetchData.java:17)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)